Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

vitesse d'execution d'une macro

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

eduraiss

XLDnaute Accro
bonjour le forum.

j'ai une macro qui me permet sur deux feuille différente de recuperer des codes mais aussi des valeurs si les cellules de la ligne 80 sont >0.
mon problème est que sa vitesse d'execution est relativement longue
voici la macro
Private Sub Worksheet_Activate()
Dim nbMatieres As Integer, cpt1 As Integer, org As Variant, dest As Variant

'Application.ScreenUpdating = False


Set org = Sheets("calcul besoin")
Set dest = Sheets("besoin")
nbMatieres = org.Range("IV80").End(xlToLeft).Column
dest.Range("a3:j200").ClearContents

For cpt1 = 8 To nbMatieres
If org.Cells(80, cpt1) > 0 Then
org.Cells(80, cpt1).Copy
dest.Range("c65536").End(xlUp)(2).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False _

org.Cells(6, cpt1).Copy
dest.Range("b65536").End(xlUp)(2).PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=False

org.Cells(5, cpt1).Copy
dest.Range("a65536").End(xlUp)(2).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False _
'eclatement semaine


org.Cells(82, cpt1).Copy
dest.Range("d65536").End(xlUp)(2).PasteSpecial Paste:=xlValues

org.Cells(83, cpt1).Copy
dest.Range("e65536").End(xlUp)(2).PasteSpecial Paste:=xlValues

org.Cells(84, cpt1).Copy
dest.Range("f65536").End(xlUp)(2).PasteSpecial Paste:=xlValues

org.Cells(85, cpt1).Copy
dest.Range("g65536").End(xlUp)(2).PasteSpecial Paste:=xlValues

org.Cells(86, cpt1).Copy
dest.Range("h65536").End(xlUp)(2).PasteSpecial Paste:=xlValues

org.Cells(87, cpt1).Copy
dest.Range("i65536").End(xlUp)(2).PasteSpecial Paste:=xlValues

org.Cells(88, cpt1).Copy
dest.Range("j65536").End(xlUp)(2).PasteSpecial Paste:=xlValues



End If
Next cpt1



Application.CutCopyMode = False

End Sub
peut -on accelerer sa vitesse

merci de votre aide

a+
 
Re : vitesse d'execution d'une macro

Bonsoir,

Probablement, oui.

Mais ça serait plus simple avec un fichier demo(de manière à ne pas devoir se retaper toutes les saisies avant de faire les essais...)

A te lire
 
Re : vitesse d'execution d'une macro

bonsoir Luki et merci pour ta réponse.

je viens de faire le fichier et la la macro va relativement vite, par contre sur mon fichier qui est trop lourd pour être envoyer il lui faut au moin 90 seconde avant d'avoir le résultat

voici le fichier

a+
 

Pièces jointes

Re : vitesse d'execution d'une macro

Re,

Dans la mesure où (je n'ai pas vérifié chaque ligne de code) tu veux ramener simplement des valeurs dans ta feuille besoin, pas la peine de faire du copier coller.

Ceci:
org.Cells(82, cpt1).Copy
dest.Range("d65536").End(xlUp)(2).PasteSpecial Paste:=xlValues

peut être remplacé par:
dest.Range("d65536").End(xlUp)(2).value=org.Cells(82, cpt1).value

voire même par:
dest.Range("d65536").End(xlUp)(2)=org.Cells(82, cpt1)

Tu devrais gagner en vitesse encore.

Tu peux aussi gagner en utilisant es groupe WITH qui permet au code de référencer l'objet une seule fois donc aller plus vite:

With org

.cells(82,cpt1)
.cells(n,cpt1
.etc.....

end with

Voilà.

Bonne soirée
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
791
Réponses
17
Affichages
2 K
Réponses
11
Affichages
704
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…