Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Problème macro pour calendrier

Sinax

XLDnaute Nouveau
Bonsoir,
Je suis novice et je me suis un peu renseigné sur quelques sites pour m'améliorer car je dois créer un calendrier.
tout se déroule bien sauf pour ma macro.

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

Si quelqu'un qui s'y connait un peu plus pourrait bien m'aider. Merci à vous !
 
Solution
Bonjour Sinax

Voici en retour ton fichier corrigé et ton problème traité, je le pense.
Ce qui posait problème, c'est ta deuxième feuille Feuil2 a laquelle tu faisais référence dans tes formules. De ce fait, tu changeais le mois et l'année en Feuil1 mais lors du test, on était toujours a Septembre (9) 2021 (1) qui sont inscrits en Feuil2.

Une fois cela corrigé je pense que ca marche selon ton attente.

Fred0o

XLDnaute Barbatruc
Bonjour Sinax et bienvenue sur le forum

J'ai teste ta macro. Vu que je ne sais pas vraiment ce que tu souhaites faire avec, je ne sais pas bien ou est le problème. Cependant, j'ai détecté un point bizarre que j'ai corrigé. Maintenant, la macro fait ceci : Elle masque les colonnes 30 a 32 (AD a AF) si le mois contenu dans les cellules "AD8:AF8" est le meme que le mois de la date référence an "A1".

Si ce n'est pas ce que tu cherches, le mieux est de poster un fichier exemple avec ce que tu souhaites obtenir.

Ligne avant correction :
VB:
        If Month(Cells(8, Num_Col)) <> Cells(1, 1) Then

Ligne après correction :
Code:
        If Month(Cells(8, Num_Col)) <> Month(Cells(1, 1)) Then
 

Sinax

XLDnaute Nouveau
Bonsoir et merci.
Déjà merci pour votre correction.
Vous dites que (Elle masque les colonnes 30 a 32 (AD a AF) si le mois contenu dans les cellules "AD8:AF8" est le même que le mois de la date référence an "A1" )
Mais ce que j'aimerais c'est qu'elle masque les colonnes 30 à 32 si le mois contenu dans les cellules est différents que le mois de référence en "A1".
Je prends votre conseil en compte et je vous poste un fichier exemple pour une meilleur compréhension.
 

Pièces jointes

  • Calendrier.xlsm
    20.2 KB · Affichages: 18

Fred0o

XLDnaute Barbatruc
Bonjour Sinax

Voici en retour ton fichier corrigé et ton problème traité, je le pense.
Ce qui posait problème, c'est ta deuxième feuille Feuil2 a laquelle tu faisais référence dans tes formules. De ce fait, tu changeais le mois et l'année en Feuil1 mais lors du test, on était toujours a Septembre (9) 2021 (1) qui sont inscrits en Feuil2.

Une fois cela corrigé je pense que ca marche selon ton attente.
 

Pièces jointes

  • Calendrier_V1.xlsm
    23.9 KB · Affichages: 16

Sinax

XLDnaute Nouveau
Par contre, j'aimerais pour voir faire la correction moi-même donc je me demande où vous avez fait les corrections car j'ai beau cherché mais je ne trouve pas. Désolé et merci d'avance.
 

Fred0o

XLDnaute Barbatruc
Re-bonjour
Voici des explication plus détaillées :

En Feuil1 :



En Feuil2 :



Ensuite, voici le code final :
VB:
Sub Masquer_findumois()
    Dim Num_Col As Long
    For Num_Col = 30 To 32
        If Month(Cells(8, Num_Col)) <> Cells(1, 1) Then
            Columns(Num_Col).Hidden = True
        Else
            Columns(Num_Col).Hidden = False
        End If
    Next
End Sub
 

Sinax

XLDnaute Nouveau
Bonsoir, j’ai consacré encore pas mal de temps à mon apprentissage sur Excel mais même avec vos explications je n’arrive pas à régler le soucis moi même je suis obligé d’utiliser le fichier corrigé que vous m’avez transmis. Je suis vraiment désolé. N’auriez vous pas d’autres explications peut-être sinon ce n’est pas grave. Bonne soirée !
 

Fred0o

XLDnaute Barbatruc
Bonjour Sinax

Je viens de reprendre ton fichier d'origine et je lui ai appliqué dans l'ordre, les 3 modifications détaillées dans mon post precedent.

Cela fonctionne. Il est important que le code de ta macro, soit le meme que celui que j'ai poste, en particulier cette ligne pour laquelle il ne faut pas le "Month()" dans le deuxième terme (après le signe "<>".

VB:
If Month(Cells(8, Num_Col)) <> Cells(1, 1) Then

Re-teste tout cela et si ca ne fonctionne pas, postes le fichier que tu auras modifié pour que j'essaie de voie ce qui cloche.
 

Sinax

XLDnaute Nouveau
Bonjour,
j'ai tenté de tout recommencer de zéro mais toujours le même problème pourtant je suis vos explications.
Je vous donne le dossier en pièce jointe.
Merci de votre aide et bonne fin de journée !
 

Pièces jointes

  • CalendrierTest.xlsm
    22.3 KB · Affichages: 7

Fred0o

XLDnaute Barbatruc
Bonjour Sinax

Dans ton fichier, tu as inverse la cellule liées pour le mois et l'annee. Ce qui fait que tu comparais le mois du calendrier avec l'annee sélectionnée. Il faut donc comparer avec "Cells(2,10" au lieu de "Cells(1,1)".

J'ai aussi oublié de te signaler 1 ligne que j'ai rajoutée, comme dans le code de ma ré
Code:
Sub masquer_findemois()
    Dim Num_col As Long
    Application.Calculate
    For Num_col = 31 To 33
        If Month(Cells(9, Num_col)) <> Cells(2, 1) Then
            Columns(Num_col).Hidden = True
        Else
            Columns(Num_col).Hidden = False
        End If
    Next
End Sub
ponse en post #5.

Il s'agit de la ligne
VB:
Application.Calculate

Qui permet de mettre a jour les calculs dans la feuille avant de lancer les boucles de test.

Voici le code final :
 

Pièces jointes

  • CalendrierTest_V1.xlsm
    24.8 KB · Affichages: 9

Discussions similaires

Réponses
2
Affichages
758
Réponses
4
Affichages
988
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…