Macro qui ne s'arrête plus (le programmme tourne en rond) [Résolu]

argaz01 37 Messages postés lundi 12 janvier 2009Date d'inscription 10 avril 2012 Dernière intervention - 3 juin 2010 à 14:21 - Dernière réponse : argaz01 37 Messages postés lundi 12 janvier 2009Date d'inscription 10 avril 2012 Dernière intervention
- 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)
Afficher la suite 

Votre réponse

2 réponses

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

Cordialement

Merci argaz01 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de argaz01
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 3 juin 2010 à 15:02
0
Merci
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
Commenter la réponse de cs_DARKSIDIOUS

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.