Optimisation de code

MoiMajid

XLDnaute Nouveau
Bonjour à tous,

Voilà je suis en train de faire un travail d'automatisation de calcul où je suis sensé copier-coller plusieurs feuilles excel 13 pour etre exact faire des calcul et effacer avant de copier-coller la prochaine.Et voilà comment je le fais :

Worksheets("Prev par agence").Activate
Worksheets("Prev par agence").Cells.Select
Selection.ClearContents
Worksheets("Janvier").Select
Cells.Select
Selection.Copy
Worksheets("Prev par agence").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Ma question est comment puis je optimiser cette partie de code qui se répète 13 Fois (x2 car je fais 2 calcul différents)?

Merci d'avance pour vos réponses!
 

Pierrot93

XLDnaute Barbatruc
Re : Optimisation de code

Bonjour,

Ma question est comment puis je optimiser cette partie de code qui se répète 13 Fois (x2 car je fais 2 calcul différents)?

oui sans doute, en utilisant une boucle "for" voir une boucle "for each".... A noter les "select" et "activate" sont rarement utiles en vba, ne servent qu'à ralentir le code.... A voir également plutôt que de copier TOUTES les cellules de la feuille, préférable de faire la copie que de la plage de cellules concernée... sans plus de détails, difficile d'en dire plus...

bon après midi
@+
 

MoiMajid

XLDnaute Nouveau
Re : Optimisation de code

For Each ? je ne suis pas très calé en for each c'est pour cette raison que je ne l'ai pas utilisée, je ne suis pas sûr que l'on puisse executer un for each sur plusieurs feuille Excel.

Plusieurs feuilles Excel car il est demandé que les données Janvier à Décembre soient sur des feuilles différentes et dont les plages (Nombres de lignes et colonne varient) mais il est toujours possible de copier que la plage concernée merci pour le conseil.

Si les activate et select ne servent à rien pourquoi est ce que je me retrouve avec des erreurs d'execution lorsque je lance ma macro.

Merci en tout cas pour ta réponse rapide je vais réduire la plage de copie c'est deja ca !
 

Pierrot93

XLDnaute Barbatruc
Re : Optimisation de code

Re,

For Each ? je ne suis pas très calé en for each c'est pour cette raison que je ne l'ai pas utilisée, je ne suis pas sûr que l'on puisse executer un for each sur plusieurs feuille Excel.

sans problème, "For Each" est fait pour boucler sur une collection.... "worksheets" est bien la collection des feuilles de calcul d'un classeur... ci dessous un exemple de boucle....

Code:
Option Explicit
Sub test()
Dim ws As Worksheet
For Each ws In Worksheets
    MsgBox ws.Name
Next ws
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Optimisation de code

Re,

pour éviter les "select", tu pourrais remplacer ceci :
Code:
Worksheets("Prev par agence").Activate
Worksheets("Prev par agence").Cells.Select
Selection.ClearContents

par cela :
Code:
Worksheets("Prev par agence").Cells.ClearContents
 

Discussions similaires

Réponses
2
Affichages
165

Statistiques des forums

Discussions
312 612
Messages
2 090 227
Membres
104 453
dernier inscrit
benjiii88