Viabilité de ma macro ?

Résolu
geoffrey0258 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
geoffrey0258 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour voici une macro que j'ai réalisée pour copier des éléments d'un tableau à un autre. Sachant que c'est deux tableau ont une colonne en commun colonne 16 pour la page 1 et colonne 18 pour la page 2, et sachant également que la page 2 a été mise à jour sur la page 1 donc toutes les infos ne sont pas forcément identiques. J'ai lancé la macro sur un ordi protable du bureau un vieux toshiba avec xp. J'ai attendu bien une demi heure et il est toujours en cours d'exécution. Vous pensez que l'ordi est trop vieux pour un calcul si long ? ou alors je me suis trompé dans la macro et j'ai fait quelque chose comme une boucle interminable ?

Sub copiecolle()
l = 2
While Worksheets(2).Cells(l, 18).Value <> ""
a = 2
While Worksheets(1).Cells(a, 16).Value <> ""
If Worksheets(2).Cells(l, 18).Value = Worksheets(1).Cells(a, 16).Value Then
Worksheets(2).Cells(l, 17).Value = Worksheets(1).Cells(a, 15).Value
Worksheets(2).Cells(l, 16).Value = Worksheets(1).Cells(a, 2).Value
Worksheets(2).Cells(l, 15).Value = Worksheets(1).Cells(a, 1).Value
Worksheets(2).Cells(l, 14).Value = Worksheets(1).Cells(a, 14).Value
Else: a = a + 1
End If
Wend
l = l + 1
Wend
End Sub


Merci bien
A voir également:

2 réponses

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
Bonjour,

Incrementation de a en cause

Sub copiecolle()
    l = 2
    While Worksheets(2).Cells(l, 18).Value <> ""
        a = 2
        While Worksheets(1).Cells(a, 16).Value <> ""
            If Worksheets(2).Cells(l, 18).Value = Worksheets(1).Cells(a, 16).Value Then
                Worksheets(2).Cells(l, 17).Value = Worksheets(1).Cells(a, 15).Value
                Worksheets(2).Cells(l, 16).Value = Worksheets(1).Cells(a, 2).Value
                Worksheets(2).Cells(l, 15).Value = Worksheets(1).Cells(a, 1).Value
                Worksheets(2).Cells(l, 14).Value = Worksheets(1).Cells(a, 14).Value
            End If
            a = a + 1
        Wend
        l = l + 1
    Wend
End Sub


Bonne suite
1
geoffrey0258 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Très bien je vais tester ça demain au boulot je pense que ça marchera je comprend mon erreur. Merci beaucoup
0