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
 

PatrickPrev

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

:D Bonjour à vous ;)

Ok JCGL This Good ça fonctionne deuxpécable et si j'osais troispécable.
Merci à egalement à Softmama à Gorfael et Robert enfin merci à tous.
Juste une petite question : pourquoi quand la valeur est rentrée par "=SI(A17="";"";INDEX(No_Produit;EQUIV(A17;Produit_Fr_Ang;0)))" cela ne fonctionne pas alors que la valeur de S19 est égale à 1 ou 2 ou 3 ou etc.

Encore une fois merci à tous

Patrick
 

Gorfael

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

Salut PatrickPrev et le forum
Dans l'exemple ci-joint, je n'ai gardé que les deux feuilles réellement intéressantes pour le problème.
Les deux cellules en jaune contiennent des formule, mais seule S19 est importante.
Je me suis basé sur ce que m'a fait comprendre JCGL au travers de son poste.

J'en ai profité pour faire un lifting à ta plage nommée Produit_Fr_Ang : elle est désormais déclarée en dynamique.
A+

Edit : je viens de lire ton dernier post
Index renvoi une valeur : le contenu de la cellule à l'intersection de la ligne et la colonne définies.
 

Pièces jointes

  • Copie de BASE.xls
    78 KB · Affichages: 115
  • Copie de BASE.xls
    78 KB · Affichages: 106
  • Copie de BASE.xls
    78 KB · Affichages: 142
Dernière édition:

Lapeno

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

Bonjour,

Suite à la lecture de ce POST, je cherche à masquer différentes lignes en fonction des valeurs de différentes cellules :confused:.
Débutant en VBA, j'ai suivi les conseils de JCGL, mais je n'arrive pas à aboutir.
Dans mon doc, si F21=NON, je cache les lignes 22 à 25, puis si F27=NON, je cache les lignes 28 à 54 etc ....
En résumé, quand les cellules F21,F27,F41,F56,F61,F73,F112 affichent NON, elles masques les lignes adéquates.
Dans le sens inverse, si une de ces cellules affichent OUI, alors les lignes adéquates apparaissent.
Ci joint le fichier.

Par avance merci à vous.
 

Pièces jointes

  • TEST-MACRO.xlsm
    398.4 KB · Affichages: 45
  • TEST-MACRO.xlsm
    398.4 KB · Affichages: 48
  • TEST-MACRO.xlsm
    398.4 KB · Affichages: 56

JCGL

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

Bonjour à tous,

Peux-tu essayer :

VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$F$21" Then
        Rows.Hidden = False
        Select Case Range("F21").Value
        Case "NON": Rows("22:25").Hidden = True
        Case "OUI": Rows("22:25").Hidden = False
        End Select
    End If
    If Target.Address = "$F$27" Then
        Rows.Hidden = False
        Select Case Range("F27").Value
        Case "NON": Rows("28:54").Hidden = True
        Case "OUI": Rows("28:54").Hidden = False
        End Select
    End If
End Sub

A + à tous
 

Efgé

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

Bonsoir à tous,
Surtout pour saluer JC qui se fait rare ces temps ci et qui va finir par nous manquer....
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.Calculation = xlCalculationManual
If Target.Column = 6 Then
    If Target.Row = 21 Then Rows("22:25").Hidden = Target.Value = "NON"
    If Target.Row = 27 Then Rows("28:54").Hidden = Target.Value = "NON"
End If
Application.Calculation = xlCalculationAutomatic
End Sub
Cordialement
 

JCGL

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

Bonjour à tous,
Salut FG,

Ravi de te croiser.

A tester :

VB:
Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
    Rows("22:25").Hidden = IIf(Range("F21") = "NON", True, False)
    Rows("28:54").Hidden = IIf(Range("F27") = "NON", True, False)
End Sub

A + à tous
 

Lapeno

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

Bonjour JCGL et FG.

Merci pour votre aide, le résultat se rapproche de ce que je souhaite.
J'ai encore 2 à 3 réglages à effectuer, mais ça avance bien.
Par contre j'ai une nouvelle question.
En utilisant cette méthode, à chaque modification de valeur, l'intégralité des lignes sont recalculées ce qui fait que mon fichier saccade un peu. Ne serait il pas judicieux d'effectuer différentes macros afin de cibler les modifications et ainsi avoir un doc plus fluide ?
Dite moi si je dis n'importe quoi ou si cela peut être judicieux ? :confused:
 

Lapeno

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

J'ai commencé à bosser dessus, mais j'ai un petit soucis de masque de bouton.
Pour le bouton "Zone combinée 1" (Ligne 21), il cache bien les lignes 22 à 26 ainsi que les boutons présent sur ces lignes.
Par contre le bouton "Zone combinée 2" (Ligne 27), il cache les lignes mais pas les boutons.
Je ne comprends pas car c'est le même code ?????
 

Pièces jointes

  • TEST-MACRO - Copie.xlsm
    392.8 KB · Affichages: 52
  • TEST-MACRO - Copie.xlsm
    392.8 KB · Affichages: 58
  • TEST-MACRO - Copie.xlsm
    392.8 KB · Affichages: 58

Efgé

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

Bonjour Lapeno, Bonjour JC :) ,le fil, le forum
Pourquoi utiliser des "zones combinées" au lieu de validations de données dans tes cellules (comme tu l'utilise déja dans cetaines cellules) et comme tu nous avais montré dans ton exemple....?
Cela évitera de se retrouver avec des contôles de formulaires à gérer au niveau du déplacement....
D'autre part pour la "lenteur" du code, tu devrais plutot incriminer les 5 zones de photo empilées les unes sur les autres.
Cordialement
 

Lapeno

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

Slt FG,

Je teste les zones combinées afin de voir si c'est plus efficace au niveau de la fréquence d'affichage.
Concernant les images, et l’incrémentation, tu peux m'en dire un peu plus STP ???
Si j'ai la possibilité d'optimiser, il en sera que mieux donc si tu as un exemple je suis preneur.
Cordialement.
 

Efgé

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

Re
Il est, d"après moi, inutile d'utiliser des contrôles de formulaires" dans ton cas.
Avec ta méthode, tu multiplies les codes.
Pour les images: Celles ci se raffraichisses à chaque calcul. Une image passe encore, mais cinqu, bonjour le temps de traitement de la feuille.
(sur mon vieux PC, l'affichage même du classeur est saccadé...)
Repense ta présentation.
Cordialement
 

Lapeno

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

Ok, si je je comprends bien c'est les images qui posent problème.
Le soucis est qu'elles sont impératives, ça c'est un faite.
Connaitrais-tu un autre mode de sélection moins gourmand ??? ou la solution est de décliner une image pas cas de figure ???
Dans le second cas, la formule de sélection de l'image va être interminable .... au vu des nombreuses combinaisons possible.
Pour en revenir au fichier incluant des formulaires, sais-tu pourquoi j'ai des boutons qui ne se cachent pas ???
C'est histoire de savoir car un jour cela pourrait m’être utile.
Cordialement
 

Discussions similaires

Réponses
2
Affichages
154

Statistiques des forums

Discussions
312 306
Messages
2 087 094
Membres
103 467
dernier inscrit
Pandiska