Boucle Excel

Résolu
Bonjour,

J'aimerai écrire une boucle pour que la macro masque une ligne entière si le contenue de la cellule en A est différent de "Manuel"

Sub exercice_boucles()

Dim i As Integer

For i = 1 To 20

If Range("A" & i).Value <> "Manuel" Then

Rows("1:1").Select
Selection.Rows.Hidden = True
End If
Next i

End Sub

Cette macro ne fonctionne pas. Elle supprime que la première ligne.
J'ai tenté de remplacer Rows("1:1").select
par Rows("i:i").select mais m'indique une erreur.

J'espère que vous pourrez m'aider.
Merci par avance

2 réponses

  1. Merci beaucoup. Ca fonctionne!!!!
    0
    1. Contributeur
      Bonjour,

      il suffit de mettre Rows(i) et non pas Rows("i:i").

      Cordialement.
      0
      1. Quelle écriture devrais-je passer si par exemple je voulais modifier la macro et qu'à la place de simplement cacher les lignes je voulais qu'elle les supprime.

        Quand je remplace Selection.Rows.Hidden = True par Selection.Rows.Delete = True
        ça ne fonctionne pas.
        0
      2. Contributeur
        pour supprimer il te faudra passer par Selection.EntireRow.Delete

        Par contre, si tu peux supprimer, ta boucle ne devra pas aller de 1 à 20, mais de 20 à 1. Car quand tu supprimes une ligne, la ligne du dessous vient prendre la place de la ligne supprimée.

        Avec une boucle de 1 à 20 tu risques de louper des lignes, ce que tu ne feras pas avec une boucle de 20 à 1.

        Cordialement.
        0
      3. Lorsque j'écris,

        Sub exercice_boucles()

        Dim i As Integer

        For i = 20 To 1

        If Range("AB" & i).Value <> "Manuel" Then

        Rows(i).Select
        Selection.Rows.Delete = True

        End If
        Next i

        End Sub

        il ne se passe rien
        aucune ligne ne s efface.
        0
      4. Contributeur
        Parce qu'il ne faut pas utiliser Selection.Rows.Delete = True mais Selection.EntireRow.Delete comme je l'ai marqué au dessus :)
        0
      5. j'ai l impression que le fait d écrire For i = 20 To 1 et non pas For i = 1 To 20 ne marche pas.
        de plus quand j'écris Sub exercice_boucles()

        Dim i As Integer

        For i = 1 To 20

        If Range("AB" & i).Value <> "Manuel" Then

        Rows(i).Select
        Selection.Rows.Delete = True

        End If
        Next i

        End Sub

        Excel me met comme message: erreur d exécution 1004 "Impossible de définir la propriété Delete dans la classe Range"
        0