Macro qui ne s'arrête plus (le programmme tourne en rond)

Résolu
argaz01 Messages postés 37 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 10 avril 2012 - 3 juin 2010 à 14:21
argaz01 Messages postés 37 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 10 avril 2012 - 3 juin 2010 à 16:04
Bonjour,

Je viens d'élaborer une macro pour trier un tableau de 2 colonnes (SGP) et (+/-value) et faire la somme des doublons: le problème c'est que ma macro tourne sans fin (elle ne s'arrête pas tout simplement) et quand je fait echappe pour l'arrêter elle ne garde plus que les 2 premières lignes de mon tableau. Voici la macro en question:
Sub RecupColonnesVersNlleFeuille()
Dim ligne As Integer
ligne = 20
Do

If Cells(ligne, 19) Cells(ligne + 1, 19) And Cells(ligne, 20) Cells(ligne + 1, 20) Then
Cells(ligne, 21) = Cells(ligne, 21) + Cells(ligne + 1, 21)
Cells(ligne + 1, 21).EntireRow.Delete Shift:=xlUp
Else
ligne = ligne + 19
End If
Loop While Cells(ligne, 1) <> ""

End Sub


PS: le tableau commence à la ligne 18 (les titres des 2 colonnes)

2 réponses

argaz01 Messages postés 37 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 10 avril 2012
3 juin 2010 à 16:04
Merci c'est résolu.

Cordialement
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
3 juin 2010 à 15:02
Salut,

Il te manque un incrément dans ton premier if : s'il passe dans ton if, il y rentrera à chaque tour de boucle suivant, donc :
Sub RecupColonnesVersNlleFeuille()
Dim ligne As Integer
ligne = 20
Do

If Cells(ligne, 19) Cells(ligne + 1, 19) And Cells(ligne, 20) Cells(ligne + 1, 20) Then
Cells(ligne, 21) = Cells(ligne, 21) + Cells(ligne + 1, 21)
Cells(ligne + 1, 21).EntireRow.Delete Shift:=xlUp
ligne = lign + 1
Else
ligne = ligne + 19
End If
Loop While Cells(ligne, 1) <> ""

End Sub
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
Rejoignez-nous