raccourci temps macro

T

Ti

Guest
sans qu'on voie ta macro, impossible de te répondre !
 
T

Ti

Guest
alors déjà, pas facile de se faire une idée de ce à quoi peut servir ta macro sans les Forms associés etc. Quelques conseils quand même :

Crée des variables Worksheet et Range qui qualifieront tes feuilles et tes plages.
Ainsi par exemple :
au lieu de
Worksheets(ComboBox1.Value).Cells(der1 + 2, 2)
tu fais:
Dim Ws as worksheet
set Ws = Worksheets(ComboBox1.Value)
Ensuite tu travailles toujours avec cette variable : gros gain de temps

idem pour la plage :
Dim Plage as Range
Set Plage = Ws.Cellls(Der1,1)

puis :

With Plage
IF .Value = Plage2.Value then etc
...
End With

chaque fois que tu le peux, quand tu fais toute une série de tests, n'écris pas :

If condition1 Then
Action1
End if
If Condition2 then
Action2
End If

bien souvent ces tests s'excluent mutuellement, c'est à dire que tu sais que si le test 1 est vrai, le deuxième sera faux, donc tu as tout intérêt à écire :

If condition1 Then
Action1
ElseIf Condition2 then
Action2
End If

Mine de rien, là encore tu gagneras un temps considérable quand tu multiplies les tests.


Dernier conseil et pas des moindres. Ta macro "comparaison" est 20 fois trop longue ! C'est comme à l'école, on apprend : dans une phrase je dis une chose. Là c'est pareil : une procédure, une action. Ta macro est impossible à débuguer parce que quand on arrive à la fin, on ne sait plus ce qu'elle faisait au début. Essaie donc de scinder toutes les boucles en autant de procédures différentes. Tu y gagneras en clarté, ensuite il te sera bien plus facile de voir ce qui cloche et quelle est la portion la plus lente etc.
 
S

STephane

Guest
bonjour


mets application.screenupdating=false dès le début de ta macro si possible

cela dépend des cas, mais tu n'est pas forcé de sélectionner des objets pour faire des opérations dessus

Worksheets(ComboBox1.Value).range("A1").columns("A:B").entirecolumn.insert

tu pourras te base sur le même principe pour ton insertion avec ta cellule variable (columns("A:D") pour insérer 4 colonnes)

bye
 

Statistiques des forums

Discussions
313 912
Messages
2 103 510
Membres
108 684
dernier inscrit
Laetoun