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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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.
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
417
Retour