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

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

  • CacherLigneEnFctValeur.xls
    24 KB · Affichages: 121
Dernière édition:

Efgé

XLDnaute Barbatruc
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

  • CacherLigneEnFctValeur(2).xls
    33 KB · Affichages: 142
G

Guest

Guest
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:

GuillaumA

XLDnaute Occasionnel
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:

Efgé

XLDnaute Barbatruc
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

  • CacherLigneEnFctValeur(3).xls
    34.5 KB · Affichages: 148

Discussions similaires

Statistiques des forums

Discussions
312 501
Messages
2 089 014
Membres
104 005
dernier inscrit
Maxence