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.