Microsoft 365 Macro pour afficher/masquer lignes qui ne s'exécute plus :-/

Cinelles

XLDnaute Nouveau
Bonsoir à tous,

Pour afficher ou masquer des lignes en fonction de listes déroulantes, j'ai créé la macro ci-dessous.
J'ai pu la tester complètement sans souci une fois, mais maintenant elle ne se lance plus, quand je sélectionne un item de la liste déroulante, plus rien ne se passe...
Qu'a-t-il pu se passer ? Voici un extrait :

Private Sub Worksheet_Change(ByVal Target As Range)
Rows("46:1331").EntireRow.Hidden = True
Select Case Range("$B$4").Value
Case ("Toto"): Rows("46:74").EntireRow.Hidden = False

Case Else
Rows("46:1331").EntireRow.Hidden = True
End Select
End Sub

Merci pour vos retours, bonne soirée :)
 
Solution
Avec votre code il faut que la dernière cellule (B18) contienne "Toto" pour que les lignes 46:74 s'affichent.

Voyez ceci ;
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Rows("46:1331").EntireRow.Hidden = True
If Application.CountIf(Range("B4:B18"), "Toto") Then Rows("46:74").EntireRow.Hidden = False
End Sub
Les lignes s'affichent si au moins une des cellules de la plage B4:B18 contient "Toto".

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Cinelles et bienvenu, bonsoir le forum,

Difficile de te répondre sans le fichier qui va bien...
Peut-être les macros événementielles ont été désactivées. Si c'est le cas, dans une module standard ajoute la macro ci-dessous puis réessaie...

VB:
Sub Macro1()
Application.EnableEvents = True
End Sub
 

Jacky67

XLDnaute Barbatruc
Bonsoir à tous,

Pour afficher ou masquer des lignes en fonction de listes déroulantes, j'ai créé la macro ci-dessous.
J'ai pu la tester complètement sans souci une fois, mais maintenant elle ne se lance plus, quand je sélectionne un item de la liste déroulante, plus rien ne se passe...
Qu'a-t-il pu se passer ? Voici un extrait :

Private Sub Worksheet_Change(ByVal Target As Range)
Rows("46:1331").EntireRow.Hidden = True
Select Case Range("$B$4").Value
Case ("Toto"): Rows("46:74").EntireRow.Hidden = False

Case Else
Rows("46:1331").EntireRow.Hidden = True
End Select
End Sub

Merci pour vos retours, bonne soirée :)
Bonjour à tous
Essaye
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Rows("46:1331").Hidden = True
    Rows("46:74").Hidden = Not UCase(Range("$B$4")) = "TOTO"
End Sub
 

Jacky67

XLDnaute Barbatruc
Merci Jacky, mais ça ne change rien, les lignes sont cachées par défaut et ne s'affichent plus en sélectionnant la liste...
re..
Donne cette liste
Le problème peut venir des majuscules VBA est sensible à la casse
Cette macro est une macro évènementielle, elle se trouve dans la feuille concernée
Clic droit sur l'onglet de la feuille ==>visualiser le code
 
Dernière édition:

Cinelles

XLDnaute Nouveau
Hello à tous,

Alors j'ai compris d'où vient le dysfonctionnement, sans pour autant savoir le régler...
En fait j'ai plusieurs cellule B4, B5, B6.... B18 avec la même liste déroulante.
La macro fonctionne pour une liste (par exemple ..B4).
Après, j'ai pensé bien faire en copiant différents blocs pour chaque cellule B4, B5, etc... Comme dans l'exemple
VB:
ci-dessous :
Private Sub Worksheet_Change(ByVal Target As Range)
Rows("46:1331").EntireRow.Hidden = True
Select Case Range("$B$4").Value
Case ("Toto"): Rows("46:74").EntireRow.Hidden = False

Case Else
Rows("46:1331").EntireRow.Hidden = True
End Select

Select Case Range("$B$5").Value
Case ("Toto"): Rows("46:74").EntireRow.Hidden = False

Case Else
Rows("46:1331").EntireRow.Hidden = True
End Select
End Sub

Et là ça bug...
J'imagine qu'il y a un moyen plus propre de dire si B4="toto" ou B5="Toto" ou B6="Toto"... alors affiche les lignes spécifiques à TOTO ?

Merci à vous
 

job75

XLDnaute Barbatruc
Avec votre code il faut que la dernière cellule (B18) contienne "Toto" pour que les lignes 46:74 s'affichent.

Voyez ceci ;
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Rows("46:1331").EntireRow.Hidden = True
If Application.CountIf(Range("B4:B18"), "Toto") Then Rows("46:74").EntireRow.Hidden = False
End Sub
Les lignes s'affichent si au moins une des cellules de la plage B4:B18 contient "Toto".
 

Cinelles

XLDnaute Nouveau
Avec votre code il faut que la dernière cellule (B18) contienne "Toto" pour que les lignes 46:74 s'affichent.

Voyez ceci ;
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Rows("46:1331").EntireRow.Hidden = True
If Application.CountIf(Range("B4:B18"), "Toto") Then Rows("46:74").EntireRow.Hidden = False
End Sub
Les lignes s'affichent si au moins une des cellules de la plage B4:B18 contient "Toto".
Merci beaucoup job75, c'est parfait, ça marche très bien ainsi 🙂
Très bon week-end, et merci à tous :)
 

Discussions similaires