Boucle For Each à commencer par la fin

Chasse

XLDnaute Occasionnel
Bonjour le Forum

J’ai une boucle For Each que j’aimerais commencer par la fin

Code:
Dim rg As Range  
Set rg = ws1.Range("M1:M45")

For Each c In rg     
If c = "X" Then
instructions
If InStr(1, "719119 719121 719126", ws1.Range("B" & c.Row)) > 0 Then  wsPl.Range("insertion").Offset(-1, 0).Insert
wsPl.Range("datepayement") = sDate
    rg3 = c.Offset(0, -12) 'N° ordre TMS
    rg3.Offset(0, 1) = c.Offset(0, -9) 'Expéditeur
    rg3.Offset(0, 2) = c.Offset(0, -8)  'CP
    rg3.Offset(0, 3) = c.Offset(0, -7)  'Localité
etc.etc
A la fin des instruction je supprime la ligne
Code:
ws1.Range("A" & c.Row).EntireRow.Delete Shift:=xlUp
avec cette macro si j’ai plusieurs lignes contigüe a traiter la macro va chaque fois en louper une sur 2.
Normal si ligne a sup. est la 9ième la ligne 10 devient la 9ième et ainsi de suite
la solution serai de commencer la boucle par la dernière ligne.

et c’est là que j’aurais besoin de votre aide pour modifier cette macro.

d’avance mille Merci
 

Dranreb

XLDnaute Barbatruc
Re : Boucle For Each à commencer par la fin

Bonjour
Comme ça à peu près:
VB:
Dim Rg As Range, Cel As Range, L As Long
Set Rg = ws1.Range("M1:M45")
For L = Rg.Rows.Count To 1 Step -1
Set Cel = Rg.Rows(L)
If Cel.Value = "X" Then
instructions
If InStr(1, "719119 719121 719126", ws1.Range("B" & L)) > 0 Then wsPl.Range("insertion").Offset(-1, 0).Insert
wsPl.Range("datepayement") = sDate
rg3 = Cel.Offset(0, -12) 'N° ordre TMS
rg3.Offset(0, 1) = Cel.Offset(0, -9) 'Expéditeur
rg3.Offset(0, 2) = Cel.Offset(0, -8) 'CP
rg3.Offset(0, 3) = Cel.Offset(0, -7) 'Localité
'etc.etc
'A la fin des instruction je supprime la ligne
Cel.EntireRow.Delete Shift:=xlUp
À+

Bonjour pierrejean
 

tototiti2008

XLDnaute Barbatruc
Re : Boucle For Each à commencer par la fin

Bonjour Chasse, Bonjour PierreJean, Bonjour Dranreb,

une autre variante, proche de celle de Bernard

Code:
Dim Rg As Range, Cel As Range, L As Long
Set Rg = ws1.Range("M1:M45")
For L = Rg.Count To 1 Step -1
If Rg.Item(L).Value = "X" Then
instructions
 

Discussions similaires

Statistiques des forums

Discussions
312 330
Messages
2 087 335
Membres
103 523
dernier inscrit
mounir2025