Rapidité des macros dans un gros fichier

Bonjour j'ai pondu un fichier pour un boulot mais il est un peu long d'utilisation.

Je ne suis pas très très fort en macro mais tous ce que je fais fonctionne. Mon gros problème c'est que parfois je fais 3fois le tour de france avant d'arriver à 1Km de chez moi...

En gros j'aurais besoin qu'on fluidifie les macros que j'ai construit.

Cordialement

Bonjour,

J'ai un peu de mal à comprendre ton fichier, mais si tu souhaites gagner en temps utilisation tu peux déjà utiliser :

application.screenupdating=False

Pour les modules, je penses que tu en as trop. Je pense que tu t'y retrouves et heureusement mais pour quelqu'un comme nous ( qui ne connaissons pas le projet ) il y en a partout. Essaye de centraliser les modules par fonction afin de réduire le nombre de module.

Et en plus ton code est presque pas du tout commenté, et là je pense que même toi si tu y reviens dans plusieurs mois tu devras passer un peu plus de temps pour te re comprendre, alors imagine pour nous !!!!!

Montre nous plutôt une parti de code que tu voudrais optimiser, plutôt qu'un fichier avec du code non indenté, non commenté.

Bonjour,

Quelques suggestions :

'En début de macro:
Application.ScreenUpdating = False 'Désactive l'affichage en temps réel
Application.Calculation = xlCalculationManual 'Désactive le recalcul des formules Excel à chaque modification
'En fin de macro:
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

L'instruction Select est INUTILE !

Sheets("QUESTIONS").Select
Range("E3").Select
ActiveCell.FormulaR1C1 = "1"
'Équivaut à :
Sheets("QUESTIONS").Range("E3") = 1
'Ou dans le cas d'une formule
Sheets("QUESTIONS").Range("E3").FormulaR1C1 = "=SUM(R1C1:R1C3)"

Lorsque tu manipules plusieurs fois de suite un même objet :

With Sheets("QUESTIONS")
    .Range("E3") = 1
    .Range("E4") = 2
    .Range("E5") = 3
    .Range("E6") = 4
End With

Pour simplifier la réalisation de tâches similaires :

'En reprenant l'exemple précédent
Dim i As Integer
For i = 1 To 5
   Sheets("QUESTIONS").Range("E" & i + 2) = i
Next i

Et d'une manière générale, pour la clarté, éviter de mettre pleins d'espaces inutiles et utiliser les tabulation (= retraits) pour mieux voir les structures imbriquées (exemple: instruction If...Then...Else dans une boucle For...Next elle-même dans une boucle For...Next). Et bien sûr commenter un peu le code pour ne pas se casser la tête à décrypter à chaque fois qu'on y revient.

ça roule merci pour ces conseils

Rechercher des sujets similaires à "rapidite macros gros fichier"