Bug Macro VBA Masquer les tableaux en fonction du mois
Bonjour,
j'ai crée un fichier Excel avec un tableau par mois pour les 12 mois de l'année. Dans la cellule A1, j'ai crée une liste déroulante me permettant de renseigner le mois.
J'ai créer un code VBA qui permet de masquer tous les tableaux, sauf celui du mois en cellule A1. Voici le code :
Sub MasquerTableaux()
Dim mois As String
mois = Range("A1").Value
If mois = "Janvier" Then
Range("B2:BV45").EntireRow.Hidden = False
Range("B46:BV91").EntireRow.Hidden = True
Range("B92:BV139").EntireRow.Hidden = True
Range("B140:BV183").EntireRow.Hidden = True
Range("B184:BV229").EntireRow.Hidden = True
Range("B230:BV276").EntireRow.Hidden = True
Range("B277:BV322").EntireRow.Hidden = True
Range("B323:BV368").EntireRow.Hidden = True
Range("B369:BV414").EntireRow.Hidden = True
Range("B415:BV460").EntireRow.Hidden = True
Range("B461:BV506").EntireRow.Hidden = True
Range("B507:BV552").EntireRow.Hidden = True
ElseIf mois = "Février" Then
Range("B2:BV45").EntireRow.Hidden = True
Range("B46:BV91").EntireRow.Hidden = False
Range("B92:BV139").EntireRow.Hidden = True
Range("B140:BV183").EntireRow.Hidden = True
Range("B184:BV229").EntireRow.Hidden = True
Range("B230:BV276").EntireRow.Hidden = True
Range("B277:BV322").EntireRow.Hidden = True
Range("B323:BV368").EntireRow.Hidden = True
Range("B369:BV414").EntireRow.Hidden = True
Range("B415:BV460").EntireRow.Hidden = True
Range("B461:BV506").EntireRow.Hidden = True
Range("B507:BV552").EntireRow.Hidden = True
ElseIf mois = "Mars" Then
Range("B2:BV45").EntireRow.Hidden = True
Range("B46:BV91").EntireRow.Hidden = True
Range("B92:BV139").EntireRow.Hidden = False
Range("B140:BV183").EntireRow.Hidden = True
Range("B184:BV229").EntireRow.Hidden = True
Range("B230:BV276").EntireRow.Hidden = True
Range("B277:BV322").EntireRow.Hidden = True
Range("B323:BV368").EntireRow.Hidden = True
Range("B369:BV414").EntireRow.Hidden = True
Range("B415:BV460").EntireRow.Hidden = True
Range("B461:BV506").EntireRow.Hidden = True
Range("B507:BV552").EntireRow.Hidden = True
ElseIf mois = "Avril" Then
Range("B2:BV45").EntireRow.Hidden = True
Range("B46:BV91").EntireRow.Hidden = True
Range("B92:BV139").EntireRow.Hidden = True
Range("B140:BV183").EntireRow.Hidden = False
Range("B184:BV229").EntireRow.Hidden = True
Range("B230:BV276").EntireRow.Hidden = True
Range("B277:BV322").EntireRow.Hidden = True
Range("B323:BV368").EntireRow.Hidden = True
Range("B369:BV414").EntireRow.Hidden = True
Range("B415:BV460").EntireRow.Hidden = True
Range("B461:BV506").EntireRow.Hidden = True
Range("B507:BV552").EntireRow.Hidden = True
ElseIf mois = "Mai" Then
Range("B2:BV45").EntireRow.Hidden = True
Range("B46:BV91").EntireRow.Hidden = True
Range("B92:BV139").EntireRow.Hidden = True
Range("B140:BV183").EntireRow.Hidden = True
Range("B184:BV229").EntireRow.Hidden = False
Range("B230:BV276").EntireRow.Hidden = True
Range("B277:BV322").EntireRow.Hidden = True
Range("B323:BV368").EntireRow.Hidden = True
Range("B369:BV414").EntireRow.Hidden = True
Range("B415:BV460").EntireRow.Hidden = True
Range("B461:BV506").EntireRow.Hidden = True
Range("B507:BV552").EntireRow.Hidden = True
ElseIf mois = "Juin" Then
Range("B2:BV45").EntireRow.Hidden = True
Range("B46:BV91").EntireRow.Hidden = True
Range("B92:BV139").EntireRow.Hidden = True
Range("B140:BV183").EntireRow.Hidden = True
Range("B184:BV229").EntireRow.Hidden = True
Range("B230:BV276").EntireRow.Hidden = False
Range("B277:BV322").EntireRow.Hidden = True
Range("B323:BV368").EntireRow.Hidden = True
Range("B369:BV414").EntireRow.Hidden = True
Range("B415:BV460").EntireRow.Hidden = True
Range("B461:BV506").EntireRow.Hidden = True
Range("B507:BV552").EntireRow.Hidden = True
ElseIf mois = "Juillet" Then
Range("B2:BV45").EntireRow.Hidden = True
Range("B46:BV91").EntireRow.Hidden = True
Range("B92:BV139").EntireRow.Hidden = True
Range("B140:BV183").EntireRow.Hidden = True
Range("B184:BV229").EntireRow.Hidden = True
Range("B230:BV276").EntireRow.Hidden = True
Range("B277:BV322").EntireRow.Hidden = False
Range("B323:BV368").EntireRow.Hidden = True
Range("B369:BV414").EntireRow.Hidden = True
Range("B415:BV460").EntireRow.Hidden = True
Range("B461:BV506").EntireRow.Hidden = True
Range("B507:BV552").EntireRow.Hidden = True
ElseIf mois = "Août" Then
Range("B2:BV45").EntireRow.Hidden = True
Range("B46:BV91").EntireRow.Hidden = True
Range("B92:BV139").EntireRow.Hidden = True
Range("B140:BV183").EntireRow.Hidden = True
Range("B184:BV229").EntireRow.Hidden = True
Range("B230:BV276").EntireRow.Hidden = True
Range("B277:BV322").EntireRow.Hidden = True
Range("B323:BV368").EntireRow.Hidden = False
Range("B369:BV414").EntireRow.Hidden = True
Range("B415:BV460").EntireRow.Hidden = True
Range("B461:BV506").EntireRow.Hidden = True
Range("B507:BV552").EntireRow.Hidden = True
ElseIf mois = "Septembre" Then
Range("B2:BV45").EntireRow.Hidden = True
Range("B46:BV91").EntireRow.Hidden = True
Range("B92:BV139").EntireRow.Hidden = True
Range("B140:BV183").EntireRow.Hidden = True
Range("B184:BV229").EntireRow.Hidden = True
Range("B230:BV276").EntireRow.Hidden = True
Range("B277:BV322").EntireRow.Hidden = True
Range("B323:BV368").EntireRow.Hidden = True
Range("B369:BV414").EntireRow.Hidden = False
Range("B415:BV460").EntireRow.Hidden = True
Range("B461:BV506").EntireRow.Hidden = True
Range("B507:BV552").EntireRow.Hidden = True
ElseIf mois = "Octobre" Then
Range("B2:BV45").EntireRow.Hidden = True
Range("B46:BV91").EntireRow.Hidden = True
Range("B92:BV139").EntireRow.Hidden = True
Range("B140:BV183").EntireRow.Hidden = True
Range("B184:BV229").EntireRow.Hidden = True
Range("B230:BV276").EntireRow.Hidden = True
Range("B277:BV322").EntireRow.Hidden = True
Range("B323:BV368").EntireRow.Hidden = True
Range("B369:BV414").EntireRow.Hidden = True
Range("B415:BV460").EntireRow.Hidden = False
Range("B461:BV506").EntireRow.Hidden = True
Range("B507:BV552").EntireRow.Hidden = True
ElseIf mois = "Novembre" Then
Range("B2:BV45").EntireRow.Hidden = True
Range("B46:BV91").EntireRow.Hidden = True
Range("B92:BV139").EntireRow.Hidden = True
Range("B140:BV183").EntireRow.Hidden = True
Range("B184:BV229").EntireRow.Hidden = True
Range("B230:BV276").EntireRow.Hidden = True
Range("B277:BV322").EntireRow.Hidden = True
Range("B323:BV368").EntireRow.Hidden = True
Range("B369:BV414").EntireRow.Hidden = True
Range("B415:BV460").EntireRow.Hidden = True
Range("B461:BV506").EntireRow.Hidden = False
Range("B507:BV552").EntireRow.Hidden = True
ElseIf mois = "Décembre" Then
Range("B2:BV45").EntireRow.Hidden = True
Range("B46:BV91").EntireRow.Hidden = True
Range("B92:BV139").EntireRow.Hidden = True
Range("B140:BV183").EntireRow.Hidden = True
Range("B184:BV229").EntireRow.Hidden = True
Range("B230:BV276").EntireRow.Hidden = True
Range("B277:BV322").EntireRow.Hidden = True
Range("B323:BV368").EntireRow.Hidden = True
Range("B369:BV414").EntireRow.Hidden = True
Range("B415:BV460").EntireRow.Hidden = True
Range("B461:BV506").EntireRow.Hidden = True
Range("B507:BV552").EntireRow.Hidden = False
ElseIf mois = "Pas de mois sélectionné" Then
Range("B2:BV45").EntireRow.Hidden = False
Range("B46:BV91").EntireRow.Hidden = False
Range("B92:BV139").EntireRow.Hidden = False
Range("B140:BV183").EntireRow.Hidden = False
Range("B184:BV229").EntireRow.Hidden = False
Range("B230:BV276").EntireRow.Hidden = False
Range("B277:BV322").EntireRow.Hidden = False
Range("B323:BV368").EntireRow.Hidden = False
Range("B369:BV414").EntireRow.Hidden = False
Range("B415:BV460").EntireRow.Hidden = False
Range("B461:BV506").EntireRow.Hidden = False
Range("B507:BV552").EntireRow.Hidden = False
End If
End SubEdit modo : merci de mettre le code entre balises SVP avec le bouton </>
Le code marche parfaitement, j'ai inséré un bouton pour pouvoir l'exécuter. Sauf pour le mois de Mai. Quand je clique sur le bouton, absolument rien ne se passe et je n'ai pas de messages d'erreur dans mon code.
Pourriez vous m'aider à résoudre ce problème ?
Cordialement,
Loïc Lamps
Bonjour Loïc
1) merci de relire la charte, il y est indiqué de mettre le code entre balises avec la fonctionnalité (bouton) </>
2) Je ne vois pas comment le code peut marcher, ce sont toutes les mêmes plages
Edit : pas les mêmes lignes masquées
A+
Bonjour,
oui ce sont les même plage car les plages correspondent à des tableaux, je veux donc masquer les tableaux en fonction du mois dans la cellule A1. Le code marche parfaitement sauf pour le mois de mai, je trouve cela étrange.
Cordialement,
Loïc Lamps
Bonjour Loïc Lamps, BrunoM45, le forum,
En l’absence de fichier, je me suis permis d’adapter un de mes fichiers, avec un risque d’erreur lors de l’application des modifications (une solution parmi d’autres).
Bonne journée à tous,
Cordialement,
Bernard
Bonjour Loïc, bbb38
Voici une possibilité de code
Sub MasquerTableaux()
Dim TabMois As Variant, LeMois As String
Dim Ind As Integer
TabMois = Split("Janvier,Février,Mars,Avril,Mais,Juin,Juillet,Août,Septembre,Octobre,Novembre,Décembre", ",")
LeMois = Range("A1").Value
' Quel indice de mois est choisi
For Ind = 1 To 12
If LeMois = TabMois(Ind - 1) Then Exit For
Next Ind
' Afficher le mois, masquer le reste
Range("B2:BV45").EntireRow.Hidden = Not Ind = 1
Range("B46:BV91").EntireRow.Hidden = Not Ind = 2
Range("B92:BV139").EntireRow.Hidden = Not Ind = 3
Range("B140:BV183").EntireRow.Hidden = Not Ind = 4
Range("B184:BV229").EntireRow.Hidden = Not Ind = 5
Range("B230:BV276").EntireRow.Hidden = Not Ind = 6
Range("B277:BV322").EntireRow.Hidden = Not Ind = 7
Range("B323:BV368").EntireRow.Hidden = Not Ind = 8
Range("B369:BV414").EntireRow.Hidden = Not Ind = 9
Range("B415:BV460").EntireRow.Hidden = Not Ind = 10
Range("B461:BV506").EntireRow.Hidden = Not Ind = 11
Range("B507:BV552").EntireRow.Hidden = Not Ind = 12
End SubNota 1 : je n'avais pas fait attention que les mois dans votre feuille sont affichés par groupe de lignes
Nota 2 : dommage que chaque zones de mois n'est pas le même nombre de lignes, le code aurait été plus court encore
A+
Bonjour,
n'étant pas un expert VBA. Je n'ai pas très bien compris le code que vous avais envoyé. Cependant, j'ai essayé de le rentrer dans VBA et cela me donne exactement le même résultat que pour le code que j'avais écris par moi même. Tous les mois fonctionnent sauf le mois de Mai. J'avoue que j'ai du mal à comprendre pourquoi.
Cordialement,
Loïc Lamps
Re,
Pour expliquer code, désolé :
1) je créé un tableau des mois
2) je fais une boucle sur ce tableau pour connaitre l'indice du mois choisi : Mois du tableau = Mois de la cellule A1
3) Si le mois n'est pas de l'indice "Ind", le groupe de ligne est masquée
En ce qui concerne Mai, êtes vous certain que la plage "B184:BV229" soit la bonne ?
Est qu'il n'y a pas un espace après le "i" ?
Ne pouvez vous pas déposer un fichier anonymisé ?
A+
Bonjour. Merci pour votre aide. Il y avait en effet un espace après le mois de Mai dans ma liste déroulante.
J'ai donc gardé mon code qui fonctionne, même si il est un peu long !
Cordialement,
Loïc Lamps