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 ?

4classeur1-v1.xlsm (15.11 Ko)

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
Rechercher des sujets similaires à "vba masquer deux ligne"