Masquer des lignes en fonction de la valeur d'une cellule

Résolu/Fermé
Luke94 Messages postés 61 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 13 novembre 2023 - 5 nov. 2015 à 21:17
Luke94 Messages postés 61 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 13 novembre 2023 - 17 nov. 2015 à 21:57
Bonjour,

j'ai besoin de masquer ou d'afficher un tableau TAB10 en fonction de la valeur de la cellule G20. Si celle ci est "VRAI" le tableau doit être masqué. Si celle ci est "FAUX", le tableau TAB10 doit s'afficher.

Cela marchait bien avec deux checkbox OUI et NON que je cochais manuellement. Mais je dois les supprimer et les remplacer par le résultat de la cellule G20. Ma macro doit pouvoir être appliquée sans activation d'un bouton mais juste dépendant de la valeur de G20.

Merci d'avance pour l'aide que vous pourrez m'apporter !

Cordialement
A voir également:

23 réponses

Mike-31 Messages postés 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 5 110
16 nov. 2015 à 00:21
Re,

si tu nommes ton tableau tu peux utiliser le nom de ta plage et dans les lignes de code tu remplaces
Range("A22:A49")
par
Range("TAB10")
et même encore plus court par simplement [TAB10]
toute fois cette dernière est plus difficile à interpréter par les novices ou les personnes qui auraient à intervenir

on pourrait également écrire une constante en début de code qui faciliterait l'adaptation du code à d'autres tableaux en ne modifiant qu'une seule ligne de code.
demain il me sera difficile de te faire une proposition, mais je reviendrais
0
Mike-31 Messages postés 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 5 110
Modifié par Mike-31 le 16/11/2015 à 21:18
Re,
pour revenir à la création d'une constante en début de code afin de simplifier les adaptations à d'autres tableaux ou modifier le nombre de lignes

ouvre le visual basic de l'onglet concerné, dans ton exemple de fichier tu n'as qu'un onglet "ERMODELE", donc clic droit sur l'onglet/Visualiser le code

tout en haut avant le premier code colle une de ces deux lignes, la première prend en compte les lignes 22 à 49 ou la deuxième ligne prend en compte une plage nommée, à toi de choisir l'une ou l'autre
Const Plage As String = "A22:A49"

ou
Const Plage As String = "TAB10"


ensuite dans tes codes tu vas remplacer l'adresse de ta plage par le nom que j'ai donné à la constante Plage, exemple
If CheckBox1 And CheckBox14 Or CheckBox15 Or CheckBox16 Or CheckBox17 = True Then Range("A22:A49").EntireRow.Hidden = True
remplacé par
If CheckBox1 And CheckBox14 Or CheckBox15 Or CheckBox16 Or CheckBox17 = True Then Range(Plage).EntireRow.Hidden = True

idem pour ces lignes
Range("A22:A49").EntireRow.Hidden = False
remplacé par
Range(Plage).EntireRow.Hidden = False

une fois que tu auras modifié les lignes de tes différents codes il te suffira de modifier uniquement la constante en début du code, soit les bornes de ta plage "A22:A49" ou le nom de ta plage nommée "TAB10" ou encore modifier l'étendue de ta plage nommée dans le gestionnaire de noms
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Luke94 Messages postés 61 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 13 novembre 2023
17 nov. 2015 à 21:57
Bonsoir,

merci beaucoup pour cette nouvelle proposition. Je vais la tester dans mon code. Mais, je peux d'ores et déjà marquer comme résolu ma question grâce à toi.

Encore un grand merci pour ton aide précieuse !

Bonne soirée !
0