Suppression lignes antérieures a une date

Résolu
emccbo Messages postés 1 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 9 septembre 2008 - 9 sept. 2008 à 11:28
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 - 9 sept. 2008 à 12:30
Bonjour,

Je débute avec le vba d'excel et je souhaiterais supprimer les lignes antérieures a une date spécifiée dans un tableau. Voici ce que j'ai fait :

Sub Suppression_Lignes_Anterieures_Date()


Dim x As Long
x = 5 'mes données commencent à la ligne 5
Do Until x = 300 'mon tableau fait 300 lignes


If Cells(x, 4).Value < Cells(1, 2).Value Then
    Rows(x).Delete
End If
Loop


End Sub

Le résultat est encourageant vu que ça supprime effectivement les premières lignes répondant au critère mais dés que j'arrive sur une ligne n'y répondant pas (donc que je souhaite conserver) il bloque sur le End If et ne traite pas les lignes suivantes.

Quelqu'un voit il d'où peut venir le problème ?
Merci de votre aide

2 réponses

LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
9 sept. 2008 à 12:30
je me demande m)eme s' il ne faut pas incrémenter (ou décrémenter) sous la condition :
Do While x >4
If Cells(x, 4).Value < Cells(1, 2).Value Then
    Rows(x).Delete
Else
   x=x-1
End If
Loop

A voir donc quelle ligne sera active après suppression.Celle d' en haut ou celle du bas.

<hr />

[] Ce qui va sans dire. va mieux en le disant.

<hr />
3
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
9 sept. 2008 à 12:05
Bonjour,
Beh tu oublies d' incrémenter ton x !
Dim x As Long
x = 5 'mes données commencent à la ligne 5
Do Until x = 300 'mon tableau fait 300 lignes

If Cells(x, 4).Value < Cells(1, 2).Value Then
    Rows(x).Delete
End If
 x=x+1
Loop

s' agigeant de suppression, il vaut mieux commencer par le bas.

Dim x As Long
x = 300 'mes données commencent à la ligne 5
Do While x >4
If Cells(x, 4).Value < Cells(1, 2).Value Then
    Rows(x).Delete
End If
x=x-1
Loop

<hr />

[] Ce qui va sans dire. va mieux en le disant.

<hr />
0
Rejoignez-nous