Boucle Excel

Résolu
manoelinho Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   -  
manoelinho Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   -
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

A voir également:

2 réponses

chossette9 Messages postés 4239 Date d'inscription   Statut Contributeur Dernière intervention   1 311
 
Bonjour,

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

Cordialement.
0
manoelinho Messages postés 43 Date d'inscription   Statut Membre Dernière intervention  
 
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
chossette9 Messages postés 4239 Date d'inscription   Statut Contributeur Dernière intervention   1 311
 
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
manoelinho Messages postés 43 Date d'inscription   Statut Membre Dernière intervention  
 
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
chossette9 Messages postés 4239 Date d'inscription   Statut Contributeur Dernière intervention   1 311
 
Parce qu'il ne faut pas utiliser Selection.Rows.Delete = True mais Selection.EntireRow.Delete comme je l'ai marqué au dessus :)
0
manoelinho Messages postés 43 Date d'inscription   Statut Membre Dernière intervention  
 
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
manoelinho Messages postés 43 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup. Ca fonctionne!!!!
0