Boucle qui ne se termine pas...

blord

XLDnaute Impliqué
Bonjour à tous...

J'aimerais utiliser le code suivant pour supprimer toutes les lignes qui contiennent une valeur donnée :

Sub Delete()

Dim Var As String
Dim MotTrouvé
Var = "toto"

Set MotTrouvé = Range("A:A").Find(What:=Var)
MotTrouvé.Select

Do While Not MotTrouvé Is Nothing

ActiveCell.EntireRow.Select
Selection.Delete Shift:=xlUp
Loop

End Sub

J'aimerais utiliser ce code car il trouve directement et rapidement "toto" dans la colonne A et supprime la ligne. Ça évite de vérifier la valeur de chacune des cellules et ainsi avoir une macro qui est très longue lorsqu'elle boucle sur 30 000 cellules pour vérifier si la valeur de chaque cellule est "toto" et si oui, supprimer la ligne.

Le problème avec mon code, c'est qu'il ne s'arrête pas une fois toutes les lignes avec "toto" sont supprimées.

Merci à tous pour vos bons conseils !

Blord
 
C

Compte Supprimé 979

Guest
Re : Boucle qui ne se termine pas...

Salut Blord,

Le problème avec mon code, c'est qu'il ne s'arrête pas une fois toutes les lignes avec "toto" sont supprimées.
Je suis même étonné que seul les lignes avec "toto" soient supprimées !?
Pour moi, vu ton premier code, c'est la première avec "toto" et toutes les suivantes !

Une fois la ligne trouvée et supprimée, il faut effectuer une nouvelle recherche ...

Voici le code ;)
Code:
Sub Delete()
Dim Var As String, MotTrouvé
Var = "toto"
On Error Resume Next
' Trouver la première occurence, si existe
Set MotTrouvé = Range("A:A").Find(What:=Var)
MotTrouvé.Select
' Supprimer la ligne si mot trouvé
Do While Not MotTrouvé Is Nothing
  ActiveCell.EntireRow.Select
  Selection.Delete Shift:=xlUp
  'Cherche la prochaine occurence
  Set MotTrouvé = Range("A:A").Find(What:=Var)
  MotTrouvé.Select
Loop
On Error GoTo 0
End Sub

A+
 

Discussions similaires

Réponses
6
Affichages
265
Réponses
2
Affichages
314

Statistiques des forums

Discussions
314 863
Messages
2 113 657
Membres
111 932
dernier inscrit
remixxx