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é ?
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.
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.
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