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

Cacher une ligne, en fonction de la valeur d'une cellule

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 !

GuillaumA

XLDnaute Occasionnel
Bonjour à tous.

J'ai la macro suivante:
Public Sub Masquer() 'cache les lignes automatiquement

Application.ScreenUpdating = False
For i = 1 To 100
Rows(i).Hidden = Cells(i, 12).Value = ""
Next i
Application.ScreenUpdating = True
End Sub

Cette dernière me permet de masquer une ligne s'il n'y a pas de valeur dans cette dernière sur les lignes 1 à 100


J'aimerais transformer cette dernière afin qu'en fonction d'une valeur dans la cellule M19 de la Feuil1, cette dernière cache toutes les lignes de la Feuil2 qui ont la même valeur dans la colonne L.

3 valeurs différentes peuvent apparaître dans M19 (et donc aussi dans la colonne L de la feuille 2), A B et C.

Je vous joint un fichier exemple pour clarifier le problème =) .
Merci de votre considération et futur aide!!!


Cordialement,
Guillaume A.
 

Pièces jointes

Dernière édition:
Re : Cacher une ligne, en fonction de la valeur d'une cellule

Bonjour Guillaume,
Une proposition à mettre dans le code de la feuille 1:
Code:
[COLOR=blue]Private Sub[/COLOR] Worksheet_Change([COLOR=blue]ByVal[/COLOR] Target [COLOR=blue]As[/COLOR] Range)
[COLOR=blue]If[/COLOR] Intersect(Target, Range("M19")) [COLOR=blue]Is Nothing Then Exit Sub[/COLOR]
[COLOR=blue]With[/COLOR] Sheets("Feuil2")
    [COLOR=blue]For[/COLOR] i = 2 [COLOR=blue]To[/COLOR] .Cells(Rows.Count, "L").End(xlUp).Row
    .Rows(i).Hidden = .Cells(i, 12) <> Range("M19").Value
    [COLOR=blue]Next[/COLOR] i
[COLOR=blue]End With[/COLOR]
[COLOR=blue]End Sub[/COLOR]
Cordialement
 

Pièces jointes

Re : Cacher une ligne, en fonction de la valeur d'une cellule

Bonjour,

A mettre dans le module de code de la feuille Feuil1.

Code:
[COLOR=blue]Private[/COLOR] [COLOR=blue]Sub[/COLOR] Worksheet_Change([COLOR=blue]ByVal[/COLOR] Target [COLOR=blue]As[/COLOR] Range)
    [COLOR=blue]If[/COLOR] Target.Address(0, 0) = [I]"M19"[/I] [COLOR=blue]Then[/COLOR]
        [COLOR=blue]Dim[/COLOR] c [COLOR=blue]As[/COLOR] Range
        [COLOR=blue]With[/COLOR] Sheets([I]"Feuil2"[/I]).Range([I]"L4:L33"[/I])
            .EntireRow.Hidden = [COLOR=blue]False[/COLOR]
            [COLOR=blue]If[/COLOR] Target <> [I]"C"[/I] [COLOR=blue]Then[/COLOR]
                [COLOR=blue]Set[/COLOR] c = .Find(What:=Target.Value, LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=[COLOR=blue]False[/COLOR])
                [COLOR=green]'Si Columndifferences ne renvoie rien une erreur est levée[/COLOR]
                [COLOR=blue]On[/COLOR] [COLOR=blue]Error[/COLOR] [COLOR=blue]Resume[/COLOR] [COLOR=blue]Next[/COLOR]
                [COLOR=blue]If[/COLOR] [COLOR=blue]Not[/COLOR] c [COLOR=blue]Is[/COLOR] [COLOR=blue]Nothing[/COLOR] [COLOR=blue]Then[/COLOR] .ColumnDifferences(c).EntireRow.Hidden = [COLOR=blue]True[/COLOR]
            [COLOR=blue]End[/COLOR] [COLOR=blue]If[/COLOR]
        [COLOR=blue]End[/COLOR] [COLOR=blue]With[/COLOR]
    [COLOR=blue]End[/COLOR] [COLOR=blue]If[/COLOR]
[COLOR=blue]End[/COLOR] [COLOR=blue]Sub[/COLOR]

A+
 
Dernière modification par un modérateur:
Re : Cacher une ligne, en fonction de la valeur d'une cellule

Ah! Je me suis trompé! Ce n'est pas cacher la même valeur...
Désolé de ma mauvaise explication j'avais oublié certaines données de l'équation...

Ce que je recherche c'est:

Si A est choisi, alors B disparaît
Si B est choisi, alors A disparaît
Si C est choisi, alors aucun ne disparaît

Encore désolé pour mon explication précédente.

Merci tout de même à vous Efgé et Hasco pour vos propositions que je suis en train d'essayer de modifier.

Cordialement,
Guillaume A.
 
Dernière édition:
Re : Cacher une ligne, en fonction de la valeur d'une cellule

Re Guillaume, bonjour Hasco,
Je poste quand même ma proposition:
Code:
[COLOR=blue]Private Sub[/COLOR] Worksheet_Change([COLOR=blue]ByVal[/COLOR] Target [COLOR=blue]As[/COLOR] Range)
[COLOR=blue]If[/COLOR] Intersect(Target, Range("M19")) [COLOR=blue]Is Nothing Then Exit Sub[/COLOR]
[COLOR=blue]With[/COLOR] Sheets("Feuil2")
    .Rows.Hidden = [COLOR=blue]False[/COLOR]
    [COLOR=blue]Select Case[/COLOR] Range("M19")
        [COLOR=blue]Case[/COLOR] "A"
            Var = "B"
        [COLOR=blue]Case[/COLOR] "B"
            Var = "A"
        [COLOR=blue]Case Else[/COLOR]
            Var = ""
    [COLOR=blue]End Select[/COLOR]
[COLOR=blue]For[/COLOR] i = 4 [COLOR=blue]To[/COLOR] .Cells(Rows.Count, "L").End(xlUp).Row
    .Rows(i).Hidden = .Cells(i, 12) = Var
[COLOR=blue]Next[/COLOR] i
[COLOR=blue]End With[/COLOR]
[COLOR=blue]End Sub[/COLOR]
Cordialement
 

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
10
Affichages
220
Réponses
4
Affichages
100
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…