Une erreur de débutant (j'y suis passé aussi), c'est de faire trop confiance à l'enregistreur de macro et de mettre des Select/Selection partout.
VBA est un langage objet, ce qui permet d'enchainer les objet pour faire un code plus simple.
Par exemple
1 2 3 4 5
| Range("G29:H30").Select
Selection.Copy
Sheets("Etiquettes (2)").Select
Range("A31:B31").Select
ActiveSheet.Paste |
Peut s'écrire plus simplement sans Select/Selection :
1 2
| Range("G29:H30").Copy
Sheets("Etiquettes (2)").Range("A31:B31").PasteSpecial |
Voir même encore plus rapidement ainsi.
Range("G29:H30").Copy Sheets("Etiquettes (2)").Range("A31")
Ca permet d'avoir un code plus simple et plus agréable à lire.
Ca permet aussi une exécution plus rapide et moins désagréable à l'affichage.
Sans compter les ActiveWindow.SmallScroll Down:=3 et les Application.CutCopyMode = False inutiles qui viennent le parasiter.
Du coup, ton code devient :
1 2 3 4
| Sheets("Etiquettes").Range("G29:H30").Copy Sheets("Etiquettes (2)").Range("A31")
Sheets("Etiquettes").Range("D29:E30").Copy Sheets("Etiquettes (2)").Range("A33")
Sheets("Etiquettes").Range("A29:B30").Copy Sheets("Etiquettes (2)").Range("A35")
Sheets("Etiquettes").Range("G27:H28").Copy Sheets("Etiquettes (2)").Range("A37") |
Ce qui est quand même plus facile à comprendre, non ?
Un conseil : l'enregistreur automatique de macro est un très bon outil, très intéressant pour te mettre sur la voie d'une solution.
Mais il ne faut pas utiliser directement le code qu'il produit. Il faut essayer de comprendre les éléments de ce code (en utilisant l'aide VBA intégrée à Excel) pour créer ton propre code, plus propre.
Partager