Réduire le temps d'éxécution d'un code de copier-coller

Bonjour à tous,
J'ai fait un code qui permet de sélectionner un fichier et de copier les données dans une case en particulier.
Mon code marchait super, jusqu'à que l'export que j'essaye de copier voit trop gros, du coup il met 5 min a s'importer.. Au lieu de 2 sec de façon manuel.

Quelqu'un aurait une idée pour réduire le temps d’exécution ?
Merci d'avance :)

Voici le code :

image

Bonjour, puisque vous utiliser la commande past spécial --> valeur.

Vous ne souhaitez donc que récupérer les valeurs. Dans ce cas un copié coller ne sert pas à grand chose.

- Vous devez déterminer la taille de la plage d'origine puis en indiquant la plage de destination vous réalisez une simple égalité.

Exemple :

Worksheets("FEUILLEDESTINATION").Range("D2:G13).Value =Worksheets("FEUILLEORIGINE").Range("A1:C12).Value

Celà revient au même qu'un copié collé valeur puisque vous écrivez

"Cellules de la plage destination sont égales à cellules de la plage origine.

Bonjour, salut Xmenpl !

@Xmenpl : je plussoie ta réponse !

En complément, les .Select et .Activate sont inutiles si les classeurs et feuilles auxquels on se réfère sont précisés. Leur retrait accélère le code, car VBA n'a pas besoin de "voir" et "manipuler" ces objets pour interagir avec eux comme on le ferais en tant qu'utilisateur.

Si au moins l'un des classeurs contient des formules, l'instruction Application.Calculation = xlCalculationManual en début de macro et Application.Calculation = xlCalculationAutomatic en fin de macro accélèrent également l'exécution de la macro.

La macro ETIRFORM est peut-être aussi à optimiser selon son contenu.

Bonjour à vous deux,
déjà merci pour vos réponses :)
Malheureusement je ne connais pas exactement le nombre de lignes (car c'est un export qui varie), le nom du fichier d'origine varie également :/

...Malheureusement je ne connais pas exactement le nombre de lignes (car c'est un export qui varie)...

Ce n'est pas un problème, exemple.

Une fois déterminé, le nombre de ligne peut être utilisé pour définir une plage variable, exemple :

Sheets("NomFeuille").Range("A1:A" & DL)
Rechercher des sujets similaires à "reduire temps execution code copier coller"