Bonjour,
Je suis perdu dans ta programmation. On va procéder par ordre.
1 A quoi sert ce fichier ?
2 Commence ta procédure par :
Sub Classes()
Dim a%, i%, j%, k%, e%, g%, m%, d%, w%, x%, y%, z%, s%, t%, r%, n%, o%, p%, q%, qq%, ee%, ii%
Application.ScreenUpdating = False
Range("F4:AI120").ClearContents
a = Cells(2, "E").Value
y = 25
z = 1
'-*- En remplacement de la boucle i
Cells(4, "G").Resize(1, y) = 0
'-*- pourquoi ne pas mettre des 0 directement
' en remplacement de la boucle k
Range("B3:B" & Range("B" & Rows.Count).End(xlUp).Row).Copy Range("C3")
Application.screenupdating = false
bloque momentanément la mise à jour écran ce qui va te faire déjà gagner du temps.
Cells(4, "G").Resize(1, y) = 0
ecrit une série de zéro sans avoir à faire une boucle (d'ailleurs pourquoi les effacer pour les réécrire aussitôt?)
Range("B3:B" & Range("B" & Rows.Count).End(xlUp).Row).Copy Range("C3")
cette ligne recopie en une fois la colonne au lieu de faire une boucle de recopie.
Ensuite au lieu de mettre des goto dans ton code pour faire une incrémentation de boucle préfère des
exit for
qui me semble feront la même chose.
Quand tu auras fait tout ça remets ton fichier en joint et on progressera doucement.
Explique bien ce que font les cinq boucles qui suivent.
@+