XL 2016 Calendrier Automatique

  • Initiateur de la discussion Initiateur de la discussion Monhtc
  • Date de début Date de début
  • Mots-clés Mots-clés
    vba

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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+
 
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
 
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 😉
 
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

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
 
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
 
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)
 
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 ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
847
Réponses
4
Affichages
1 K
Réponses
6
Affichages
148
Réponses
11
Affichages
1 K
Réponses
5
Affichages
419
Réponses
12
Affichages
1 K
Retour