Boucle et effacement de lignes

Le
simulacre25 Hors ligne
Bonjour,

Je souhaite tester mes données présentes en colonne A et effacer les lignes qui ne correspondent pas à mes critères.

For i = 1 To n 'n = mon nb de valeur en col A
mystring = Range("A" & i).Value
If Left(mystring, 3) <> "210" Then
Range(A" & i).EntireRow.Clear
End If
Next

Mon problème, c'est que chaque fois que j'efface une ligne, i s'incrémente d'1 et la ligne suivante est devenue la ligne correspondant au i précédent et n'est pas traitée par la boucle.

Et là c'est moi qui boucle pour trouver la solution.

Merci de votre aide.
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacky
Le #24581951
Bonjour,

Et là c'est moi qui boucle pour trouver la solution.


En commençant par la fin........
'----------------
Sub jj()
Dim DerniereLigne As Long
DerniereLigne = Cells(Rows.Count, 1).End(xlUp).Row 'mon nb de valeur en colA
For i = DerniereLigne To 1 Step -1
If Left(Range("A" & i).Value, 3) <> "210" Then
Rows(i).Delete
End If
Next
End Sub
'---------------

--
Salutations
JJ


"simulacre25"
Bonjour,

Je souhaite tester mes données présentes en colonne A et effacer les lignes qui
ne correspondent pas à mes critères.

For i = 1 To n 'n = mon nb de valeur en col
A
mystring = Range("A" & i).Value
If Left(mystring, 3) <> "210" Then
Range(A" & i).EntireRow.Clear
End If
Next

Mon problème, c'est que chaque fois que j'efface une ligne, i s'incrémente d'1
et la ligne suivante est devenue la ligne correspondant au i précédent et n'est
pas traitée par la boucle.

Et là c'est moi qui boucle pour trouver la solution.

Merci de votre aide.
Jacky
Le #24581931
Re...

S'il ne fallait par supprimer la ligne
Remplacer "Rows(i).Delete"
par
Rows(i).ClearContents
pour effacer le contenu

ou par
Rows(i).Clear
pour effacer contenu et format

--
Salutations
JJ


"Jacky"
Bonjour,

Et là c'est moi qui boucle pour trouver la solution.


En commençant par la fin........
'----------------
Sub jj()
Dim DerniereLigne As Long
DerniereLigne = Cells(Rows.Count, 1).End(xlUp).Row 'mon nb de valeur en colA
For i = DerniereLigne To 1 Step -1
If Left(Range("A" & i).Value, 3) <> "210" Then
Rows(i).Delete
End If
Next
End Sub
'---------------

--
Salutations
JJ


"simulacre25"
Bonjour,

Je souhaite tester mes données présentes en colonne A et effacer les lignes qui
ne correspondent pas à mes critères.

For i = 1 To n 'n = mon nb de valeur en col
A
mystring = Range("A" & i).Value
If Left(mystring, 3) <> "210" Then
Range(A" & i).EntireRow.Clear
End If
Next

Mon problème, c'est que chaque fois que j'efface une ligne, i s'incrémente d'1
et la ligne suivante est devenue la ligne correspondant au i précédent et n'est
pas traitée par la boucle.

Et là c'est moi qui boucle pour trouver la solution.

Merci de votre aide.




simulacre25 Hors ligne
Le #24582031
Le jeudi 21 Juin 2012 à 09:51 par simulacre25 :
Bonjour,

Je souhaite tester mes données présentes en colonne A et effacer
les lignes qui ne correspondent pas à mes critères.

For i = 1 To n 'n = mon nb de valeur en col
A
mystring = Range("A" & i).Value
If Left(mystring, 3) <> "210" Then
Range(A" & i).EntireRow.Clear
End If
Next

Mon problème, c'est que chaque fois que j'efface une ligne, i
s'incrémente d'1 et la ligne suivante est devenue la ligne correspondant
au i précédent et n'est pas traitée par la boucle.

Et là c'est moi qui boucle pour trouver la solution.

Merci de votre aide.


Merci Jacky,

Effectivement, partir du bas était logique, sûrement trop pour moi.

Cela fonctionne.

Encore merci et bonne journée.
Publicité
Poster une réponse
Anonyme