Masquer/afficher lignes selon la valeur d'une cellule

PatrickPrev

XLDnaute Nouveau
Bonjour à tous

Voici mon PB
Je dois masquer ou afficher certaines lignes selon la valeur d'une cellule.
Je m'explique :
S19 = 1 (ligne 23:24 masquer)
S19 = 2 (ligne 23:24 afficher)
S19 = 3 (ligne 23:24 masquer)
S19 = 4 (ligne 21:24 masquer)
S19 = 5 (ligne 21:24 masquer)
S19 = 6 ((ligne 21:24 masquer)
S19 = 7 ((ligne 21:24 masquer)
S19 = 8 ((ligne 21:24 masquer)
Je précise que je n'entre pas mes valeurs manuellement dans la cellule S19 mais que celle-ci reçoit la valeur selon le choix fait dans une liste
Je sais juste que je doit passer par Private Sub Worksheet mais n'étant pas sublime en VBA je vous demande de me guider.

Merci d'avance

Patrick
 

Softmama

XLDnaute Accro
Re : Masquer/afficher lignes selon la valeur d'une cellule

Bonjour,

Je pense que ceci doit répondre à ton besoin (à placer dans le module de ta feuille de calcul) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$S$19" Then
  Rows.Hidden = False
  Select Case Range("S19").Value
   Case 1, 3:     Rows("23:24").Hidden = True
   Case 4 To 8:     Rows("21:24").Hidden = True
  End Select
End If
End Sub
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Masquer/afficher lignes selon la valeur d'une cellule

Bonjour Patrick et bienvenu, bonjour le forum,

Peut-être comme ça :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$S$19" Then Exit Sub 'si le changement a lieu ailleurs qu'en S19, sort de la procédure
 
Select Case Target.Value 'agit en fonction de la valeur de la cellule éditée
    Case 1, 3 'cas 1 et 3
        Rows("23:24").Hidden = True 'masque les lignes 23 et 24
    Case 2 'cas 2
        Rows("23:24").Hidden = False 'affiche les lignes 23 et 24
    Case 4 To 8 'cas 4 à 8
        Rows("21:24").Hidden = True 'masque les lignes 21 à 24
    Case Else 'autre cas
        Rows.Hidden = False 'affiche toutes les lignes
End Select 'fin de l'action en fonction de...
End Sub

[Édition]
Bonjour Softmama on s'est croisé...
 
Dernière édition:

Gorfael

XLDnaute Barbatruc
Re : Masquer/afficher lignes selon la valeur d'une cellule

Salut PatrickPrev et le forum
Bienvenue
On n'est ni devin, ni télépathe, alors ce qui te semble évident ne l'est pas pour nous !

si S19 passe à 1 => on masque 23:24 et on laisse 21:22 dans l'état
si S19 passe à 2 => on affiche 23:24 et on laisse 21:22 dans l'état
si S19 passe à 3 => on masque 23:24 et on laisse 21:22 dans l'état
si S19 passe à de 4 à 8 => on masque 21:24
Je précise que je n'entre pas mes valeurs manuellement dans la cellule S19 mais que celle-ci reçoit la valeur selon le choix fait dans une liste
Il y a donc plusieurs solutions... qui dépendent de données qui tu ne donnes pas.

La macro WorkSheet_Change ne peut pas se baser sur S19 : étant vraisemblable qu'elle ne la déclenche pas, il suffit que de déclencher une macro qui se lance en cas de changement de la liste avec un code du genre :
Code:
Select Case [S19]
    Case 1, 3
        Rows("23:24").Hidden = True
    Case 2
        Rows("23:24").Hidden = False
    Case 4 To 8
        Rows("21:24").Hidden = True
    Case Else
        'voir ce qu'on fait dans ce cas
End Select
Juste une remarque : je ne vois pas comment afficher les lignes 21:22 si elle sont masquées.
A+
 

Softmama

XLDnaute Accro
Re : Masquer/afficher lignes selon la valeur d'une cellule

Bonjour,
il faut aller dans l'éditeur VBE (Alt+F11), dans la zone de gauche, double-clique sur le nom de ta feuille de calcul (feuil1 par exemple) puis dans la fenêtre de droite choisis, dans le menu déroulant de gauche, 'Worksheet' et dans le menu déroulant de droite 'Change'. Colle alors le code tel que je te l'ai mis dans le post #2.
 

PatrickPrev

XLDnaute Nouveau
Re : Masquer/afficher lignes selon la valeur d'une cellule

Bonjour et merci Softmama
Je me suis tout retaper et refait comme indiqué mais toujours le même message "erreur de compilation, sub ou fonction non définie"
Toutes mes excuses

Patrick
 

PatrickPrev

XLDnaute Nouveau
Re : Masquer/afficher lignes selon la valeur d'une cellule

Merci infiniment JCGL

Cela fonctionne deuxpecable mais j'ai oublié une chose.
Je m'explique : j'ai la cellule "A17" qui contient une liste par validation. Je vous cite cette liste "COSTUME HOMME/MEN'S SUITS, COSTUME HOMME 3 PIECES/MENS SUITS WITH VEST, COSTUME ENFANT/BOY'S SUITS, VESTE HOMME/MEN'S JACKET, PANTALON HOMME/MEN'S PANTS, MANTEAU HOMME/MEN'S OVERCOAT, PARKA HOMME/MEN'S PARKA"
La cellule "S19" reçois la valeur par : "=SI(A17="";"";INDEX(No_Produit;EQUIV(A17;Produit_Fr_Ang;0)))"
Donc la cellule "S19" reçoit la valeur "1 ou 2 ou 3 ou 4 ou 5 ou 6 ou 7 ou 8" et là rien ne ce passe ?
je ne vois pas ou est l'erreur

Merci d'avance
 

PatrickPrev

XLDnaute Nouveau
Re : Masquer/afficher lignes selon la valeur d'une cellule

OK mais la cellule "A17" contient une liste qui vient de "=Produit_Fr_Ang " tirée de la base de donnée en feuille "BD1" et là ça coince

merci
 

Pièces jointes

  • Masquer:afficher.xls.zip
    22.6 KB · Affichages: 129
Dernière édition:

Gorfael

XLDnaute Barbatruc
Re : Masquer/afficher lignes selon la valeur d'une cellule

Salut PatrickPrev et le forum
personnellement, je ne comprends rien à ton fichier : je m'attendais à une seule feuille contenant une formule en S19 faisant référence à A17, pas a un fichier de travail avec une liste de validation en A17 et en S19
A+
 

JCGL

XLDnaute Barbatruc
Re : Masquer/afficher lignes selon la valeur d'une cellule

Je m'explique : j'ai la cellule "A17" qui contient une liste par validation. Je vous cite cette liste "COSTUME HOMME/MEN'S SUITS, COSTUME HOMME 3 PIECES/MENS SUITS WITH VEST, COSTUME ENFANT/BOY'S SUITS, VESTE HOMME/MEN'S JACKET, PANTALON HOMME/MEN'S PANTS, MANTEAU HOMME/MEN'S OVERCOAT, PARKA HOMME/MEN'S PARKA"
OK j'ai vu
La cellule "S19" reçois la valeur par : "=SI(A17="";"";INDEX(No_Produit;EQUIV(A17;Produit_Fr_Ang;0)))"
Donc la cellule "S19" reçoit la valeur "1 ou 2 ou 3 ou 4 ou 5 ou 6 ou 7 ou 8" et là rien ne ce passe ?
je ne vois pas ou est l'erreur
KO... En S19, il y a une liste de validation en dur (1;2;3;4;5;6;7;8). C'est la cellule U19 qui reçoit la formule...

J'ai donc pris la liste de validation en A17 comme déclencheur du code :

VB:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Calculate
If Target.Address = "$A$17" Then
Rows.Hidden = False
Select Case Range("$A$17").Value
Case "COSTUME HOMME/MEN'S SUITS", "COSTUME ENFANT/BOY'S SUITS": Rows("23:24").Hidden = True
Case "VESTE HOMME/MEN'S JACKET", "PANTALON HOMME/MEN'S PANTS", "GILET HOMME/MEN'S VEST", "MANTEAU HOMME/MEN'S OVERCOAT", "PARKA HOMME/MEN'S PARKA": Rows("21:24").Hidden = True
End Select
End If
End Sub
A + à tous
 

Pièces jointes

  • JC BASE COMPLET-3C2 - copie.xls
    535.5 KB · Affichages: 374

Discussions similaires

Réponses
2
Affichages
176

Statistiques des forums

Discussions
312 489
Messages
2 088 849
Membres
103 974
dernier inscrit
chmikha