XL 2016 Calendrier Automatique

Monhtc

XLDnaute Occasionnel
Bonjour chers tous,
j'essaie de creer un calendrier automatique avec pour donction de masquer que les jours ne figurant pas dans le mois. Par exemple pour le mois de fevrier, faudra masque les 29, 30 et 31. Voici mon code VBA sur lequel je bloque
VB:
Option Explicit

Sub Masquer_Jour()
Dim Num_Col As Long
   For Num_Col = 30 To 32     ' Boucle sur les cellules des jours 29, 30 et 31
      If Month(Cells(6, Num_Col)) <> Feuil2.Range("k1").Value Then
         Columns(Num_Col).Hidden = True
      Else
         Columns(Num_Col).Hidden = False
     End If
   Next
   Feuil1.Range("c11:aG50").ClearContents  'Supprime le contenu dans les cellules
End Sub
 

Pièces jointes

  • PROJET CALEND ABSENCES.xlsm
    21.8 KB · Affichages: 19
C

Compte Supprimé 979

Guest
Bonjour Monhtc

Ta cellule K1 de la feuille 2 contient une date, il faut donc faire
VB:
If Month(Cells(6, Num_Col)) <> Month(Sheets("CONFIG").Range("k1").Value Then

Nota : Je préfère nommer les feuilles sur lequel je travaille, moins dangereux ;)

A+
 

ChTi160

XLDnaute Barbatruc
Bonjour Monhtc
Bonjour le Fil (Bruno) ,le Forum
Une autre version:
VB:
Sub Masquer_Jour()
Dim Num_Col As Long
Dim M_1 As Byte
Application.ScreenUpdating = False
With Feuil1
         M_Ref = Month(.Cells(10, 30))'On récupére le mois du 28 du Mois
   For Num_Col = 31 To 33     ' Boucle sur les cellules des jours 29, 30 et 31
          .Columns(Num_Col).Hidden = IIf(Month(.Cells(10, Num_Col)) <> M_Ref, True, False)'On masque en fonction de la comparaison
   Next
   .Range("c11:aG50").ClearContents  'Supprime le contenu dans les cellules
End With
Application.ScreenUpdating = True
End Sub
jean marie
 

Monhtc

XLDnaute Occasionnel
Merci pour votre assistance, j'ai éssayé le code de @ChTi160 mais je n'arive toujours pas à masquer les colonnes unitiles quand le mois compte 30 jours ou 28 jours. Je vous joinds le fichier pour une meilleure assistance; Merci
 

Pièces jointes

  • E.xlsm
    29.3 KB · Affichages: 15

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

C'est dans l'air du temps (Recyclons, recyclons, petitpatapon ;))
Une macro issue d'une réponse que je postais en 2016 sur XLD
VB:
Sub Calendrier()
Dim X&, i&, cal As Range, cell As Range
ANNEE = InputBox("Choisir l'année du calendrier?", "Calendrier", Year(Date))
Application.ScreenUpdating = False
FD = CDate("1/1/" & ANNEE): [B4] = FD: [B4:M4].DataSeries 1, 3, 3, 1
For i = 1 To 12
X = Day(DateSerial(Year(Cells(4, i + 1)), Month(Cells(4, i + 1)) + 1, 0))
Cells(4, i + 1).Resize(X).DataSeries 2, 3, 1, 1
Next
End Sub
Si ça peut servir tant mieux, sinon tant mieux ;)
 

Monhtc

XLDnaute Occasionnel
Merci à tous pour les différentes propositions, @ChTi160 @BrunoM45 toutes marchent celle de @Staple1600 aussi surement mais je ne sais ou copier la macro.
Par contre mon calendrier est destiné à recenser pour chaque mois la liste des absences, sauf qu'après le remplissage à la suite de ma mise en forme conditionnée (Voir fichier joint) je perds toutes les données d'un mois à un autre
 

Pièces jointes

  • Monhtc_E.xlsm
    30.4 KB · Affichages: 22
C

Compte Supprimé 979

Guest
Re,

Par contre mon calendrier est destiné à recenser pour chaque mois la liste des absences, sauf qu'après le remplissage à la suite de ma mise en forme conditionnée (Voir fichier joint) je perds toutes les données d'un mois à un autre
Noooonnnnn sans déconner
VB:
    .Range("c11:aG50").ClearContents  'Supprime le contenu dans les cellules
Perso, j'apelle ça du foutage de gueule

Aller, pour ma part banni et tchao
 

Monhtc

XLDnaute Occasionnel
Bonjour le fil, bonjour @BrunoM45 Comment pourrais-je donc changer de mois de façon indépendante avec ses propres donnée a remplir ?
Désolé suis novice en VBA. En supprimant cette ligne mon code ne marche plus non:
VB:
.Range("c11:aG50").ClearContents  'Supprime le contenu dans les cellules
 

Staple1600

XLDnaute Barbatruc
Merci à tous pour les différentes propositions,... toutes marchent celle de @Staple1600 aussi surement mais je ne sais ou copier la macro.
Ma macro est testable sur tout classeur né en Europe ou autre continent.
Elle fonctionnera aussi sur un classeur stocké sur un PC portable en apesanteur dans l'I.S.S
;)
Tant que ce classeur (par sécurité autant qu'il soit vierge) possède un module standard dans lequel on pourra coller ma macro.
(En faisant par exemple: Sélection de la macro sur XLD -> CTRL+C -> ALT+F11 -> ALT+I -> ALT+M -> CTRL+V et enfin ALT+ F11)
Ensuite dans Excel, aller dans Affichage/Macros choisir Calendrier et cliquer sur Exécuter)
 

Monhtc

XLDnaute Occasionnel
Bonjour Monhtc
Bonjour le Fil (Bruno) ,le Forum
Une autre version:
VB:
Sub Masquer_Jour()
Dim Num_Col As Long
Dim M_1 As Byte
Application.ScreenUpdating = False
With Feuil1
         M_Ref = Month(.Cells(10, 30))'On récupére le mois du 28 du Mois
   For Num_Col = 31 To 33     ' Boucle sur les cellules des jours 29, 30 et 31
          .Columns(Num_Col).Hidden = IIf(Month(.Cells(10, Num_Col)) <> M_Ref, True, False)'On masque en fonction de la comparaison
   Next
   .Range("c11:aG50").ClearContents  'Supprime le contenu dans les cellules
End With
Application.ScreenUpdating = True
End Sub
jean marie
Merci de pour ton assistance @ChTi160. Le calendrier marché Nickel. Cependant j'aimerais que chaque cellule soit indépendante d'un mois à l'autre de sorte à voir les absence de Janvier, Février, mars, ainsi de suite.
Sauf que cette ligne du code:
VB:
Range("c11:aG50").ClearContents  'Supprime le contenu dans les cellules
.
Empêche cela. Comment puis-je trouver une solution ?
 

Statistiques des forums

Discussions
311 740
Messages
2 082 047
Membres
101 880
dernier inscrit
Anton_2024