Microsoft 365 VBA - Masquer/Afficher des lignes selon liste déroulante

babooche

XLDnaute Nouveau
Bonjour,

Je suis entrain de travailler sur un fichier excel à destination de plusieurs utilisateurs.
Sur une feuille excel, j'ai positionné les uns en dessous les autres les données de plusieurs personnes
(Ex : ligne 5 à 19 les données de Pierre / Ligne 21 à 58 les données de Paul ...)

En cellule B2 j'ai placé une liste déroulante avec les noms des utilisateurs.
Je souhaiterais que de base mes lignes soient masquées et que selon la valeur de B2 seul les lignes de l'utilisateur s'affiche.

J'ai créé une macro pour cela mais elle ne fonctionne qu'à moitié.
Si je sélectionne Terrain => toutes mes lignes sont masquées = OK c'est ce que je voulais
Si je sélectionne Pierre => Seul mes lignes 5 à 19 s'affichent = Ok c'est ce que je voulais

Le problème vient quand je sélectionne mon second utilisateur.
Par exemple si je sélectionne pierre (ligne 5 à 19 s'affichent) puis que je sélectionne Paul alors les lignes correspondant à Paul s'affichent (lignes 21 à 48) mais les lignes de pierre ne se masquent pas. il faut que je repasse par l'étape "Autre" (Case Else) pour reset à chaque fois.

Je souhaiterais qu'en changeant l'utilisateur en B2, cela re-masque les lignes de l'ancien utilisateur et que cela affiche que celles du nouveau.

Voici la macro que j'ai fait

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Select Case Range("$B$2").Value
        Case ("Pierre"): Rows("5:19").EntireRow.Hidden = False
        Case ("Paul"): Rows("20:48").EntireRow.Hidden = False
        Case ("Jack"): Rows("48:51").EntireRow.Hidden = False
        Case Else
              Rows("5:51").EntireRow.Hidden = True
        End Select


End Sub


D'avance merci à ceux qui pourront m'aider
 

Pièces jointes

  • Test Macro.xlsm
    17.4 KB · Affichages: 7
Solution
Bonjour Babooche,
Un essai en PJ avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Rows("5:51").EntireRow.Hidden = True
    Select Case Range("$B$2").Value
        Case ("Pierre"): Rows("5:19").EntireRow.Hidden = False
        Case ("Paul"): Rows("20:48").EntireRow.Hidden = False
        Case ("Jack"): Rows("48:51").EntireRow.Hidden = False
        Case Else
              Rows("5:51").EntireRow.Hidden = True
        End Select
End Sub
Il suffit de tout masquer avant de démasquer.

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Babooche,
Un essai en PJ avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Rows("5:51").EntireRow.Hidden = True
    Select Case Range("$B$2").Value
        Case ("Pierre"): Rows("5:19").EntireRow.Hidden = False
        Case ("Paul"): Rows("20:48").EntireRow.Hidden = False
        Case ("Jack"): Rows("48:51").EntireRow.Hidden = False
        Case Else
              Rows("5:51").EntireRow.Hidden = True
        End Select
End Sub
Il suffit de tout masquer avant de démasquer.
 

Pièces jointes

  • Test Macro.xlsm
    15.4 KB · Affichages: 22

Discussions similaires

Réponses
12
Affichages
199
Réponses
30
Affichages
726

Statistiques des forums

Discussions
300 794
Messages
1 987 247
Membres
209 751
dernier inscrit
ahmedslim2013