Voilà mon probleme
j'ai une boucle FOR...NEXT
cette boucle insere des lignes dans un tableau
la condition finale se modifie donc au fur et à mesure de l'avancement du tableau mais le FOR NEXT ne se modifie pas
exemple ci dessous
For numligne = 2 To Lastli 'boucle pour toutes les lignes
Lastli = Range("a2").End(xlDown).Row 'recalcule nouvelle longueur du tableau
If Range("AB" & numligne).Value = "LAST" Then 'teste valeur cellule
Range(Rows(numligne + 1), Rows(numligne + 1)).Select 'insere une ligne
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End If
Next numligne
dans le code ci dessus comme j'insere des lignes je pensais recalculer dans ma boucle la valeur de lastli
mais ceci ne fonctionne pas
Bonjour à tous
Denis , dans ta boucle lors de ta condition si elle s'avère , tu fais un "exit for" après avoir inséré ta ligne,
ensuite après le next tu recalcules ta lastli ( sous un autre nom) et tu compares à celle du début
si # tu reviens au début ( par un goto avec label) et tu assignes ton lastli à la nouvelle valeur
ex: derlig =Range("a2").End(xlDown).Row ,
if derlig <> lastli then goto deb
'retour au début
deb:
lastli= derlig
A toi d'adapter
Dim L As Long
For L = Range("A2").End(xlDown).Row To 2 Step -1
If Cells(L, "AB").Value = "LAST" Then
Rows(L + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End If
Next L
Merci dranreb
cela fonctionne bien
en effet passer en revue toutes les lignes en partant de la fin permet de contourner l'augmentation du nombre de lignes
Mais comment ne pas y avoir pensé : suis je bete !
Merci encore pour votre contribution