Viabilité de ma macro ?

Résolu
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

2 réponses

  1. Très bien je vais tester ça demain au boulot je pense que ça marchera je comprend mon erreur. Merci beaucoup
    0
    1. 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