Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Boucle et effacement de lignes

3 réponses
Avatar
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.

3 réponses

Avatar
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" a écrit dans le message de news:

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.
Avatar
Jacky
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" a écrit dans le message de news: jrunbn$ssf$
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" a écrit dans le message de news:

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.




Avatar
simulacre25
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.