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

XL 2016 Masquer une ligne ou une colonne en fonction de la valeur d'une cellule...

Axos

XLDnaute Nouveau
Bonjour les ami(e)s!

Je cherche à savoir comment masquer une ligne ou une colonne si une cellule est égale à la valeur 0.

Exemple :
1er cas :
B2=0 donc la ligne 2 serait masquée ;
2ème cas :
B2=0 donc la colonne B serait masquée.

Qui aurait la solution s'il vous plaît? Je pense que cela se code en vba mais je ne sais pas comment faire!

Merci les ami(e)s!

Axos.
 

job75

XLDnaute Barbatruc
Oui en utilisant une boucle :
VB:
Sub Test()
Dim c As Range
For Each c In [B2:D1000] 'à adapter
    If CStr(c) = "0" Then c.Rows.Hidden = True: c.Columns.Hidden = True
Next
End Sub
 

Axos

XLDnaute Nouveau
Bonjour les amis!

J'ai tapé ce code sachant que je ne veux masquer que les lignes pour lesquelles la valeur inscrite dans les cellules B9 à B23 est égale à 0. Dans mon tableau (feuille "Prévisions"), c'est bien le cas mais les lignes ne sont pas masquées.

Sub Test()
Dim c As Range
For Each c In [B9:B23]
If CStr(c) = "0" Then c.Rows.Hidden = True:
End Sub

Quelqu'un peut-il m'aider à résoudre cette difficulté ?

D'avance, merci de vos réponses.

Axos.
 

Pièces jointes

  • Fiche de suivi projet voyage sortie.xlsm
    176.8 KB · Affichages: 5

JHA

XLDnaute Barbatruc
Bonjour à tous,
Bonjour Job75,

Le code de @job75 te donne le bon résultat.
Tu peux mettre un autre bouton pour réafficher les lignes.

JHA
 

Pièces jointes

  • Fiche de suivi projet voyage sortie.xlsm
    181.5 KB · Affichages: 7

Axos

XLDnaute Nouveau
Merci JHA!

Mais je ne veux pas qu'elles soient affichées via un bouton. Je souhaite juste qu'elles n'apparaissent pas lorsque la cellule de la colonne B est à 0.

Peux-tu m'aider à cela?

D'avance, merci à toi!

Axos.
 

job75

XLDnaute Barbatruc
Bonsoir Axos,
Donc si on peut le faire sans bouton, automatiquement, je suis preneur...
S'agissant de formules on peut utiliser une macro Worksheet_Calculate :
VB:
Private Sub Worksheet_Calculate()
Dim c As Range
Application.EnableEvents = False 'désactive les évènements
For Each c In [B9:B23]
    c.Rows.Hidden = CStr(c) = "0"
Next
Application.EnableEvents = True 'réactive les évènements
End Sub
Avec toutes les formules en B9:B23 renvoyant zéro leurs lignes sont masquées.

Nota : sans les Application.EnableEvents les masquages/affichages créent l'évènement Calculate.

A+
 

Pièces jointes

  • Fiche de suivi projet voyage sortie.xlsm
    180.8 KB · Affichages: 5

Axos

XLDnaute Nouveau
Job75:

Merci à toi! C'est exactement ce que je veux pour le premier tableau. Mais je veux le faire aussi pour les deux tableaux suivants sur les cellules suivantes :

F38 à F52 et F59 à F73

Or, j'ai copié deux fois le code pour cela en modifiant juste les cellules concernées et les macros plantent.

Peux-tu m'aider à saisir ce qui m'échappe?

D'avance, je te remercie.

Axos.
 

job75

XLDnaute Barbatruc
Bonjour Axos,
Mais je veux le faire aussi pour les deux tableaux suivants sur les cellules suivantes :

F38 à F52 et F59 à F73
Sur le fichier que j'ai joint ce ne serait pas plutôt B29 à B43 et B51 à B65 ?
VB:
Private Sub Worksheet_Calculate()
Dim c As Range
Application.EnableEvents = False 'désactive les évènements
For Each c In [B9:B23,B29:B43,B51:B65]
    c.Rows.Hidden = CStr(c) = "0"
Next
Application.EnableEvents = True 'réactive les évènements
End Sub
A+
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…