Microsoft 365 Macro Masquer jour

AnneSo6938

XLDnaute Nouveau
Bonjour

Besoin d'experts de macros excel !!!
Je souhaite créer un calendrier automatisé...
Je rencontre deux soucis !
1 / j'utilise une macro pour masquer les jours en fonction du mois. Exemple : Février : les jours du 28 au 31 sont masqués. Hors là, les jours se masquent bien mais restent masqués dès que je change de mois.
2 / Je souhaiterais que les données inscrites en fonction des mois restent. Hors elles s'effacent dès que je change de mois..

Voici la macro que j'utilise actuellement :
Sub Masquer_Jour()
Dim Num_Col As Long
For Num_Col = 31 To 33 ' Boucle sur les cellules des jours 29, 30 et 31
If Month(Cells(6, Num_Col)) >= Cells(1, 1) Then
Columns(Num_Col).Hidden = True
Else
Columns(Num_Col).Hidden = False
End If
Next
Range("C7:AG42").ClearContents 'Supprime le contenu dans les cellules
End Sub

Est-ce qu'une bonne âme pourrais m'aider svp ? :)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,
Bonjour @fanfan38,

Un autre façon de faire (vite fait). Le code est dans le module de la feuille Feuil1.
Modifiez l'année (cellule B1) ou le mois (cellule B2) pour afficher le mois désiré.
Si B1 ou B2 est vide , on affiche toutes les dates.

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim n&
   If Not Intersect(Target, Range("b1:b2")) Is Nothing Then
      Application.ScreenUpdating = False
      Cells.EntireColumn.Hidden = False
      If [b1] = "" Or [b2] = "" Then Exit Sub
      On Error Resume Next
      n = Application.Match(1 * DateSerial([b1], [b2], 1), Rows(1), 0)
      On Error GoTo 0
      If n <> 0 Then
         Range(Cells(1, "d"), Cells(1, "d").End(xlToRight)).EntireColumn.Hidden = True
         Cells(1, n).Resize(, Day(DateSerial([b1], [b2] + 1, 1) - 1)).EntireColumn.Hidden = False
      End If
   End If
End Sub
 

Pièces jointes

  • AnneSo6938- planning mensuel- v1.xlsm
    63.3 KB · Affichages: 7

Statistiques des forums

Discussions
312 209
Messages
2 086 259
Membres
103 167
dernier inscrit
miriame