VBA - Masquer une ou deux ligne.s sur 3
Bonjour,
je souhaiterais masquer une ou deux lignes sur 3 suivant si mes résultats sont en monoplicat, duplicats ou triplicats.
En concret, si je mets :
- "1" dans la cellule H2 de mon feuillet "Feuil1", je voudrais masquer les lignes 4,5 7,8 10,11 ... jusqu'à 116 de mon feuillet "Feuil2"
- "2", je voudrais masquer les lignes 5, 8, 11, ...
- "3", aucun masquage.
Pour le moment, j'ai écrit ce code mais il ne fonctionne pas et fait planter excel au passage (boucle sans fin ?) :
Sub Masquer()
Dim Plicat As Range
Dim PlageRaw As Range
Dim I As Long
Set Plicat = Sheets("Feuil1").Range("H2")
Set PlageRaw = Sheets("Feuil2").Range(Cells(3, 2), Cells(116, 2))
For I = 1 To PlageRaw.Count
If Plicat = 3 Then PlageRaw(I).EntireRow.Select
I = I + Plicat
Next I
End Sub
Je pourrais utiliser la fonction Hidden en nommant toutes les lignes mais comme le masquage des lignes est régulier, je me dis qu'on doit pouvoir utiliser une boucle à la place.
Merci d'avance pour votre aide !
Bonjour et bienvenue sur le forum
Un essai à tester. Te convient-il ?
Bye !
Merci pour votre réponse !
J'ai une bonne et une moins bonne nouvelle. La moins bonne, c'est que votre code ne convient pas tout à fait à ce que je souhaite. Il ne permet de cacher qu'une seule ligne si le chiffre mis en H2 est "2". Mais je pourrais certainement me servir de la fonction step que je ne connaissais pas.
La bonne, c'est que j'ai réussi à créer un code qui fonctionne !
Peut-être existe-t'il un moyen de l'alléger un peu plus?
Sub Masquer()
Dim Plicat As Range
Dim PlageRaw As Range
Dim N As Long
Set Plicat = Sheets("Feuil1").Range("H2")
Set PlageRaw = Sheets("Feuil2").Range(Sheets("Feuil2").Cells(3, 2), Sheets("Feuil2").Cells(116, 2))
Sheets("Feuil2").Range("A3:A116").EntireRow.Hidden = True
For N = 1 To PlageRaw.Count
If Plicat = 1 Then PlageRaw(N).EntireRow.Hidden = False
If Plicat = 2 Then PlageRaw(N).EntireRow.Hidden = False
If Plicat = 2 Then PlageRaw(N + 1).EntireRow.Hidden = False
N = N + 2
Next N
If Plicat = 3 Then
Sheets("Feuil2").Range("A3:A116").EntireRow.Hidden = False
End If
End Sub