XL 2019 Calendrier automatique

Thomas19

XLDnaute Nouveau
Bonjour,
J'ai créé un tableau Excel pour faire de la gestion de projet
Il prends en compte les we et les jours fériés et colorie automatiquement les cases suivant la tâche définie.
Par contre, je n'ai pas réussi à faire fonctionner la macro que j'ai trouvé sur ExcelDownload, pour enlever automatiquement les jours en 29/30/31 quand ils n'existent pas (par exemple pour février).
La macro a une erreur de syntaxe mais je ne trouve pas laquelle
Qu'en pensez-vous?
Merci de votre aide.
 

Pièces jointes

  • Calendrier - 5.xlsm
    45.6 KB · Affichages: 18
Solution
Ce n'est pas la peine de faire plusieurs modules pour la même opération sur des onglets différents :

Tu mets cette sub dans un module quelconque :
VB:
Public Sub Masquer_Jour_En_Trop(Plage As String)
Dim Cell        As Range
Dim Target      As Range
Dim Num_Mois    As Integer

Set Target = Range(Plage) ' Plage de cellules où sont les dates

   ' On récupère le numéro de mois dans la cellule associée à la Shape Appelante ( mois traité )
    Num_Mois = Range(ActiveSheet.Shapes(Application.Caller).OLEFormat.Object.LinkedCell).Value

  ' On rend visible toutes les dates qui ont pu être masquées précédemment
    Target.Columns.Hidden = False

  ' On inspecte chaque cellule de la plage cible
    For Each Cell In Target
      ' si le numéro de...

fanch55

XLDnaute Barbatruc
Salut,
Je suppose que c'est celle qui est dans le module 1 :
VB:
Sub Masquer_Jour()
Dim Cell As Range
    For Each Cell In [E7:AI7]
        Columns(Cell.Column).Hidden = Month(Cell) <> [C1]
    Next
'   Range("B6:AF13").ClearContents <== pas compris
End Sub

Attention à ta liste pour le combobox des mois, tu as du effacer des lignes dans la feuille
 

Saalut

XLDnaute Junior
Bonjour ,
pour supprimer les deux jours dans le mois de février ; il faut cette formule
=SI(D7="";"";SI(MOIS(D7+1)=$C$1;D7+1;""))
Bonne continuation .
 

Pièces jointes

  • Calendrier - 5 (1)résolu.xlsm
    52.1 KB · Affichages: 8

Thomas19

XLDnaute Nouveau
Merci pour votre aide :)
J'ai fait les modifs, et oui, par macro ;)
Le problème est que ça ne fonctionne pas pour l'onglet "Réunion de production" --> Module 2
J'ai essayé dans tous les sens mais je n'y arrive pas..
Pouvez-vous m'aider?
Merci d'avance
 

Pièces jointes

  • Calendrier - 6.xlsm
    52.2 KB · Affichages: 21

fanch55

XLDnaute Barbatruc
C'est normal, vous avez changé la cellule de référence.
Ci-dessous une sub qui "s'adapte":
VB:
Sub Masquer_JourRéunionProd()
Dim Cell        As Range
Dim Target      As Range
Dim Num_Mois    As Integer

Set Target = [AH7:AK7]

    Num_Mois = Range(ActiveSheet.Shapes(Application.Caller).OLEFormat.Object.LinkedCell).Value
    Target.Columns.Hidden = False
    For Each Cell In Target
        Columns(Cell.Column).Hidden = Month(Cell) <> Num_Mois
    Next

Set Target = Nothing
End Sub
 

fanch55

XLDnaute Barbatruc
Ce n'est pas la peine de faire plusieurs modules pour la même opération sur des onglets différents :

Tu mets cette sub dans un module quelconque :
VB:
Public Sub Masquer_Jour_En_Trop(Plage As String)
Dim Cell        As Range
Dim Target      As Range
Dim Num_Mois    As Integer

Set Target = Range(Plage) ' Plage de cellules où sont les dates

   ' On récupère le numéro de mois dans la cellule associée à la Shape Appelante ( mois traité )
    Num_Mois = Range(ActiveSheet.Shapes(Application.Caller).OLEFormat.Object.LinkedCell).Value

  ' On rend visible toutes les dates qui ont pu être masquées précédemment
    Target.Columns.Hidden = False

  ' On inspecte chaque cellule de la plage cible
    For Each Cell In Target
      ' si le numéro de mois de la cellule cible est différent du numéro de mois traité,
     '  la colonne de cette cellule doit être masquée
        Columns(Cell.Column).Hidden = Month(Cell) <> Num_Mois
    Next

' On libère la mémoire
Set Target = Nothing
End Sub

Puis sur les combobox de tes feuilles , tu affectes la macro ainsi :
'Masquer_Jour_En_Trop "F7:AJ7"'

F7:AJ7 représente la plage où sont tes jours ( lundi 1, mardi 2 etc...)
La plage entre Double Quote ( " ), le tout entre simple cote ( ' ) .

Voili voilou, c'est pas sorcier .. :cool:
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 813
dernier inscrit
kaiyi