Viabilité de ma macro ?

Résolu/Fermé
geoffrey0258 Messages postés 4 Date d'inscription mardi 11 décembre 2012 Statut Membre Dernière intervention 3 avril 2013 - 3 avril 2013 à 16:40
geoffrey0258 Messages postés 4 Date d'inscription mardi 11 décembre 2012 Statut Membre Dernière intervention 3 avril 2013 - 3 avril 2013 à 19:55
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 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 711
3 avril 2013 à 19:27
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 mardi 11 décembre 2012 Statut Membre Dernière intervention 3 avril 2013
3 avril 2013 à 19:55
Très bien je vais tester ça demain au boulot je pense que ça marchera je comprend mon erreur. Merci beaucoup
0