Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Problème de macro : suppression de lignes

aminmrini

XLDnaute Nouveau
Bonjour,

Je galère depuis presque un jour sur une macro pourtant pas très compliquée. J'aurais donc bien besoin de votre aide...

En fait je dois supprimer des lignes d'un tableau EXCEL, selon deux conditions. grosso modo j'ai une colonne intitulée ORDER DATE, une autre REQUEST DATE. Pour chaque ligne :

-si la différence entre ces deux dates est supérieure à 3, je supprime les lignes pour lesquelles la REQUEST DATE moins la date d'aujourd'hui donne un résultat supérieur à deux. (ce qui revient à ne garder que les request date égales à demain ou après demain)

-si la différence entre l'order date et la request date est inférieure ou égale à 3, je supprime les lignes pour lesquelles la différence entre l'order date et aujourd'hui est inférieure ou égale à 1.

J'espère m'être exprimé clairement. Voilà ce que j'ai codé, et qui ne marche pas (le programme ne supprime pas toutes les lignes remplissant ces critères) :

(la colonne cinq correspond aux order date et la sept aux request date)


Sub xxx()
Dim diff As Long

For i = 2 To Worksheets(1).UsedRange.Rows.Count
diff = DateDiff("d", Cells(i, 7).Value, Cells(i, 5).Value)
Cells(i, 15).Value = diff

If diff <= -3 And DateDiff("d", Cells(i, 7).Value, Now) < -2 Then
Rows(i).Delete

Else:
If DateDiff("d", Cells(i, 5).Value, Now) < 1 Then
Rows(i).Delete

End If
End If


Next i
End Sub


Ce programme est surement super mauvais et j'espère pouvoir compter sur votre aide.

Merci d'avance
 

Pierrot93

XLDnaute Barbatruc
Re : Problème de macro : suppression de lignes

Bonsoir,

quand tu supprimes des lignes il faut commencer par la fin et remonter ...

Code:
For i = Worksheets(1).UsedRange.Rows.Count To 2 Step -1

bonne soirée
@+
 

Discussions similaires

Réponses
6
Affichages
308
Réponses
7
Affichages
370
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…