Cet article va vous montrer comment changer la mise en forme (date, couleur) d'un calendrier d'un mois sur l'autre.
Si vous souhaitez enregister les données d'un mois sur l'autre, vous pouvez acheter le classeur suivant qui fait ce travail comme c'est expliqué dans cette vidéo.
Télécharger le fichier avec enregistrement des données
Commençons par créer la feuille de calculs suivante : nous avons uniquement la liste de nos employés en colonne A.
Nous nous plaçons ensuite en cellule A1 pour créer notre menu déroulant afin de pouvoir sélectionner les mois.
Ajout du menu Développeur dans le ruban
Assurez-vous d'avoir le menu développer d'affiché dans votre ruban. Si tel n'est pas le cas, allez dans le menu Fichier > Options > Personnaliser le ruban, puis cliquez sur le menu Développeur.
Insertion d'un objet Menu déroulant
Maintenant, dans votre Ruban, sélectionnez Développeur > Insérer > Zone de liste déroulante
Cliquez et étirez pour faire apparaître votre objet "Menu déroulant" dans votre feuille de calculs
Maintenant, nous allons créer la liste des mois quelque part dans notre classeur.
Dans le cas de figure présent, j'ai besoin d'au moins 32 colonnes de disponibles pour mon calendrier (maximum de jours dans 1 mois + une colonne pour le nom des employés).
Ne perdez pas de temps à écrire les mois les uns à la suite des autres, la poignée de recopie le fait pour vous.
Lié le menu déroulant à une cellule
Il ne reste plus qu'à lier l'objet "Menu déroulant" à une cellule du classeur pour récupérer la valeur sélectionnée.
Sélectionnez votre objet Menu déroulant
Faites un clic-droit
Sélectionnez Format de contrôle
La boîte de dialogue suivante s'ouvre
Dans l'onglet Contrôle
Sélectionnez la plage de données contenant les mois que vous avez écrits
Sélectionnez la cellule A1 comme cellule liée
Maintenant, si vous sélectionnez le mois de Mai, la cellule liée contiendra la valeur 5. Si vous sélectionnez Septembre, la valeur dans la cellule liée sera 9 et ainsi de suite.
Pourquoi avoir choisi spécifiquement la cellule A1 ? Tout simplement parce que le menu déroulant va masquer le résultat de la la cellule liée à vos utilisateurs
Menu déroulant pour les années
Reproduisez les mêmes manipulations pour les avoir un menu déroulant pour les années
Insérez un nouveau menu déroulant
Sélectionnez ensuite la colonne contenant les années
Liez cette fois à la cellule A2
Etape 2 : Créer la date en fonction du mois et de l'année sélectionnés
Nous allons maintenant créer une formule qui va récupérer les cellules liées A1 (pour les mois) et A2 (pour les années) pour retourner une date.
Nous allons utiliser la fonction DATEpour calculer le premier jour du mois correspondant aux sélections des 2 menus déroulants. Pour les autres jours, la formule est plus simple
Pour A1, la cellule du mois, c'est très simple ; il suffit de reprendre la donnée telle quelle dans la formule
Pour A2, le menu déroulant va retourner les valeurs 1, 2, 3, ... correspondant à la valeur saisie. Pour faire coïncider cette valeur avec une année, il faut rajouter une valeur fixe. Par exemple, il faut ajouter 2014 à la cellule liée pour créer l'année 2015.
La formule est donc
=DATE(A2+2014;A1;1)
Etape 3 : Création des autres jours du mois
Pour calculer les autres jours, la formule est plus facile.
Il suffit de rajouter 1 à la cellule précédente et de recopier cette formule sur la plage de données C6 jusqu'à AF6
=B6+1
Etape 4 : Changer le format de la date et l'orientation
Dans cette étape, nous allons changer le format des dates pour faire apparaître le jour en lettre et en chiffre
Sélectionnez toutes vos dates de la ligne 6 (de B6 à AF6)
Ouvrez la boîte de dialogue du format des nombres (raccourci clavier Ctrl + 1 ou Accueil>Format des nombres>Autres formats numériques ...
Sélectionnez la catégorie Personnalisée et entrer le format jjj jj dans la zone Type
Etape 5 : Changer l'orientation du texte
Maintenant, nous allons changer l'orientation des dates pour les afficher verticalement.
Sélectionnez les cellules B6:AF6
Allez dans le menu Accueil>Orientation>Rotation du texte vers le haut
Et pour finir le travail, ajuster la taille des colonnes de B à AF
Sélectionnez les colonnes de B:AF
Faites un clic-droit sur l'en-tête des colonnes
Choisissez l'option Largeur de colonnes
Indiquez une largeur de 2.5
Etape 6 : Mise en forme
Le calendrier est très bien avancé. En changeant les valeurs dans les menus déroulants, vous voyez que votre document est déjà très fonctionnel.
Ajoutez des bordures ainsi que de la couleur et votre calendrier devient très zoliiiii
Etape 7 : Ajoutez un titre dynamique
Nous allons maintenant créer un titre qui va s'adapter au mois et à l'année sélectionnée.
Pour que notre calendrier soit effectivement automatique, nous devons créer 2 règles pour la mise en forme conditionnelle ; une pour les week-ends et une autre pour les jours fériés.
Couleur pour les week-ends
Sélectionnez votre plage de données B6:AF13
Créer une nouvelle règle de mise en forme (Accueil>Mise en forme conditionnelle>Nouvelle règle)
Sélectionnez l'option Utilisez une formule pour déterminer sur quelles cellules le format sera appliqué
Ecrivez la formule =JOURSEM(B$6;2)>5
Changez la couleur de remplissage (ici de l'orange)
Couleur pour les jours fériés
Ici, nous devons intégrer à notre classeur la liste des jours fériés de votre pays. En cliquant sur ce lien, vous trouverez la liste des jours fériés français dynamiques (Jour de Pâques recalculé selon l'année)
Dans notre exemple, ajoutez ces données dans une nouvelle feuille de calculs de votre classeur avec comme nom Feuil2.
La formule pour cette règle est différente du calcul précédent. Ici, nous utiliserons la fonction NB.SI.ENS
Sélectionnez votre plage de données B6:AF13
Créez une nouvelle règle de mise en forme (Accueil>Mise en forme conditionnelle>Nouvelle règle)
Sélectionnez l'option Utilisez une formule pour déterminer pour quelles cellules le format sera appliqué
Ecrivez la formule =NB.SI.ENS(Feuil2!$B$3:$B$15;B$6)>0
Changez la couleur de remplissage en rouge
Contrôle de la création des mises en forme conditionnelles
Ouvrez le manager de règles conditionnelles (Accueil>Mise en forme conditionnelle>Gérer les règles), vous pouvez visualiser les 2 règles créées dans votre feuille de calculs.
N'oubliez pas de sélectionner l'option "Cette feuille de calcul" dans le premier menu déroulant
Etape 9 : Masquer les dernières colonnes par Macro
Comme tous les mois n'ont pas le même nombre de jours, il faut créer un programme pour qu'Excel masque les colonnes pour les jours au-delà du mois sélectionné.
Toutes les explications sur le code vous sont données dans cet article
Le programme va lire les colonnes AD, AE et AF pour vérifier que la valeur du mois dans ces cellules est égale à la valeur contenue en A1 (valeur du mois sélectionné). Si ce n'est pas le cas, la colonne est masquée.
Appuyez sur les touches Alt + F11 pour ouvrir le Visual Basic Editor
Depuis la barre de menu, sélectionnez Insertion>Module
Copiez le code suivant
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)) >= Cells(1, 1) Then
Columns(Num_Col).Hidden = True
Else
Columns(Num_Col).Hidden = False
End If
Next
Range("B6:AF13").ClearContents 'Supprime le contenu dans les cellules
End Sub
Etape 11 : Lier les menus déroulants à la macro
Pour terminer notre classeur, nous allons lier les 2 menus déroulants avec le code que nous venons de créer.
Sélectionnez l'un de vos menus déroulants
Faites un clic-droit
Sélectionnez Assignez une macro
Sélectionnez le nom de votre macro
Validez
Maintenant, à chaque fois que vous sélectionnez un mois ou une année dans les menus déroulants, votre calendrier se mettra à jour et les colonnes se masqueront (ou s'afficheront) automatiquement
J'ai réalisé votre tutoriel à la lettre, excepté les jours fériés et la macro car cela n'a pas fonctionné mais pas trop grave, en revanche, petit problème, je souhaite mettre des couleurs dans les cases sous les jours. Je m'explique: A la place des employés, je met les noms des chantiers, et sous les jours, j'aimerai par exemple, en jaune les rendez vous de chantier, en bleu la fabrication et en rouge la pose admettons, histoire de voir l'avancement des dossiers au files des semaines, mais lorsque je change de mois, les couleurs et les noms des chantiers restent les même, se superposent sur les samedi et dimanche ... Pouvez vous m'aider?
Ce que vous cherchez à faire c'est un suivi de projets et il y a des outils qui traitent de ce point en particulier, comme Microsoft Project sous votre licence 365. Excel n'est pas fait pour ça, c'est trop lours à gérer
Bonjour,
J'ai pris sur votre explication pour faire également une calendrier automatique mais les jours des mois sont en lignes et pas en colonne.
Le souci c'est que pour la macro si je copie colle ça ne marche pas et si je remplace les col par des rows ça efface tout mon tableau .
Avez vous une aide a m'apporter pour mon calendrier
Bonjour Mr Le Guen
excel 2007 ne fait pas référence avec d'autre feuille pour les critères de mise en forme conditionnelle.
du coup j'ai essayé en copiant les jours fériés sur la feuille du calendrier mais ça marche pas.
Bien cordialement
Laurent Duroc
Oui, comme c'est écrit dans l'article, ce n'est pas l'objet de l'article. La programmation d'un tel calendrier (avec enregistrement des données d'un mois sur l'autre) est extrêmement complexe. C'est un vrai travail de programmation
j'ai suivi toute la vidéo, je vous remercie elle m'a été d'une grande aide.
Cependant j'aimerai rajouter une fonction qui permet de verrouiller les cellules (colonnes) correspondantes aux jours fériés et week-end.
Est-ce-que vous pouvez me dire comment faire svp ?
Je ne trouve pas comment générer ce calendrier sous format trimestriel. Donc avec un affichage par 3 mois sur la bande de calendrier et T1 /T2/T3/T4 dans le menu déroulant...?
depuis plusieurs jours, je tente la Macro mais rien n'y fait elle ne fonctionne pas sachant que j'ai refait le calendrier comme vous.
y aurait-il d'autres solutions?
Je rencontre la même problématique.
Ce qui parait plutôt logique compte de cette ligne de code "Range ("...").ClearContents".
Mais dans ce cas il nous manque info...
Alors, j'ai eu l'info plus bas !
En fait, notre demande nécessiterait un développement plus complexe (ce qui n'était pas le but dans ce tuto).
S'il existe un tuto à ce sujet, je suis preneuse, même s'il faut y passer du temps.
Car tel quel, malheureusement ce tableau ne m'est pas utile.
Merci tout de même pour ce tuto, hyper intéressant !!!
Natacha
Frédéric LE GUEN
06/01/2022 @
12:05
C'est exactement cela. Il y a tellement de situations de planning possible qu'il est impossible de proposer une solution simple pour tout le monde. Et puis à partir du moment où on doit gérer une sauvegarder des données avec le réaffichage des valeurs des mois précédents, ça demande une bonne centaine de ligne de code en VBA (au minimum).
Eric R.
21/01/2021 @
21:02
Bonsoir,
Merci pour vos tutos, ils sont vraiment d'une aide précieuse.
Concernant la modification automatique des derniers jours du mois, comment peut-on limiter le masquage à un groupe de cellules plutôt qu'à des lignes ou des colonnes ?
Bonjour, Je ne comprends absolument pas le besoin et l'intérêt de conserver seulement qques cellules du mois suivant.
Dans tous les cas, dès que les règles se complexifient, l'écriture du code est bien plus difficile et longue à réaliser.
Je me suis certainement mal exprimé.
Dans une feuille de calcul, dont je me sers pour éditer le bulletin de salaire de la nounou qui garde notre fils, j'ai inséré une grille verticale pour indiquer le nombre d'heures effectuées chaque jour. Je me sers de cette grille pour calculer le nombres d'heures mensuelles et gérer le bulletin de salaire
Cette grille fait partie intégrante du bulletin donc si je suis la procédure qui modifie les jours et qui remplace les dernières lignes du mois en fonction du mois en cours, cela masque des lignes de mon bulletin de salaire.
Je souhaiterais donc limiter cette action à la plage de cellules utilisée pour ma grille où je saisis les heures de la nounou.
Eric R.
11/02/2021 @
09:35
Bonjour,
J'ai trouvé la solution à mon problème par une simple MFC sur ma plage de cellules verticale :
=SOMMEPROD((JOUR($J$8:$J8)=JOUR($J8))*1)>1
J8 étant la première cellule comprenant le 1er jour du mois.
Adriana Dos Santos
08/03/2021 @
10:03
Bonjour,
J'ai suivi pas à pas les consignes de la vidéo mais en arrivant à la macro, ça ne marche pas. J'ai tout essayé... copier-coller à partir du site internet, à partir d'un code laissé ici dans les commentaires, en copier lettre par lettre le code de la vidéo qui est différent de celui du site internet... et rien... les jours du mois suivants apparaissent à la fin du mois précédent.
Que puis-je faire?
Merci pour votre aide!
Frédéric LE GUEN
08/03/2021 @
12:03
Il peut y avoir mille raison pour lesquelles votre code ne fonctionne pas.
Avez-vous lu l'article suivant qui explique ligne à ligne comment fonctionne la macro ?
Balikou
15/04/2022 @
15:07
Bonjour,
Dans ce cas pourriez vous nous aider avec ce code VBA. Sinon je pense que le tuto est inachévé.
Merci pour ce tuto, qui m'a bien aidé, néanmoins, mes listes déroulantes sont "mois et année", lorsque je suis sur janvier et que je renseigne les variables associés.
Ex: nombre d'heures effectuées sur janvier
et que je passe sur février je retrouve mes données de janvier... Alors que ça devrait être vide.
Je ne trouve et rien et je ne comprends pas pourquoi ça fait ça.
Aidez moi svp
Mais c'est le but. Un rapport ne se construit pas en 3 clics (comme bcp le pense). Ca prend du temps et ça m'a pris bien plus qu'une journée pour concevoir cet article mais c'est aussi pour montrer qu'il est très important de pratiquer pour se rendre compte de la difficulté de créer des feuilles de calculs dynamiques. C'est pour cela que je donnerais jamais le classeur en téléchargement gratuit.
Tout fonctionne parfaitement, mais je rencontre un problème dans la saisie des données.
Les valeurs que je rentre dans les cellules sur un mois donné disparaissent quand je change de mois comme prévu. Cependant si je reviens sur le mois dans lequel j'ai renseigné ces cellules, elles ont aussi disparu.
Pouvez-vous m'indiquer comment conserver les données dans les cellules d'un mois sur l'autre.
Ce n'est pas possible d'enregistrer d'un mois sur l'autre. Expliquez-moi comment une cellule peut à la fois vous servir à saisir vos valeurs (donc elle doit être vide) et aussi vous retourner un résultat d'un mois précédent (et là ça veut dire que la cellule contient une formule).
Rien n'est impossible avec Excel mais c'est au moins 2 jours de développement en VBA pour un expert.
J'ai tout bien suivi mais Windows 10.. et ça ne garde pas les données quand je change de mois...
Exemple je mets 1 sur une de mes lignes d'octobre 2020 puis je vais à Décembre et quand je reviens à Octobre tout a disparu...
A la fin de l'article, il y a un lien vers un autre article qui explique ligne à ligne la macro.
Il suffit d'inverser la variable pour les lignes et non pas les colonnes et ça va fonctionner
je suis assez novice en macro, je narrive pas a trouver comment inverser la variable, les lignes 4 et 6 generent des erreurs a cause des ";"
cindy
16/09/2020 @
15:26
Bonjour,
Je me suis arrêtée à l'étape 6, je n'avais pas besoin de plus.
En revanche lorsque je rentre une valeur (ex:2) pour l'employé 1 le 13/09, elle se marque d'office dans la colonne le 13 des mois suivants.
Comment puis-je supprimer cela?
Hello,
Je suis désolé mais le calendrier peut être sans interêt pour plusieurs, sur votre tuto, il y'a marqué les employés mais à quoi bon si le mois prochain les données resteront et tout ne se sauvegardera pas ?
J'ai fait mon tableau de façons à ce que les dates soient toutes sur la colonne A du coup je n'arrive pas à ce que les dates de weekend soient en couleurs avec la formule =JOURSEM(B$6;2)>5 que j'ai modifié en =JOURSEM(A$7;2)>5.
Pour un tableau vertical, modifiez la macro comme ceci :
Sub Masquer_Jour()
Dim Num_Col As Long
Range("B7:B37").ClearContents 'Supprime le contenu dans les cellules, remplacer par la plage de votre tableau
For Num_Row = 35 To 37 ' Remplacer par les lignes de vos jours 29, 30, 31
If Month(Cells(Num_Row, 1)) Cells(1, 3) Then 'Num_Row, 1 où 1 est la colonne où se trouve les jours du mois
Rows(Num_Row).Hidden = True
Else
Rows(Num_Row).Hidden = False
End If
Next
End Sub
Est-il possible de fixer un mois ? Par exemple, j'ai créer mon planning pour Juillet, cependant je désire le changer en Août. Mais si je sélectionne le mois d'août, j'ai certaines colonnes et lignes du mois de juillet.
Bonjour,
J'ai fait le tableau avec les employés et maintenant j'aimerai pouvoir entrer M (maladie) ou A (accident) pour chaque employé et pour chaque mois. Malheureusement, je me rends compte que si par exemple je mets M le 6 janvier, ce M se reporte partout (tous les mois). Je ne sais pas comment faire car du coup le tableau que j'ai passé des heures à faire m'est inutile si je n'arrive pas à rentrer les absences des employés pour chaque jour et mois.
J'ai essayé de colorier la case mais cela ne change rien, la couleur se met là encore à tous les mois quand je change le mois avec la liste déroulante.
Quelqu'un peut-il m'aider? merci d'avance
Bonjour,
Je viens de rajouter un article pour expliquer pas-à-pas le fonctionnement du code. J'espère que ces explications vont vous aider à résoudre votre problème.
Merci pour vos explications claires et hyper détaillées.
je n'ai pas réussi tout du premier coup mais la persévérance m'a permis de franchir des caps.
Ma macro ne fonctionnait pas correctement les colonnes 29-32 restaient masquées.
en supprimant le "=" de If Month(Cells(6, Num_Col)) >= Cells(1, 1) Then
tout fonctionne parfaitement
Je viens d'écrire un article qui explique toutes les lignes de code. Merci de votre participation 🙂
Bon Laëtitia
08/07/2019 @
15:44
Bonjour,
J'ai suivi toute votre procédure jusqu'à imbriquer le calendrier en feuill2 et là: bug, je n'arrive pas à copier la fonction du calendrier concernant Pâques. Vous est-il possible de mettre un lien sans mode protéger car quand je copie dans le press-papier la formule s'évapore. Du coup comme c'est une case de référence pour le calendrier en lui-même des jours fériés, impossible de poursuivre. merci pour votre réponse
Un magnifique tuto!
extrêmement pédagogue, j'ai adoré!
il manque un peu d'explication pour le vba par contre. c'est le seul bémol. J'ai eu des soucis également sur la ligne If du vba étant donné que je ne dois pas être sur la même version que vous et que je n'ai pas positionné mes éléments aux mêmes endroits.
Je suis sur excel 2019. voici mon code vba.
Sub Masquer_Jour()
Dim Num_Col As Long
For Num_Col = 34 To 36 ' Boucle sur les cellules des jours 29, 30 et 31
If Month(Cells(6, Num_Col)) Cells(1, 4) Then 'le 4 correspond a la colonne de la cellule liée du menu déroulant du mois, le 1 à la ligne
Columns(Num_Col).Hidden = True
Else
Columns(Num_Col).Hidden = False
End If
Next
Range("F7:AJ20").ClearContents 'Supprime le contenu dans les cellules
End Sub
Super explications pour la création de ce fichier Excel! Tout fonctionne jusqu'à l'étape 9. J'ai bien fait Alt+F11, j'ai bien coller le code et enregistrer. Ensuite, je ne parviens pas à affecter les macros sur les deux listes déroulantes. Y a t il un nom spécifique à donner? Enfait, Un message d'erreur apparait: "impossible d'affecter la macro "mon nom du document.xlsZone combinée2_quand changment'. Il est possible qu'elle ne soit pas disponible dans ce classeur ou que toute les macros soient désactivées.
De plus, j'aimerai pouvoir mettre des 1 ou 0 sous les jours pour chaque mois. Comment faire pour que mes annotations reste sur le mois et l'année séléctionnée?
Un grand merci d'avance.
Olivia
Vous êtes le 150e commentaires sur cet article, c'est dire s'il a du succès. Mais pour autant, je suis bien incapable de vous aider.
Je pense que par défaut, vous avez du bloquer les macros Fichiers > Options > Centre de gestion de la confidentialité > Appuyer sur le bouton Paramètres du Centre de gestion de la confidentialité > Paramètres des macros. Et là, je pense que les macros sont désactivées.
Pour le reste, comprenez que mon métier c'est de concevoir des développements comme celui-ci pour les entreprises et c'est exactement votre cas de figure. Contactez-moi si vous souhaitez que je réalise ce travail.
Super ce tuto, vraiment impressionnée, mais je rencontre deux problèmes.
J'ai élaboré le calendrier différemment du vôtre, de la façon suivante :
- 1 ligne = 1 jour (débutant en "A17", se terminant en "H78" pour les mois à 31 jours)
- Menus déroulants : année en "B1" et mois en "C1"
1 - J'ai nommé le calendrier que j'ai créé "2019-06". Je dois créer cette fiche pour chaque salarié et chaque mois. En dupliquant l'onglet 2019-06 pour faire celui de 2019-07, les menus déroulants qui me permettent de changer l'année et le mois ne sont plus fonctionnels et apparaissent comme "grisés" (je ne peux plus accéder au contenu des listes). Existe-t-il une subtilité pour faire fonctionner les menus déroulants comme sur l'onglet initial ?
J'ai testé pas mal de bidouilles (dupliquer le calendrier ET l'onglet jours fériés ; les copier dans un nouveau fichier, etc). Il n'y a que le copié/collé manuel qui me conserve les menus déroulants, mais je perds la mise en forme de tout le reste.
Je voudrais éviter d'avoir à enregistrer un fichier par mois, mais bien un seul fichier par an pour chacun.
2 - je bloque à la macro, je ne sais pas comment la modifier pour qu'elle fonctionne selon la disposition de mon calendrier.
Je vous remercie par avance pour votre aide, et surtout pour ce tuto bien pratique !
Bonjour , tout d'abord merci beaucoup pour ce tuto tout marche très bien , mais pour des raison pratiques j'ai mis mais jour à la verticale il faut donc que je masque des lignes plutôt que des colonnes j'ai essayé de modifier la macro mais ça marche pas pouvez-vous m'aguiller svp.
Cordialement
Cyril
Il faut inverser la variable dans les paramètres de l'instruction Cells(ligne, colonne).
Dans l'article, j'ai mis mon le lien vers mon livre. Il est très bien noté sur Amazon et est très pédagogique. Ca vous permettra de comprendre le déroulement du code et comment l'adapter à vos besoins de création de calendrier
D'abord, merci pour ce tuto très accessible et bien détaillé.
J'ai pu réaliser un calendrier, à partir de l'année 2019, après m'être "heurté" sur le code VBA.
Voici les petites modification que j'ai apporté :
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)) Month(Cells(6, 2)) Then
Columns(Num_Col).Hidden = True
Else
Columns(Num_Col).Hidden = False
End If
Next
Range("B7:AF13").ClearContents 'Supprime le contenu dans les cellules
End Sub
Sous cette forme le code à l'air de bien fonctionner, je débute VBA donc j'espère qu'il est viable et qu'il aidera les prochains.
Merci encore, bonne journée et à bientôt.
Merci pour la correction du code VBA (problème HTML), voici quelques erreurs que j'ai remarquées :
P.S. J'ai mis le calendrier et les 2 listes déroulantes exactement dans les mêmes cellules que dans le tuto, donc, le code VBA est pareil aussi à ce niveau.
1) En mettant >= les 3 dernières colonnes (jours 29, 30, 31) sont cachées pour tous les mois. C'est en mettant juste > que le code fait la bonne chose dans le calendrier (si je choisis le mois de mai, ça affiche les 31 jours, si c'est juin, c'est 30 et si c'est février, c'est 28 ou 29 selon l'année choisie.
13/03/2023 @ 18:37
Bonjour,
J'ai réalisé votre tutoriel à la lettre, excepté les jours fériés et la macro car cela n'a pas fonctionné mais pas trop grave, en revanche, petit problème, je souhaite mettre des couleurs dans les cases sous les jours. Je m'explique: A la place des employés, je met les noms des chantiers, et sous les jours, j'aimerai par exemple, en jaune les rendez vous de chantier, en bleu la fabrication et en rouge la pose admettons, histoire de voir l'avancement des dossiers au files des semaines, mais lorsque je change de mois, les couleurs et les noms des chantiers restent les même, se superposent sur les samedi et dimanche ... Pouvez vous m'aider?
Cordialement, LBATIRAMA SA
14/03/2023 @ 03:25
Ce que vous cherchez à faire c'est un suivi de projets et il y a des outils qui traitent de ce point en particulier, comme Microsoft Project sous votre licence 365. Excel n'est pas fait pour ça, c'est trop lours à gérer
14/10/2022 @ 15:44
Bonjour,
Je n’arrive pas a faire la Macro et je ne sais pas pour quoi. Pouvez-vous m’aider ?
11/10/2022 @ 04:25
Bonjour
Svp comment programmer ce calendrier sur 12 mois ?
13/10/2022 @ 04:09
Il suffit de continuer de recopier la formule mais sur 12 mois (soit 365 colonnes)
18/11/2022 @ 08:27
Bonjour,
J'ai pris sur votre explication pour faire également une calendrier automatique mais les jours des mois sont en lignes et pas en colonne.
Le souci c'est que pour la macro si je copie colle ça ne marche pas et si je remplace les col par des rows ça efface tout mon tableau .
Avez vous une aide a m'apporter pour mon calendrier
10/09/2022 @ 17:14
Bonjour Mr Le Guen
excel 2007 ne fait pas référence avec d'autre feuille pour les critères de mise en forme conditionnelle.
du coup j'ai essayé en copiant les jours fériés sur la feuille du calendrier mais ça marche pas.
Bien cordialement
Laurent Duroc
05/09/2022 @ 14:43
les contenus sont bien effacés quand on passe d'un mois à un autre ou d'année mais on ne les retrouve plus si on revient au mois / année initial 🙁
06/09/2022 @ 15:36
Oui, comme c'est écrit dans l'article, ce n'est pas l'objet de l'article. La programmation d'un tel calendrier (avec enregistrement des données d'un mois sur l'autre) est extrêmement complexe. C'est un vrai travail de programmation
29/07/2022 @ 20:16
Bonjour,
j'ai suivi toute la vidéo, je vous remercie elle m'a été d'une grande aide.
Cependant j'aimerai rajouter une fonction qui permet de verrouiller les cellules (colonnes) correspondantes aux jours fériés et week-end.
Est-ce-que vous pouvez me dire comment faire svp ?
Merci
29/07/2022 @ 21:49
Pour que soit automatique, il faut que ca soit gère par la macro et c'est vraiment très complique
31/05/2022 @ 10:03
Bonjour,
Est-il possible de faire la même chose avec les numéros de semaines?
Merci d'avance
13/05/2022 @ 12:48
Merci infiniment pour ce partage !!!!!!!!!!!!!!!!!
02/12/2021 @ 12:55
Bonjour,
Je ne trouve pas comment générer ce calendrier sous format trimestriel. Donc avec un affichage par 3 mois sur la bande de calendrier et T1 /T2/T3/T4 dans le menu déroulant...?
22/04/2022 @ 22:30
BONSOIR
POUR LA MACRO IL FAUT ALLER SUR YOUTUBE ET CELA MARCHE A MERVEILLE
MERCI POUR CE TUTO
07/02/2021 @ 18:06
Bonjour,
depuis plusieurs jours, je tente la Macro mais rien n'y fait elle ne fonctionne pas sachant que j'ai refait le calendrier comme vous.
y aurait-il d'autres solutions?
merci par avance.
04/02/2021 @ 13:59
Bonjour, je n'arrive pas à figer un contenu dans un mois comme dans votre exemple avec le chiffre 1.
Lorsque ce chiffre est inscrit par exemple le 3 février et que je vais ensuite au mois de mars, il n'apparait pas et ça c'est bien.
Par contre quand je reviens au mois de février, il n'y apparait plus.
Cordialement
Laurent D
06/01/2022 @ 11:21
Bonjour,
Je rencontre la même problématique.
Ce qui parait plutôt logique compte de cette ligne de code "Range ("...").ClearContents".
Mais dans ce cas il nous manque info...
Natacha
06/01/2022 @ 11:36
Alors, j'ai eu l'info plus bas !
En fait, notre demande nécessiterait un développement plus complexe (ce qui n'était pas le but dans ce tuto).
S'il existe un tuto à ce sujet, je suis preneuse, même s'il faut y passer du temps.
Car tel quel, malheureusement ce tableau ne m'est pas utile.
Merci tout de même pour ce tuto, hyper intéressant !!!
Natacha
06/01/2022 @ 12:05
C'est exactement cela. Il y a tellement de situations de planning possible qu'il est impossible de proposer une solution simple pour tout le monde. Et puis à partir du moment où on doit gérer une sauvegarder des données avec le réaffichage des valeurs des mois précédents, ça demande une bonne centaine de ligne de code en VBA (au minimum).
21/01/2021 @ 21:02
Bonsoir,
Merci pour vos tutos, ils sont vraiment d'une aide précieuse.
Concernant la modification automatique des derniers jours du mois, comment peut-on limiter le masquage à un groupe de cellules plutôt qu'à des lignes ou des colonnes ?
Merci pour votre aide précieuse.
Eric
22/01/2021 @ 11:38
Bonjour, Je ne comprends absolument pas le besoin et l'intérêt de conserver seulement qques cellules du mois suivant.
Dans tous les cas, dès que les règles se complexifient, l'écriture du code est bien plus difficile et longue à réaliser.
24/01/2021 @ 10:08
Bonjour,
Je me suis certainement mal exprimé.
Dans une feuille de calcul, dont je me sers pour éditer le bulletin de salaire de la nounou qui garde notre fils, j'ai inséré une grille verticale pour indiquer le nombre d'heures effectuées chaque jour. Je me sers de cette grille pour calculer le nombres d'heures mensuelles et gérer le bulletin de salaire
Cette grille fait partie intégrante du bulletin donc si je suis la procédure qui modifie les jours et qui remplace les dernières lignes du mois en fonction du mois en cours, cela masque des lignes de mon bulletin de salaire.
Je souhaiterais donc limiter cette action à la plage de cellules utilisée pour ma grille où je saisis les heures de la nounou.
11/02/2021 @ 09:35
Bonjour,
J'ai trouvé la solution à mon problème par une simple MFC sur ma plage de cellules verticale :
=SOMMEPROD((JOUR($J$8:$J8)=JOUR($J8))*1)>1
J8 étant la première cellule comprenant le 1er jour du mois.
08/03/2021 @ 10:03
Bonjour,
J'ai suivi pas à pas les consignes de la vidéo mais en arrivant à la macro, ça ne marche pas. J'ai tout essayé... copier-coller à partir du site internet, à partir d'un code laissé ici dans les commentaires, en copier lettre par lettre le code de la vidéo qui est différent de celui du site internet... et rien... les jours du mois suivants apparaissent à la fin du mois précédent.
Que puis-je faire?
Merci pour votre aide!
08/03/2021 @ 12:03
Il peut y avoir mille raison pour lesquelles votre code ne fonctionne pas.
Avez-vous lu l'article suivant qui explique ligne à ligne comment fonctionne la macro ?
15/04/2022 @ 15:07
Bonjour,
Dans ce cas pourriez vous nous aider avec ce code VBA. Sinon je pense que le tuto est inachévé.
14/01/2021 @ 17:21
Bonjour,
Merci pour ce tuto, qui m'a bien aidé, néanmoins, mes listes déroulantes sont "mois et année", lorsque je suis sur janvier et que je renseigne les variables associés.
Ex: nombre d'heures effectuées sur janvier
et que je passe sur février je retrouve mes données de janvier... Alors que ça devrait être vide.
Je ne trouve et rien et je ne comprends pas pourquoi ça fait ça.
Aidez moi svp
Merci d'avance,
Lea
01/02/2021 @ 10:47
Bonjour Lea, je rencontre le même problème que toi. As tu trouvé une solution ? merci d'avance
11/12/2020 @ 11:31
Merci beaucoup, ça va m'aider pour la gestion du personnel !
20/10/2020 @ 15:38
Merci pour ce super TUTO
J'ai quand même mis 1 journée mais c'est tres enrichissant !
20/10/2020 @ 16:01
Mais c'est le but. Un rapport ne se construit pas en 3 clics (comme bcp le pense). Ca prend du temps et ça m'a pris bien plus qu'une journée pour concevoir cet article mais c'est aussi pour montrer qu'il est très important de pratiquer pour se rendre compte de la difficulté de créer des feuilles de calculs dynamiques. C'est pour cela que je donnerais jamais le classeur en téléchargement gratuit.
02/11/2020 @ 00:39
Bravo jai pris un plaisir à suivre le tuto j'ai appris des choses et je vais continuer à vous suivre et apprendre merci
07/10/2020 @ 12:48
Bonjour,
Tout fonctionne parfaitement, mais je rencontre un problème dans la saisie des données.
Les valeurs que je rentre dans les cellules sur un mois donné disparaissent quand je change de mois comme prévu. Cependant si je reviens sur le mois dans lequel j'ai renseigné ces cellules, elles ont aussi disparu.
Pouvez-vous m'indiquer comment conserver les données dans les cellules d'un mois sur l'autre.
Merci et bonne journée
11/11/2020 @ 13:38
Ce n'est pas possible d'enregistrer d'un mois sur l'autre. Expliquez-moi comment une cellule peut à la fois vous servir à saisir vos valeurs (donc elle doit être vide) et aussi vous retourner un résultat d'un mois précédent (et là ça veut dire que la cellule contient une formule).
Rien n'est impossible avec Excel mais c'est au moins 2 jours de développement en VBA pour un expert.
21/09/2020 @ 21:22
Bonjour
J'ai tout bien suivi mais Windows 10.. et ça ne garde pas les données quand je change de mois...
Exemple je mets 1 sur une de mes lignes d'octobre 2020 puis je vais à Décembre et quand je reviens à Octobre tout a disparu...
28/08/2020 @ 14:12
bonjour, je n'arrive pas a generer la macro pour cacher les jours suivant ?? mon tableau est en verticale, comment modifier la macro ??
28/08/2020 @ 15:42
A la fin de l'article, il y a un lien vers un autre article qui explique ligne à ligne la macro.
Il suffit d'inverser la variable pour les lignes et non pas les colonnes et ça va fonctionner
31/08/2020 @ 15:56
je suis assez novice en macro, je narrive pas a trouver comment inverser la variable, les lignes 4 et 6 generent des erreurs a cause des ";"
16/09/2020 @ 15:26
Bonjour,
Je me suis arrêtée à l'étape 6, je n'avais pas besoin de plus.
En revanche lorsque je rentre une valeur (ex:2) pour l'employé 1 le 13/09, elle se marque d'office dans la colonne le 13 des mois suivants.
Comment puis-je supprimer cela?
31/07/2020 @ 14:33
Hello,
Je suis désolé mais le calendrier peut être sans interêt pour plusieurs, sur votre tuto, il y'a marqué les employés mais à quoi bon si le mois prochain les données resteront et tout ne se sauvegardera pas ?
28/07/2020 @ 09:18
Bonjour,
J'ai fait mon tableau de façons à ce que les dates soient toutes sur la colonne A du coup je n'arrive pas à ce que les dates de weekend soient en couleurs avec la formule =JOURSEM(B$6;2)>5 que j'ai modifié en =JOURSEM(A$7;2)>5.
Et pareil pour les jours fériés.
Pouvez vous m'aider? mes dates sont de A7 à A37
28/07/2020 @ 09:52
C'est les $ qui sont mal positionnés. Un petit rappel sur les références mixtes ne serait pas une perte de temps.
10/11/2020 @ 15:34
Bonjour, je pense que vous devriez noter "=JOURSEM($A7;2)>5" pour bloquer votre colonne A.
11/11/2020 @ 13:29
Bonjour, Non, la formule de la mise en forme conditionnelle est juste. Il faut bloquer sur la ligne et pas sur la colonne.
20/07/2020 @ 14:21
Bonjour
J'ai le même problème que vous,
Avez vous obtenu une réponse ?
Merci
06/07/2020 @ 14:30
Pour un tableau vertical, modifiez la macro comme ceci :
Sub Masquer_Jour()
Dim Num_Col As Long
Range("B7:B37").ClearContents 'Supprime le contenu dans les cellules, remplacer par la plage de votre tableau
For Num_Row = 35 To 37 ' Remplacer par les lignes de vos jours 29, 30, 31
If Month(Cells(Num_Row, 1)) Cells(1, 3) Then 'Num_Row, 1 où 1 est la colonne où se trouve les jours du mois
Rows(Num_Row).Hidden = True
Else
Rows(Num_Row).Hidden = False
End If
Next
End Sub
06/07/2020 @ 17:15
Range("B7:B37"), hmmmm, Ca ne nettoie pas les cellules en colonne C, D, E, F, ....
Mais sinon c'est ok, je valide 😉
01/07/2020 @ 14:16
bonjour,
Est-il possible de fixer un mois ? Par exemple, j'ai créer mon planning pour Juillet, cependant je désire le changer en Août. Mais si je sélectionne le mois d'août, j'ai certaines colonnes et lignes du mois de juillet.
Super sujet merci
22/07/2019 @ 08:27
Bonjour,
J'ai fait le tableau avec les employés et maintenant j'aimerai pouvoir entrer M (maladie) ou A (accident) pour chaque employé et pour chaque mois. Malheureusement, je me rends compte que si par exemple je mets M le 6 janvier, ce M se reporte partout (tous les mois). Je ne sais pas comment faire car du coup le tableau que j'ai passé des heures à faire m'est inutile si je n'arrive pas à rentrer les absences des employés pour chaque jour et mois.
J'ai essayé de colorier la case mais cela ne change rien, la couleur se met là encore à tous les mois quand je change le mois avec la liste déroulante.
Quelqu'un peut-il m'aider? merci d'avance
28/07/2019 @ 16:39
Bonjour,
Je viens de rajouter un article pour expliquer pas-à-pas le fonctionnement du code. J'espère que ces explications vont vous aider à résoudre votre problème.
20/07/2019 @ 15:53
Merci pour vos explications claires et hyper détaillées.
je n'ai pas réussi tout du premier coup mais la persévérance m'a permis de franchir des caps.
Ma macro ne fonctionnait pas correctement les colonnes 29-32 restaient masquées.
en supprimant le "=" de If Month(Cells(6, Num_Col)) >= Cells(1, 1) Then
tout fonctionne parfaitement
26/07/2019 @ 17:29
remplacer If Month(Cells(6, Num_Col)) >= Cells(1, 1) Then
par If Month(Cells(6, Num_Col)) Cells(1, 1) Then
28/07/2019 @ 16:30
Je viens d'écrire un article qui explique toutes les lignes de code. Merci de votre participation 🙂
08/07/2019 @ 15:44
Bonjour,
J'ai suivi toute votre procédure jusqu'à imbriquer le calendrier en feuill2 et là: bug, je n'arrive pas à copier la fonction du calendrier concernant Pâques. Vous est-il possible de mettre un lien sans mode protéger car quand je copie dans le press-papier la formule s'évapore. Du coup comme c'est une case de référence pour le calendrier en lui-même des jours fériés, impossible de poursuivre. merci pour votre réponse
08/07/2019 @ 18:06
Pourquoi vous n'avez pas télécharger le fichier qui contient toutes les formules pour les jours fériés ?
19/06/2019 @ 23:32
Un magnifique tuto!
extrêmement pédagogue, j'ai adoré!
il manque un peu d'explication pour le vba par contre. c'est le seul bémol. J'ai eu des soucis également sur la ligne If du vba étant donné que je ne dois pas être sur la même version que vous et que je n'ai pas positionné mes éléments aux mêmes endroits.
Je suis sur excel 2019. voici mon code vba.
Sub Masquer_Jour()
Dim Num_Col As Long
For Num_Col = 34 To 36 ' Boucle sur les cellules des jours 29, 30 et 31
If Month(Cells(6, Num_Col)) Cells(1, 4) Then 'le 4 correspond a la colonne de la cellule liée du menu déroulant du mois, le 1 à la ligne
Columns(Num_Col).Hidden = True
Else
Columns(Num_Col).Hidden = False
End If
Next
Range("F7:AJ20").ClearContents 'Supprime le contenu dans les cellules
End Sub
18/06/2019 @ 16:37
Bonjour,
Super explications pour la création de ce fichier Excel! Tout fonctionne jusqu'à l'étape 9. J'ai bien fait Alt+F11, j'ai bien coller le code et enregistrer. Ensuite, je ne parviens pas à affecter les macros sur les deux listes déroulantes. Y a t il un nom spécifique à donner? Enfait, Un message d'erreur apparait: "impossible d'affecter la macro "mon nom du document.xlsZone combinée2_quand changment'. Il est possible qu'elle ne soit pas disponible dans ce classeur ou que toute les macros soient désactivées.
De plus, j'aimerai pouvoir mettre des 1 ou 0 sous les jours pour chaque mois. Comment faire pour que mes annotations reste sur le mois et l'année séléctionnée?
Un grand merci d'avance.
Olivia
18/06/2019 @ 19:22
Vous êtes le 150e commentaires sur cet article, c'est dire s'il a du succès. Mais pour autant, je suis bien incapable de vous aider.
Je pense que par défaut, vous avez du bloquer les macros Fichiers > Options > Centre de gestion de la confidentialité > Appuyer sur le bouton Paramètres du Centre de gestion de la confidentialité > Paramètres des macros. Et là, je pense que les macros sont désactivées.
Pour le reste, comprenez que mon métier c'est de concevoir des développements comme celui-ci pour les entreprises et c'est exactement votre cas de figure. Contactez-moi si vous souhaitez que je réalise ce travail.
11/06/2019 @ 15:26
Bonjour,
Super ce tuto, vraiment impressionnée, mais je rencontre deux problèmes.
J'ai élaboré le calendrier différemment du vôtre, de la façon suivante :
- 1 ligne = 1 jour (débutant en "A17", se terminant en "H78" pour les mois à 31 jours)
- Menus déroulants : année en "B1" et mois en "C1"
1 - J'ai nommé le calendrier que j'ai créé "2019-06". Je dois créer cette fiche pour chaque salarié et chaque mois. En dupliquant l'onglet 2019-06 pour faire celui de 2019-07, les menus déroulants qui me permettent de changer l'année et le mois ne sont plus fonctionnels et apparaissent comme "grisés" (je ne peux plus accéder au contenu des listes). Existe-t-il une subtilité pour faire fonctionner les menus déroulants comme sur l'onglet initial ?
J'ai testé pas mal de bidouilles (dupliquer le calendrier ET l'onglet jours fériés ; les copier dans un nouveau fichier, etc). Il n'y a que le copié/collé manuel qui me conserve les menus déroulants, mais je perds la mise en forme de tout le reste.
Je voudrais éviter d'avoir à enregistrer un fichier par mois, mais bien un seul fichier par an pour chacun.
2 - je bloque à la macro, je ne sais pas comment la modifier pour qu'elle fonctionne selon la disposition de mon calendrier.
Je vous remercie par avance pour votre aide, et surtout pour ce tuto bien pratique !
Angélique
23/05/2019 @ 17:55
Bonjour , tout d'abord merci beaucoup pour ce tuto tout marche très bien , mais pour des raison pratiques j'ai mis mais jour à la verticale il faut donc que je masque des lignes plutôt que des colonnes j'ai essayé de modifier la macro mais ça marche pas pouvez-vous m'aguiller svp.
Cordialement
Cyril
24/05/2019 @ 19:15
Il faut inverser la variable dans les paramètres de l'instruction Cells(ligne, colonne).
Dans l'article, j'ai mis mon le lien vers mon livre. Il est très bien noté sur Amazon et est très pédagogique. Ca vous permettra de comprendre le déroulement du code et comment l'adapter à vos besoins de création de calendrier
21/05/2019 @ 03:13
Bonjour,
D'abord, merci pour ce tuto très accessible et bien détaillé.
J'ai pu réaliser un calendrier, à partir de l'année 2019, après m'être "heurté" sur le code VBA.
Voici les petites modification que j'ai apporté :
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)) Month(Cells(6, 2)) Then
Columns(Num_Col).Hidden = True
Else
Columns(Num_Col).Hidden = False
End If
Next
Range("B7:AF13").ClearContents 'Supprime le contenu dans les cellules
End Sub
Sous cette forme le code à l'air de bien fonctionner, je débute VBA donc j'espère qu'il est viable et qu'il aidera les prochains.
Merci encore, bonne journée et à bientôt.
25/04/2019 @ 17:20
Bonjour,
Merci pour la correction du code VBA (problème HTML), voici quelques erreurs que j'ai remarquées :
P.S. J'ai mis le calendrier et les 2 listes déroulantes exactement dans les mêmes cellules que dans le tuto, donc, le code VBA est pareil aussi à ce niveau.
1) En mettant >= les 3 dernières colonnes (jours 29, 30, 31) sont cachées pour tous les mois. C'est en mettant juste > que le code fait la bonne chose dans le calendrier (si je choisis le mois de mai, ça affiche les 31 jours, si c'est juin, c'est 30 et si c'est février, c'est 28 ou 29 selon l'année choisie.
2) J'ai mis le code pour supprimer le cont