Explication de la macro du calendrier automatique

Dernière mise à jour le 01/03/2025
Temps de lecture : 4 minutes

L'article sur la création du calendrier automatique est l'un des articles les plus lus de ce site, et c'est aussi le plus commenté notamment à cause de la macro qui vous pose des problèmes.

C'est article va vous expliquer chaque lignes du code. Vous pourrez ainsi comprendre la logique et adapter le code à vos besoins. Si vous n'avez jamais construit de macro, il est indispensable de connaître les bases de la programmation dans cet article.

Voici le code utilisé dans le calendrier pour masquer les jours.

Si vous souhaitez un calendrier qui enregistre les données d'un mois sur l'autre, reportez-vous à cet article ou télécharger le fichier.

Ligne 1 : Création du nom de la procédure

C'est le nom qui va permettre d'identifier de façon unique la procédure. C'est aussi grâce à ce nom que nous pourrons lier le menu déroulant à la macro.

Ligne 2 : Déclaration de variables

Pour balayer plusieurs colonnes afin de lire la date qu'elles contiennent nous avons besoin d'utiliser une variable. La variable Num_Col est déclarée (Dim) comme étant un nombre entier (As Long)

Ligne 3 : Début de la boucle

Nous allons écrire une boucle qui va faire varier la variable Num_Col de la valeur 30 et se terminer à la valeur 32

La raison c'est parce que dans la construction de notre calendrier les journées du 29, 30 et 31 seront toujours calculées dans les colonnes 30, 31 et 32

Dates calculated for the column 30, 31 and 32

Ligne 4 : Test entre le mois calculé et le mois sélectionné

Toute l'astuce de la macro du calendrier est ici 😮👍

Comme vous le savez, tous les mois ont 28 jours, mais le mois de Février peu avoir 29 jours tous 4 ans et 4 mois ont 30 jours (Avril, Juin, Septembre, Novembre).

Présenté comme cela, le problème semble compliqué à résoudre. Mais d'un autre coté, Excel sait toujours adapter les dates si la fin d'un mois est dépassée. Par exemple, si on ajoute 30 jours au 1er Février, Excel va retourner la date du 3 Mars.

=DATE(2019;2;1)+30 => 03/03/2019

Donc dans notre calendrier, si on choisit le mois de Février, les colonnes 30, 31 et 32 vont afficher les dates du mois de Mars.

Dates calculated by Excel for the days 29, 30 and 31 for February

Nous allons donc écrire un test qui va comparer la valeur du mois (Month) dans les colonnes 30, 31 et 32 avec le mois retourné par le menu déroulant.

Modification de la valeur de la cellule liée en fonction du mois sélectionné

Le test va donc rechercher si la valeur du mois contenu dans les cellules AD6, AE6 et AF6. Ou encore Cells(6, 30), Cells(6, 31) et Cells(6,32) sont supérieures ou égale à la valeur contenue en A1 (la cellule liée du menu déroulant pour les mois).

Alors bien sur, comme nous sommes à l'intérieur d'une boucle, la valeur Num_Col va tout d'abord avoir la valeur 30 et donc faire le test sur la cellule AD6, puis au deuxième passage dans la boucle, le test se fera sur la cellule AE6 et ainsi de suite.

Ligne 5 : Masquer la colonne

Si le test précédent est Vrai, la colonne Num_Col est masquée (Hidden = True Masquer = Vrai).

Ligne 6 et 7 : Afficher la colonne

Si le test est Faux (Else), alors la colonne Num_Col est affichée (Hidden = False)

Ce test peut paraître inutile mais si vous passez d'un mois qui n'a pas 31 jours vers un mois à 31 jours, il faut afficher les précédentes colonnes masquées (malin )

Ligne 8 et 9 : Fermer les instructions

En VBA, quand vous créer un test ou une boucle, il est indispensable d'indiquer où se termine les instructions. Pour indiquer la fin d'un test If, il suffit d'écrire l'instruction End If, et pour une boucle For, il faut la terminer par l'instruction Next

Ligne 10 : Effacer les données inscrites

A la fin du traitement pour masquer ou afficher les colonnes, le programme va effacer les valeurs ClearContents inscrites dans la plage de cellules B6 à AF13 Range("B6:AF13")

Ligne 11 : Terminer la procédure

Comme pour les tests ou les boucles, il faut terminer une procédure (et donc la fin de votre programme) par l'instruction End Sub

Conclusion

Comme vous l'avez constaté, même si la macro du calendrier est courte (8 lignes de code), chaque ligne est importante et à un rôle bien défini. Aussi, il est important de bien comprendre le code avant de faire des modifications.

Articles liés

45 Comments

  1. couturier stephane
    16/02/2025 @ 16:00

    Bonjour j'aimerais savoir pourquoi quand j'ouvre le visuel basic je ne vois aucune ligne de code comme vous ?

    merci

    Reply

    • Frédéric LE GUEN
      16/02/2025 @ 17:05

      Avez-vous enregistrer votre macro au format xlsm ?

      Reply

  2. sam
    17/01/2025 @ 16:12

    Re-bonjour l'idée c'est de supprimer le contenu en passant au mois suivant et le conserver lorsque l'on revient au mois précédent.
    Comment faire ?

    Voici ma macro :
    Sub Masquer_Jour()
    Dim Num_Col As Long
    Range("D7:AH14").ClearContents
    For Num_Col = 32 To 34
    If Month(Cells(6, Num_Col)) Cells(1, 3) Then
    Columns(Num_Col).Hidden = True
    Else
    Columns(Num_Col).Hidden = False
    End If
    Next
    End Sub

    Reply

    • Frédéric LE GUEN
      21/01/2025 @ 03:25

      Bonjour, pour cela il faut que vous achetiez le calendrier automatique (lien dans l'article). Le travail est compliqué et a demandé plusieurs jours de développement en VBA. Le code fait plusieurs milliers de lignes pour prendre en considération tous les cas de figure (ajout d'un salarié, suppression d'un salarié, modification d'une valeur, suppression d'une seule valeur, ....)

      Reply

  3. sam
    17/01/2025 @ 16:03

    Bonjour,
    Comment fait-on pour que les données inscrites à chaque mois restent enregistrées et ne s'écrasent pas ? Lorsque l'on change de mois les données inscrites au mois précédent s'effacent ce qui est très contraignant... Y a-t-il une solution de contournement à cela ? Retirer le clear contents n'est pas suffisant pour information
    voici ma macro :

    Sub Masquer_Jour()
    Dim Num_Col As Long
    Range("D7:AH14").ClearContents
    For Num_Col = 32 To 34
    If Month(Cells(6, Num_Col)) Cells(1, 3) Then
    Columns(Num_Col).Hidden = True
    Else
    Columns(Num_Col).Hidden = False
    End If
    Next
    End Sub

    Merci par avance pour votre retour.

    Reply

  4. N'TAME
    01/07/2022 @ 10:57

    Un grand merci à vous. Ce tuto vient résoudre une de mes difficultés dans la gestion du pointage du personnel.

    Reply

  5. JEBLI
    02/05/2022 @ 16:14

    Bonjour,
    Merci infiniment pour vos efforts et pour tout ce que vous faites pour nous aider.
    Je vous estime beaucoup et je vous souhaite le bonheur du monde entier.
    Si vous le permettez, j'aimerai bien apprendre à faire l'enregistrement d'un mois sur l'autre de mes données(suivi du pointage du personnel).
    Encore une fois merci beaucoup.

    Reply

  6. souleymane cisse
    25/04/2022 @ 15:10

    Hello , je voudrais pouvoir changer de mois mais en actualisant a chque fois les données contenues dans chaque mois sans les écraser

    Reply

    • Frédéric LE GUEN
      26/04/2022 @ 00:45

      Il faut supprimer la ligne de la macro ClearContents

      Reply

  7. Steven
    13/08/2021 @ 07:14

    Bonjour et merci pour le tuto!

    J'ai besoin d'un coup de main! Comme plusieurs mon calendrier est à la verticale mais ce n'est pas mon problème j'ai adapter la macro. je sauvegarde et ca fonctionne! Sauf que tout les mois tombe a 28 jours. J'ai du effacer la ligne qui demande la suppression des celulles pour mes besoins et j'ai remarque que si je met tout a FALSE et bien tout les jour s'affiche je me demandais donc si il manquait pas quelque ligne à la macro j'ai limpression qu'il met seulement a 28 jour ou il affiche tout les jour...voici les codes

    Sub Masquer_Jour()
    Dim Num_Lignes As Long
    For Num_Lignes = 31 To 33 ' Boucle sur les cellules des jours 29, 30 et 31
    If Month(Cells(Num_Lignes, 3)) > Cells(1, 1) Then
    Rows(Num_Lignes).Hidden = True
    Else
    Rows(Num_Lignes).Hidden = False
    End If
    Next
    End Sub

    Ce code me permet de masquer les 29-30-31 et seulement 28 jours aparait peu importe le mois

    et celui la

    Sub Masquer_Jour()
    Dim Num_Lignes As Long
    For Num_Lignes = 31 To 33 ' Boucle sur les cellules des jours 29, 30 et 31
    If Month(Cells(Num_Lignes, 3)) > Cells(1, 1) Then
    Rows(Num_Lignes).Hidden = False
    Else
    Rows(Num_Lignes).Hidden = False
    End If
    Next
    End Sub

    Me permet d'afficher tout les jours peu importe le mois...

    Je peux m'adapter mais j'ai encore des lacunes en macro! Merci de votre coup de main !

    Reply

    • jarrier
      01/11/2021 @ 03:10

      bonjour
      mon tableau commence en C5 et se termine en AH15
      le menu déroulant n'affecte pas la macro, il est invisible dans le programme
      en C1 est renvoyé la valeur du mois, c'est celle-ci qui faut renseigner dans la macro

      IF Month (Cells(5,Num_Col)) > Cells (1 , 3 ) THEN
      I__> ce numéro 5 , correspond à la ligne des jours de la semaines du tableau

      Cell 1 est la première ligne d'excel et 3 la colonne numéro 3 d'excel

      n'oublier pas le signe >

      Reply

  8. Erkan Zekiri
    24/06/2021 @ 14:13

    Bonjour à tous,

    je ne comprends pas pourquoi lorsque je mets les macro, mon calendrier se coupe le 28 de chaque mois. Savez vous pourquoi??

    Reply

    • Frédéric LE GUEN
      24/06/2021 @ 14:30

      Le test sur les cellules est forcément toujours vrai. Il y a soit un problème avec la valeur des cellules, soit vous ne pointez pas sur la bonne ligne où sont vos dates

      Reply

      • Erkan
        24/06/2021 @ 23:27

        J’ai passé plus de 4heures à vraiment tout essayé, mais je ne comprends pas pourquoi mes mois se terminent toujours le 28

    • Galifde
      06/07/2021 @ 11:06

      Bonjour, J'ai eu le même problème, pour le résoudre, j'ai changer la cellule de référence du mois !
      Dans l'exemple :
      If Month(Cells(23, Num_Col)) Cells(1, 1) Then 'renvoie vers la Cellule A1

      Modification de la cellule de réf pour le mois :
      If Month(Cells(23, Num_Col)) Cells(1, 3) Then 'renvoie vers la Cellule C1

      ça marche nickel,
      Merci Frédéric

      Reply

      • Galifde
        06/07/2021 @ 12:53

        Attention, il manque le symbole "diffèrent de" :
        If Month(Cells(23, Num_Col)) Cells(1, 3)

      • Laura Maggiore
        24/08/2021 @ 19:16

        Merci beaucoup pour votre aide, cela fonctionne également pour moi.
        Encore Merci !!!

    • Cezar
      16/07/2021 @ 09:40

      il faut mettre seulement le symbole "est supérieur" dans cette ligne du test :

      If Month(Cells(6, Num_Col)) > Cells(1, 1) Then

      et non >= car si vous mettez >= alors pour chaque mois le test sera vrai

      Reply

  9. Nicolas
    17/04/2021 @ 13:03

    Bonjour, j'ai essayé de rentrer cette formule mais mon calendrier est à la verticale.
    J'ai tenté cette formule :
    Sub Masquer_Jour()
    Dim Num_Lignes As Long
    For Num_Lignes = 31 To 33 ' Boucle sur les cellules des jours 29, 30 et 31
    If Month(Cells(2, Num_Lignes)) >= Cells(1, 1) Then
    Lignes(Num_Lignes).Hidden = True
    Else
    Lignes(Num_Lignes).Hidden = False
    End If
    Next
    Range("B3:I33").ClearContents 'Supprime le contenu dans les cellules
    End Sub

    mais cela ne fonctionne pas.

    Pouvez vous m'aider svp?

    Reply

  10. simo
    22/03/2021 @ 18:19

    bonjour
    j'ai créé un calendrier comme cela mais j'ai besoin de sauvgarder des valeurs dans le tableau pour chaque mois

    Reply

    • Frédéric LE GUEN
      22/03/2021 @ 20:01

      CE N'EST PAS POSSIBLE. On ne peut pas à la fois saisir des valeurs dans des cellules et également rappeler le résultat d'un mois précédent. Ce n'est pas le but d'Excel

      Reply

  11. Célia
    03/03/2021 @ 16:44

    Bonjour,
    J'ai la même ligne de code que vous, hormis pour le numéro des cases qui changent (tableau décalé). Cependant, les cases 28-29-30 et même les 31, ne disparaissent pas.
    De plus, toutes les lignes du tableau deviennent rouge (couleur de mes week end).
    Avez vous une idée du problème,

    Merci

    Reply

    • Kadafi
      20/05/2021 @ 18:32

      Bonjour,

      Pour les colonnes qui ne disparaissent pas, c'est normal car vous n' avez pas terminer tout le tutorial.
      Pour cela rendez-vous ici https://excel-exercice.com/creation-dun-calendrier-automatique/ , puis accéder à l'étape "Etape 11 : Lier les menus déroulants à la macro"

      Une fois que vous aurez terminer cette étape tout fonctionnera.

      Pour les lignes qui se mettent en rouge, j'ai également la même chose. Je n'ai pour le moment pas réussi à trouver d'où cela vient.

      Je vous en prie.

      Reply

  12. Christophe
    06/02/2021 @ 19:22

    bonjour

    Après plusieurs heures de recherche je me décide à vous demander si il est possible de modifier cette macro
    pour un tableau ou les dates sont verticales, plutôt que de perdre mon temps sur quelque chose d'impossible.
    Merci d'avance pour votre réponse

    Reply

    • Frédéric LE GUEN
      07/02/2021 @ 13:10

      Il suffit d'inverser l'écriture Cells(Num_Ligne,6) par Cells(6, Num_Ligne)

      Reply

      • christophe
        07/02/2021 @ 14:48

        Bonjour

        Merci pour votre réponse rapide, cela fonctionne par contre cela supprime les formules dans les cellules et elles ne réapparaissent pas en changeant de mois ; est ce que cela ne devrait pas simplement masquer la ligne ?

        Merci d'avance pour votre réponse

      • Cédric
        17/05/2021 @ 10:47

        Bonjour,

        J'ai le même soucis que "christophe", la macro efface l'intégralité du tableau et non les jours voulus (ceux du mois suivant).

        Voici ma macro

        Sub Masquer_Jour()
        Dim Num_Ligne As Long
        For Num_Ligne = 33 To 35 ' Boucle sur les cellules des jours 29, 30 et 31
        If Month(Cells(Num_Ligne, 1)) >= Cells(1, 1) Then
        Rows(Num_Ligne).Hidden = True
        Else
        Rows(Num_Ligne).Hidden = False
        End If
        Next
        Range("A5:G35").ClearContents 'Supprime le contenu dans les cellules
        End Sub

        Merci

      • Cédric
        27/05/2021 @ 09:39

        Bonjour,

        Déjà je m'excuse car en regardant un peu plus attentivement on voit que la ligne :
        "Range("A5:G35").ClearContents 'Supprime le contenu dans les cellules" comme c'est écrit supprime le contenu... (pas de commentaire)
        Puis en lisant plus attentivement (et non vite fait comme la première fois) je me suis rendu compte qu'il ne me manquait qu'à changer les lignes de référence pour le mois :
        If Month(Cells(Num_Ligne, 1)) >= Cells(1, 1) Then
        et voilà régler.
        Merci pour le tuto et bonne continuation

      • Frédéric LE GUEN
        27/05/2021 @ 10:51

        Et bien voilà une réponse qui fait plaisir. Oui il faut un peu chercher par soi-même. Quand on réalise un projet avec Excel, il y a toujours une part qui sera spécifique et où une adaptation sera à réaliser. Toutes les réponses ne sont pas sur le web, il faut encore parfois réfléchir 😉

      • Crispim
        21/12/2021 @ 21:48

        Bonsoir
        Je me suis appuyer sur votre calendrier mais je les disposé avec les jours verticales.
        Je suis novices dans les macros pourriez vous stp m'aider
        Je vous remercie par avance
        Michel

      • Frédéric LE GUEN
        21/12/2021 @ 22:41

        C'est pourtant expliqué dans l'article. Dans toutes les instructions Cells(ligne, colonne) il faut que vous mettiez la variable sur le paramètre de la ligne et non pas de la colonne

  13. JC
    31/01/2021 @ 18:53

    Bonjour,

    Merci pour ce tuto et ces explications.
    Par contre, je constate (comme déjà évoqué dans un des commentaires) lorsque que je veux remplir mon planning, dés que je change de mois (ou d'année) tout s'efface et impossible de conserver une information d'un mois sur l'autre. Est ce que quelqu'un pourrait me conseiller et me dire comment conserver les données d'un mois sur l'autre ?

    Merci d'avance à toutes les personnes qui répondront à mon interrogation.

    Reply

  14. Florence
    15/12/2020 @ 11:53

    Bonjour,
    Merci pour votre Tuto qui m'a faciliter la vie mais j'ai problème !
    J'ai crée exactement le même calendrier que vous, mais lorsque je veux entrer la macro il y à une erreur syntaxe qui me bloque.
    Voici mon code :
    Sub Masquer_Jour()

    Dim Num_Col As Long
    For Num_Col = 30 To 32
    If Month(Cells(6, 30), Cells(6, 31), Cells(6, 32)> Cells(1, 1) Then
    Columns(Num_Col).Hidden = True
    Else
    Columns(Num_Col).Hidden = False
    End If
    Next

    End Sub

    Quelqu'un peut il m'aider à finaliser correctement ce calendrier ?? Merci d'avance

    Reply

    • Kadafi
      20/05/2021 @ 18:14

      Bonjour,

      Il manque une parenthèse dans l'instruction suivante :
      If Month(Cells(6, 30), Cells(6, 31), Cells(6, 32)> Cells(1, 1) Then

      Ecrivez plutôt :
      If Month (Cells(6, 30), Cells(6, 31), Cells(6, 32)) > Cells(1, 1) Then

      Vous avez en effet oublier de fermer les parenthèses de la fonction MONTH.

      Reply

    • Kadafi
      20/05/2021 @ 18:37

      Bonjour,

      Non vous n'avez pas créer le même calendrier que lui.
      Plutôt que d'écrire :
      For Num_Col = 30 To 32
      If Month(Cells(6, 30), Cells(6, 31), Cells(6, 32)> Cells(1, 1) Then

      Ecrivez :
      For Num_Col = 30 To 32
      If Month(Cells(6, Num_Col))> Cells(1, 1) Then

      Car dans votre code vous utilisez mal la boucle for.

      Je vous en prie.

      Reply

  15. Manuela Da costa
    23/11/2020 @ 14:37

    Bonjour,
    J'ai suivi votre tuto à la lettre même ligne même colonne. Seulement la macro ne fonctionne pas pour la premier ligne Sub MAsquer_Jour() elle s'affiche en jaune fluonje ne comprends pas pourquoi.
    Et les lignes à la suite du 30 et 31 sont toujours affichées.
    Merci d'avance pour votre retour

    Reply

  16. Sparadrap
    30/10/2020 @ 10:53

    Bonjour,
    J'aidais une amie à régler avancer dans ses exercices quand je me suis rendu compte que votre site web injecte des grosses erreur dans le code de vos macros. On a vite compris pourquoi elle avançait pas.

    la ligne :
    If Month(Cells(6, Num_Col)) >= Cells(1, 1) Then

    Devrait etre remplacée par :
    If Month(Cells(6, Num_Col)) > Cells(1, 1) Then

    et la ligne :
    Range("B6:AF13").ClearContents 'Supprime le contenu dans les cellules

    Devrait être remplacée par :
    Range("B6:AF13").ClearContents 'Supprime le contenu dans les cellules

    La raison de ces injections est simple, vous ne gérez pas bien l'encodage des caractères de vos pages web, du coup certains caractères spéciaux ne s'affiche pas correctement, un simple guillemet se transforme en """ ou une simple flèche se transforme en ">"

    Pour le bien des débutants, ce serait sympa de corriger tout ça 🙂

    Reply

    • Frédéric LE GUEN
      30/10/2020 @ 11:22

      Mille mercis,
      C'est effectivement le genre de coquille qui peut arriver mais qui n'est visible qu'au moment de la publication.
      C'est corrigé

      Reply

  17. Emy
    10/09/2020 @ 12:09

    Bonjour,

    Je retourne tout dans tous les sens depuis 2 jours...concernant la macro. Mes colonnes AD AE AF sont bien masquées, mais TOUS les mois de toutes les années. Je ne comprends pas pourquoi. Quelqu'un pourrait-il m'aider ? Le premier jour des dates de mon tableau commence en B6, fini en AF (31 jours)

    Reply

  18. khalil
    06/09/2020 @ 18:20

    bonjour;
    j'ai bien suivi le tuto mais j'ai eu un soucis avec la macro pour masquer les jours car le calendrier que j'ai édité est inversement au votre (jours verticalement positionnés) est ce que ça affecte la macro.

    Merci par avance pour votre aide

    Reply

  19. HP
    31/08/2020 @ 15:53

    bonjour, je n'arrive pas a transferer la macro en mode verticale ??? pourriez vous m'aider !!

    Reply

  20. Émilie
    09/07/2020 @ 18:08

    Bonsoir,
    J’ai cree un document suite à votre tutoriel Excel mais je suis complètement perdue pour le macro : “masquer jour”
    pouvez-vous m’aider svp si je vous envoie mon document ?
    Merci bcp.

    Reply

    • Poussin
      23/11/2020 @ 16:09

      Tout partait si bien....

      Très très mais alors très déçu de la fin... alors que j'ai respecté le format du tableau, la macro masque systématiquement les derniers jours, mon tableau s'arrête à 28 jours...

      Je viens de perdre une après midi entière à essayer de résoudre le problème en vain...

      Je ne recommande donc pas votre tuto pour les prochains lecteurs.

      Reply

  21. Guest
    27/06/2020 @ 07:41

    Bonjour,

    Voici ce que nous avons écrit pour que la macro fonctionne (Suite Office 2016):

    Sub Masquer_Jour()

    Dim Num_Col As Long
    For Num_Col = 30 To 32
    If Month(Cells(12, Num_Col)) > Cells(1, 1) Then
    Columns(Num_Col).Hidden = True
    Else
    Columns(Num_Col).Hidden = False
    End If
    Next
    Range("B13", "AF15").ClearContents
    End Sub

    Mon calendrier commence à B12. Faire commencer le Range().ClearContents à B13 car sinon c'est toute la 1re ligne de B12 qui disparaît...

    Comme Moualek, j'ai espéré que le calendrier permettrait de garder les données en mémoire, mais passer d'un mois à l'autre ne fait que supprimer définitivement les données (si on revient sur le mois avec les données, il n'y a plus rien)...
    Par conséquent, pour ceux qui espèrent mettre en place un planning de congés pour une équipe ou mettre des données quelconque en mémoire au fur et à mesure du calendrier, ce n'est pas l'outil adéquat, en tout cas en l'état.

    Reply

  22. MOUALEK
    24/06/2020 @ 01:09

    Bonjour,

    Merci pour ce tuto. Franchement très bien fait!! Bravo!

    J'ai cependant deux questions :

    La ligne : "If Month(Cells(8, Num_Col)) >= Cells(1, 1) Then" apparait en rouge et semble faire buguer la macro. Le 8 correspond pourtant bien à la ligne des dates de mon tableau et Cells(1,1) correspond bien aux coordonnées de la cellule ou apparait le nombre du mois de mes listes déroulante.

    Par ailleurs, cette ligne de code semble non buguée : Range("C9:AG11").ClearContents mais celle-ci l'est : Range("C9:AG11").ClearContents
    J'ai testé les deux sans pour autant être sur de comprendre la nuance entre les deux. Je me disais que la deuxième pourrait permettre de clean le tableau quand on change de mois sans pour autant effacer les données définitivement. Ce qui permettrait de les retrouver en revenant sur le dit mois par la suite. Pur spéculation ou espoir de ma part.

    Encore merci pour tout!

    Reply

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.

Microsoft MVP 2024

Newsletter

1 fois par mois :
Astuces et quiz

    Nous ne vous enverrons pas de spam. Vous pouvez vous désabonner à tout moment.

    Explication de la macro du calendrier automatique

    Reading time: 4 minutes
    Dernière mise à jour le 01/03/2025

    L'article sur la création du calendrier automatique est l'un des articles les plus lus de ce site, et c'est aussi le plus commenté notamment à cause de la macro qui vous pose des problèmes.

    C'est article va vous expliquer chaque lignes du code. Vous pourrez ainsi comprendre la logique et adapter le code à vos besoins. Si vous n'avez jamais construit de macro, il est indispensable de connaître les bases de la programmation dans cet article.

    Voici le code utilisé dans le calendrier pour masquer les jours.

    Si vous souhaitez un calendrier qui enregistre les données d'un mois sur l'autre, reportez-vous à cet article ou télécharger le fichier.

    Ligne 1 : Création du nom de la procédure

    C'est le nom qui va permettre d'identifier de façon unique la procédure. C'est aussi grâce à ce nom que nous pourrons lier le menu déroulant à la macro.

    Ligne 2 : Déclaration de variables

    Pour balayer plusieurs colonnes afin de lire la date qu'elles contiennent nous avons besoin d'utiliser une variable. La variable Num_Col est déclarée (Dim) comme étant un nombre entier (As Long)

    Ligne 3 : Début de la boucle

    Nous allons écrire une boucle qui va faire varier la variable Num_Col de la valeur 30 et se terminer à la valeur 32

    La raison c'est parce que dans la construction de notre calendrier les journées du 29, 30 et 31 seront toujours calculées dans les colonnes 30, 31 et 32

    Dates calculated for the column 30, 31 and 32

    Ligne 4 : Test entre le mois calculé et le mois sélectionné

    Toute l'astuce de la macro du calendrier est ici 😮👍

    Comme vous le savez, tous les mois ont 28 jours, mais le mois de Février peu avoir 29 jours tous 4 ans et 4 mois ont 30 jours (Avril, Juin, Septembre, Novembre).

    Présenté comme cela, le problème semble compliqué à résoudre. Mais d'un autre coté, Excel sait toujours adapter les dates si la fin d'un mois est dépassée. Par exemple, si on ajoute 30 jours au 1er Février, Excel va retourner la date du 3 Mars.

    =DATE(2019;2;1)+30 => 03/03/2019

    Donc dans notre calendrier, si on choisit le mois de Février, les colonnes 30, 31 et 32 vont afficher les dates du mois de Mars.

    Dates calculated by Excel for the days 29, 30 and 31 for February

    Nous allons donc écrire un test qui va comparer la valeur du mois (Month) dans les colonnes 30, 31 et 32 avec le mois retourné par le menu déroulant.

    Modification de la valeur de la cellule liée en fonction du mois sélectionné

    Le test va donc rechercher si la valeur du mois contenu dans les cellules AD6, AE6 et AF6. Ou encore Cells(6, 30), Cells(6, 31) et Cells(6,32) sont supérieures ou égale à la valeur contenue en A1 (la cellule liée du menu déroulant pour les mois).

    Alors bien sur, comme nous sommes à l'intérieur d'une boucle, la valeur Num_Col va tout d'abord avoir la valeur 30 et donc faire le test sur la cellule AD6, puis au deuxième passage dans la boucle, le test se fera sur la cellule AE6 et ainsi de suite.

    Ligne 5 : Masquer la colonne

    Si le test précédent est Vrai, la colonne Num_Col est masquée (Hidden = True Masquer = Vrai).

    Ligne 6 et 7 : Afficher la colonne

    Si le test est Faux (Else), alors la colonne Num_Col est affichée (Hidden = False)

    Ce test peut paraître inutile mais si vous passez d'un mois qui n'a pas 31 jours vers un mois à 31 jours, il faut afficher les précédentes colonnes masquées (malin )

    Ligne 8 et 9 : Fermer les instructions

    En VBA, quand vous créer un test ou une boucle, il est indispensable d'indiquer où se termine les instructions. Pour indiquer la fin d'un test If, il suffit d'écrire l'instruction End If, et pour une boucle For, il faut la terminer par l'instruction Next

    Ligne 10 : Effacer les données inscrites

    A la fin du traitement pour masquer ou afficher les colonnes, le programme va effacer les valeurs ClearContents inscrites dans la plage de cellules B6 à AF13 Range("B6:AF13")

    Ligne 11 : Terminer la procédure

    Comme pour les tests ou les boucles, il faut terminer une procédure (et donc la fin de votre programme) par l'instruction End Sub

    Conclusion

    Comme vous l'avez constaté, même si la macro du calendrier est courte (8 lignes de code), chaque ligne est importante et à un rôle bien défini. Aussi, il est important de bien comprendre le code avant de faire des modifications.

    Articles liés

    Newsletter

    1 fois par mois :
    Astuces et quiz

      Nous ne vous enverrons pas de spam. Vous pouvez vous désabonner à tout moment.

      45 Comments

      1. couturier stephane
        16/02/2025 @ 16:00

        Bonjour j'aimerais savoir pourquoi quand j'ouvre le visuel basic je ne vois aucune ligne de code comme vous ?

        merci

        Reply

        • Frédéric LE GUEN
          16/02/2025 @ 17:05

          Avez-vous enregistrer votre macro au format xlsm ?

          Reply

      2. sam
        17/01/2025 @ 16:12

        Re-bonjour l'idée c'est de supprimer le contenu en passant au mois suivant et le conserver lorsque l'on revient au mois précédent.
        Comment faire ?

        Voici ma macro :
        Sub Masquer_Jour()
        Dim Num_Col As Long
        Range("D7:AH14").ClearContents
        For Num_Col = 32 To 34
        If Month(Cells(6, Num_Col)) Cells(1, 3) Then
        Columns(Num_Col).Hidden = True
        Else
        Columns(Num_Col).Hidden = False
        End If
        Next
        End Sub

        Reply

        • Frédéric LE GUEN
          21/01/2025 @ 03:25

          Bonjour, pour cela il faut que vous achetiez le calendrier automatique (lien dans l'article). Le travail est compliqué et a demandé plusieurs jours de développement en VBA. Le code fait plusieurs milliers de lignes pour prendre en considération tous les cas de figure (ajout d'un salarié, suppression d'un salarié, modification d'une valeur, suppression d'une seule valeur, ....)

          Reply

      3. sam
        17/01/2025 @ 16:03

        Bonjour,
        Comment fait-on pour que les données inscrites à chaque mois restent enregistrées et ne s'écrasent pas ? Lorsque l'on change de mois les données inscrites au mois précédent s'effacent ce qui est très contraignant... Y a-t-il une solution de contournement à cela ? Retirer le clear contents n'est pas suffisant pour information
        voici ma macro :

        Sub Masquer_Jour()
        Dim Num_Col As Long
        Range("D7:AH14").ClearContents
        For Num_Col = 32 To 34
        If Month(Cells(6, Num_Col)) Cells(1, 3) Then
        Columns(Num_Col).Hidden = True
        Else
        Columns(Num_Col).Hidden = False
        End If
        Next
        End Sub

        Merci par avance pour votre retour.

        Reply

      4. N'TAME
        01/07/2022 @ 10:57

        Un grand merci à vous. Ce tuto vient résoudre une de mes difficultés dans la gestion du pointage du personnel.

        Reply

      5. JEBLI
        02/05/2022 @ 16:14

        Bonjour,
        Merci infiniment pour vos efforts et pour tout ce que vous faites pour nous aider.
        Je vous estime beaucoup et je vous souhaite le bonheur du monde entier.
        Si vous le permettez, j'aimerai bien apprendre à faire l'enregistrement d'un mois sur l'autre de mes données(suivi du pointage du personnel).
        Encore une fois merci beaucoup.

        Reply

      6. souleymane cisse
        25/04/2022 @ 15:10

        Hello , je voudrais pouvoir changer de mois mais en actualisant a chque fois les données contenues dans chaque mois sans les écraser

        Reply

        • Frédéric LE GUEN
          26/04/2022 @ 00:45

          Il faut supprimer la ligne de la macro ClearContents

          Reply

      7. Steven
        13/08/2021 @ 07:14

        Bonjour et merci pour le tuto!

        J'ai besoin d'un coup de main! Comme plusieurs mon calendrier est à la verticale mais ce n'est pas mon problème j'ai adapter la macro. je sauvegarde et ca fonctionne! Sauf que tout les mois tombe a 28 jours. J'ai du effacer la ligne qui demande la suppression des celulles pour mes besoins et j'ai remarque que si je met tout a FALSE et bien tout les jour s'affiche je me demandais donc si il manquait pas quelque ligne à la macro j'ai limpression qu'il met seulement a 28 jour ou il affiche tout les jour...voici les codes

        Sub Masquer_Jour()
        Dim Num_Lignes As Long
        For Num_Lignes = 31 To 33 ' Boucle sur les cellules des jours 29, 30 et 31
        If Month(Cells(Num_Lignes, 3)) > Cells(1, 1) Then
        Rows(Num_Lignes).Hidden = True
        Else
        Rows(Num_Lignes).Hidden = False
        End If
        Next
        End Sub

        Ce code me permet de masquer les 29-30-31 et seulement 28 jours aparait peu importe le mois

        et celui la

        Sub Masquer_Jour()
        Dim Num_Lignes As Long
        For Num_Lignes = 31 To 33 ' Boucle sur les cellules des jours 29, 30 et 31
        If Month(Cells(Num_Lignes, 3)) > Cells(1, 1) Then
        Rows(Num_Lignes).Hidden = False
        Else
        Rows(Num_Lignes).Hidden = False
        End If
        Next
        End Sub

        Me permet d'afficher tout les jours peu importe le mois...

        Je peux m'adapter mais j'ai encore des lacunes en macro! Merci de votre coup de main !

        Reply

        • jarrier
          01/11/2021 @ 03:10

          bonjour
          mon tableau commence en C5 et se termine en AH15
          le menu déroulant n'affecte pas la macro, il est invisible dans le programme
          en C1 est renvoyé la valeur du mois, c'est celle-ci qui faut renseigner dans la macro

          IF Month (Cells(5,Num_Col)) > Cells (1 , 3 ) THEN
          I__> ce numéro 5 , correspond à la ligne des jours de la semaines du tableau

          Cell 1 est la première ligne d'excel et 3 la colonne numéro 3 d'excel

          n'oublier pas le signe >

          Reply

      8. Erkan Zekiri
        24/06/2021 @ 14:13

        Bonjour à tous,

        je ne comprends pas pourquoi lorsque je mets les macro, mon calendrier se coupe le 28 de chaque mois. Savez vous pourquoi??

        Reply

        • Frédéric LE GUEN
          24/06/2021 @ 14:30

          Le test sur les cellules est forcément toujours vrai. Il y a soit un problème avec la valeur des cellules, soit vous ne pointez pas sur la bonne ligne où sont vos dates

          Reply

          • Erkan
            24/06/2021 @ 23:27

            J’ai passé plus de 4heures à vraiment tout essayé, mais je ne comprends pas pourquoi mes mois se terminent toujours le 28

        • Galifde
          06/07/2021 @ 11:06

          Bonjour, J'ai eu le même problème, pour le résoudre, j'ai changer la cellule de référence du mois !
          Dans l'exemple :
          If Month(Cells(23, Num_Col)) Cells(1, 1) Then 'renvoie vers la Cellule A1

          Modification de la cellule de réf pour le mois :
          If Month(Cells(23, Num_Col)) Cells(1, 3) Then 'renvoie vers la Cellule C1

          ça marche nickel,
          Merci Frédéric

          Reply

          • Galifde
            06/07/2021 @ 12:53

            Attention, il manque le symbole "diffèrent de" :
            If Month(Cells(23, Num_Col)) Cells(1, 3)

          • Laura Maggiore
            24/08/2021 @ 19:16

            Merci beaucoup pour votre aide, cela fonctionne également pour moi.
            Encore Merci !!!

        • Cezar
          16/07/2021 @ 09:40

          il faut mettre seulement le symbole "est supérieur" dans cette ligne du test :

          If Month(Cells(6, Num_Col)) > Cells(1, 1) Then

          et non >= car si vous mettez >= alors pour chaque mois le test sera vrai

          Reply

      9. Nicolas
        17/04/2021 @ 13:03

        Bonjour, j'ai essayé de rentrer cette formule mais mon calendrier est à la verticale.
        J'ai tenté cette formule :
        Sub Masquer_Jour()
        Dim Num_Lignes As Long
        For Num_Lignes = 31 To 33 ' Boucle sur les cellules des jours 29, 30 et 31
        If Month(Cells(2, Num_Lignes)) >= Cells(1, 1) Then
        Lignes(Num_Lignes).Hidden = True
        Else
        Lignes(Num_Lignes).Hidden = False
        End If
        Next
        Range("B3:I33").ClearContents 'Supprime le contenu dans les cellules
        End Sub

        mais cela ne fonctionne pas.

        Pouvez vous m'aider svp?

        Reply

      10. simo
        22/03/2021 @ 18:19

        bonjour
        j'ai créé un calendrier comme cela mais j'ai besoin de sauvgarder des valeurs dans le tableau pour chaque mois

        Reply

        • Frédéric LE GUEN
          22/03/2021 @ 20:01

          CE N'EST PAS POSSIBLE. On ne peut pas à la fois saisir des valeurs dans des cellules et également rappeler le résultat d'un mois précédent. Ce n'est pas le but d'Excel

          Reply

      11. Célia
        03/03/2021 @ 16:44

        Bonjour,
        J'ai la même ligne de code que vous, hormis pour le numéro des cases qui changent (tableau décalé). Cependant, les cases 28-29-30 et même les 31, ne disparaissent pas.
        De plus, toutes les lignes du tableau deviennent rouge (couleur de mes week end).
        Avez vous une idée du problème,

        Merci

        Reply

        • Kadafi
          20/05/2021 @ 18:32

          Bonjour,

          Pour les colonnes qui ne disparaissent pas, c'est normal car vous n' avez pas terminer tout le tutorial.
          Pour cela rendez-vous ici https://excel-exercice.com/creation-dun-calendrier-automatique/ , puis accéder à l'étape "Etape 11 : Lier les menus déroulants à la macro"

          Une fois que vous aurez terminer cette étape tout fonctionnera.

          Pour les lignes qui se mettent en rouge, j'ai également la même chose. Je n'ai pour le moment pas réussi à trouver d'où cela vient.

          Je vous en prie.

          Reply

      12. Christophe
        06/02/2021 @ 19:22

        bonjour

        Après plusieurs heures de recherche je me décide à vous demander si il est possible de modifier cette macro
        pour un tableau ou les dates sont verticales, plutôt que de perdre mon temps sur quelque chose d'impossible.
        Merci d'avance pour votre réponse

        Reply

        • Frédéric LE GUEN
          07/02/2021 @ 13:10

          Il suffit d'inverser l'écriture Cells(Num_Ligne,6) par Cells(6, Num_Ligne)

          Reply

          • christophe
            07/02/2021 @ 14:48

            Bonjour

            Merci pour votre réponse rapide, cela fonctionne par contre cela supprime les formules dans les cellules et elles ne réapparaissent pas en changeant de mois ; est ce que cela ne devrait pas simplement masquer la ligne ?

            Merci d'avance pour votre réponse

          • Cédric
            17/05/2021 @ 10:47

            Bonjour,

            J'ai le même soucis que "christophe", la macro efface l'intégralité du tableau et non les jours voulus (ceux du mois suivant).

            Voici ma macro

            Sub Masquer_Jour()
            Dim Num_Ligne As Long
            For Num_Ligne = 33 To 35 ' Boucle sur les cellules des jours 29, 30 et 31
            If Month(Cells(Num_Ligne, 1)) >= Cells(1, 1) Then
            Rows(Num_Ligne).Hidden = True
            Else
            Rows(Num_Ligne).Hidden = False
            End If
            Next
            Range("A5:G35").ClearContents 'Supprime le contenu dans les cellules
            End Sub

            Merci

          • Cédric
            27/05/2021 @ 09:39

            Bonjour,

            Déjà je m'excuse car en regardant un peu plus attentivement on voit que la ligne :
            "Range("A5:G35").ClearContents 'Supprime le contenu dans les cellules" comme c'est écrit supprime le contenu... (pas de commentaire)
            Puis en lisant plus attentivement (et non vite fait comme la première fois) je me suis rendu compte qu'il ne me manquait qu'à changer les lignes de référence pour le mois :
            If Month(Cells(Num_Ligne, 1)) >= Cells(1, 1) Then
            et voilà régler.
            Merci pour le tuto et bonne continuation

          • Frédéric LE GUEN
            27/05/2021 @ 10:51

            Et bien voilà une réponse qui fait plaisir. Oui il faut un peu chercher par soi-même. Quand on réalise un projet avec Excel, il y a toujours une part qui sera spécifique et où une adaptation sera à réaliser. Toutes les réponses ne sont pas sur le web, il faut encore parfois réfléchir 😉

          • Crispim
            21/12/2021 @ 21:48

            Bonsoir
            Je me suis appuyer sur votre calendrier mais je les disposé avec les jours verticales.
            Je suis novices dans les macros pourriez vous stp m'aider
            Je vous remercie par avance
            Michel

          • Frédéric LE GUEN
            21/12/2021 @ 22:41

            C'est pourtant expliqué dans l'article. Dans toutes les instructions Cells(ligne, colonne) il faut que vous mettiez la variable sur le paramètre de la ligne et non pas de la colonne

      13. JC
        31/01/2021 @ 18:53

        Bonjour,

        Merci pour ce tuto et ces explications.
        Par contre, je constate (comme déjà évoqué dans un des commentaires) lorsque que je veux remplir mon planning, dés que je change de mois (ou d'année) tout s'efface et impossible de conserver une information d'un mois sur l'autre. Est ce que quelqu'un pourrait me conseiller et me dire comment conserver les données d'un mois sur l'autre ?

        Merci d'avance à toutes les personnes qui répondront à mon interrogation.

        Reply

      14. Florence
        15/12/2020 @ 11:53

        Bonjour,
        Merci pour votre Tuto qui m'a faciliter la vie mais j'ai problème !
        J'ai crée exactement le même calendrier que vous, mais lorsque je veux entrer la macro il y à une erreur syntaxe qui me bloque.
        Voici mon code :
        Sub Masquer_Jour()

        Dim Num_Col As Long
        For Num_Col = 30 To 32
        If Month(Cells(6, 30), Cells(6, 31), Cells(6, 32)> Cells(1, 1) Then
        Columns(Num_Col).Hidden = True
        Else
        Columns(Num_Col).Hidden = False
        End If
        Next

        End Sub

        Quelqu'un peut il m'aider à finaliser correctement ce calendrier ?? Merci d'avance

        Reply

        • Kadafi
          20/05/2021 @ 18:14

          Bonjour,

          Il manque une parenthèse dans l'instruction suivante :
          If Month(Cells(6, 30), Cells(6, 31), Cells(6, 32)> Cells(1, 1) Then

          Ecrivez plutôt :
          If Month (Cells(6, 30), Cells(6, 31), Cells(6, 32)) > Cells(1, 1) Then

          Vous avez en effet oublier de fermer les parenthèses de la fonction MONTH.

          Reply

        • Kadafi
          20/05/2021 @ 18:37

          Bonjour,

          Non vous n'avez pas créer le même calendrier que lui.
          Plutôt que d'écrire :
          For Num_Col = 30 To 32
          If Month(Cells(6, 30), Cells(6, 31), Cells(6, 32)> Cells(1, 1) Then

          Ecrivez :
          For Num_Col = 30 To 32
          If Month(Cells(6, Num_Col))> Cells(1, 1) Then

          Car dans votre code vous utilisez mal la boucle for.

          Je vous en prie.

          Reply

      15. Manuela Da costa
        23/11/2020 @ 14:37

        Bonjour,
        J'ai suivi votre tuto à la lettre même ligne même colonne. Seulement la macro ne fonctionne pas pour la premier ligne Sub MAsquer_Jour() elle s'affiche en jaune fluonje ne comprends pas pourquoi.
        Et les lignes à la suite du 30 et 31 sont toujours affichées.
        Merci d'avance pour votre retour

        Reply

      16. Sparadrap
        30/10/2020 @ 10:53

        Bonjour,
        J'aidais une amie à régler avancer dans ses exercices quand je me suis rendu compte que votre site web injecte des grosses erreur dans le code de vos macros. On a vite compris pourquoi elle avançait pas.

        la ligne :
        If Month(Cells(6, Num_Col)) >= Cells(1, 1) Then

        Devrait etre remplacée par :
        If Month(Cells(6, Num_Col)) > Cells(1, 1) Then

        et la ligne :
        Range("B6:AF13").ClearContents 'Supprime le contenu dans les cellules

        Devrait être remplacée par :
        Range("B6:AF13").ClearContents 'Supprime le contenu dans les cellules

        La raison de ces injections est simple, vous ne gérez pas bien l'encodage des caractères de vos pages web, du coup certains caractères spéciaux ne s'affiche pas correctement, un simple guillemet se transforme en """ ou une simple flèche se transforme en ">"

        Pour le bien des débutants, ce serait sympa de corriger tout ça 🙂

        Reply

        • Frédéric LE GUEN
          30/10/2020 @ 11:22

          Mille mercis,
          C'est effectivement le genre de coquille qui peut arriver mais qui n'est visible qu'au moment de la publication.
          C'est corrigé

          Reply

      17. Emy
        10/09/2020 @ 12:09

        Bonjour,

        Je retourne tout dans tous les sens depuis 2 jours...concernant la macro. Mes colonnes AD AE AF sont bien masquées, mais TOUS les mois de toutes les années. Je ne comprends pas pourquoi. Quelqu'un pourrait-il m'aider ? Le premier jour des dates de mon tableau commence en B6, fini en AF (31 jours)

        Reply

      18. khalil
        06/09/2020 @ 18:20

        bonjour;
        j'ai bien suivi le tuto mais j'ai eu un soucis avec la macro pour masquer les jours car le calendrier que j'ai édité est inversement au votre (jours verticalement positionnés) est ce que ça affecte la macro.

        Merci par avance pour votre aide

        Reply

      19. HP
        31/08/2020 @ 15:53

        bonjour, je n'arrive pas a transferer la macro en mode verticale ??? pourriez vous m'aider !!

        Reply

      20. Émilie
        09/07/2020 @ 18:08

        Bonsoir,
        J’ai cree un document suite à votre tutoriel Excel mais je suis complètement perdue pour le macro : “masquer jour”
        pouvez-vous m’aider svp si je vous envoie mon document ?
        Merci bcp.

        Reply

        • Poussin
          23/11/2020 @ 16:09

          Tout partait si bien....

          Très très mais alors très déçu de la fin... alors que j'ai respecté le format du tableau, la macro masque systématiquement les derniers jours, mon tableau s'arrête à 28 jours...

          Je viens de perdre une après midi entière à essayer de résoudre le problème en vain...

          Je ne recommande donc pas votre tuto pour les prochains lecteurs.

          Reply

      21. Guest
        27/06/2020 @ 07:41

        Bonjour,

        Voici ce que nous avons écrit pour que la macro fonctionne (Suite Office 2016):

        Sub Masquer_Jour()

        Dim Num_Col As Long
        For Num_Col = 30 To 32
        If Month(Cells(12, Num_Col)) > Cells(1, 1) Then
        Columns(Num_Col).Hidden = True
        Else
        Columns(Num_Col).Hidden = False
        End If
        Next
        Range("B13", "AF15").ClearContents
        End Sub

        Mon calendrier commence à B12. Faire commencer le Range().ClearContents à B13 car sinon c'est toute la 1re ligne de B12 qui disparaît...

        Comme Moualek, j'ai espéré que le calendrier permettrait de garder les données en mémoire, mais passer d'un mois à l'autre ne fait que supprimer définitivement les données (si on revient sur le mois avec les données, il n'y a plus rien)...
        Par conséquent, pour ceux qui espèrent mettre en place un planning de congés pour une équipe ou mettre des données quelconque en mémoire au fur et à mesure du calendrier, ce n'est pas l'outil adéquat, en tout cas en l'état.

        Reply

      22. MOUALEK
        24/06/2020 @ 01:09

        Bonjour,

        Merci pour ce tuto. Franchement très bien fait!! Bravo!

        J'ai cependant deux questions :

        La ligne : "If Month(Cells(8, Num_Col)) >= Cells(1, 1) Then" apparait en rouge et semble faire buguer la macro. Le 8 correspond pourtant bien à la ligne des dates de mon tableau et Cells(1,1) correspond bien aux coordonnées de la cellule ou apparait le nombre du mois de mes listes déroulante.

        Par ailleurs, cette ligne de code semble non buguée : Range("C9:AG11").ClearContents mais celle-ci l'est : Range("C9:AG11").ClearContents
        J'ai testé les deux sans pour autant être sur de comprendre la nuance entre les deux. Je me disais que la deuxième pourrait permettre de clean le tableau quand on change de mois sans pour autant effacer les données définitivement. Ce qui permettrait de les retrouver en revenant sur le dit mois par la suite. Pur spéculation ou espoir de ma part.

        Encore merci pour tout!

        Reply

      Laisser un commentaire

      Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

      Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.