Je suis novice en VBA et je cherche à masquer des lignes entières sous conditions.
Je m’explique :
Je souhaiterai que les lignes situées entre la colonne B et BJ soient cachés dès lors que la valeur de toute les cellules de la ligne sont égales à « non ».
J’ai tenté le programme suivant :
Sub hide()
Dim Row As Object
If EntireRow.Value = « non » Then
Columns(« B:BJ »).EntireColumn.Hidden = True
End If
End Sub
Pas très clair !.. Tu parles de masquer des lignes et ton code masque des colonnes…
Si tu veux masquer les lignes dont toutes les cellules des colonnes B à BJ valent « non », essaie comme ça :
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim TEST As Boolean
Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
DL = O.Cells(Application.Rows.Count, "B").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne B de l'onglet O (colonne à adapter à ton cas)
TV = O.Range("B1:BJ" & DL) 'définit la tableau des valeurs TV
For I = 1 To UBound(TV, 1) 'boucle 1 : sur toutes les lignes I du tableau des valeur TV
TEST = False 'réinitialise la variable TEST
For J = 1 To UBound(TV, 2) 'boucle 2 sur toutes les colonnes J du tableau des valeurs TV
If UCase(TV(I, J)) <> "NON" Then 'condition si la donnée ligne I colonne J de TV ( convertie en majuscules) est différente de "NON"
TEST = True 'redéfinit la variable TEST
Exit For 'sort de la boucle 2
End If 'fin de de la condition
Next J 'prochaine colonne de la boucle 2
O.Rows(I).Hidden = TEST 'affiche/masque la ligne I en fonction de la variable TEST
Next I 'prochaine ligne de la boucle 1
End Sub