Optimiser une macro trop longue
Bonjour le forum,
j'ai un souci avec une macro qui est trop longue pour s'exécuter. J'ai écrit les éléments suivants :
If Worksheets("RESTITUTION AVANCE SUITE DC4").Range("R27") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("U35") Then
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("V35") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("V35") + Worksheets("RESTITUTION AVANCE SUITE DC4").Range("I48").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("W35") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("W35") + Worksheets("RESTITUTION AVANCE SUITE DC4").Range("K48").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("Y35") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("I40").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("Z35") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("K40").Value
End If
If Worksheets("RESTITUTION AVANCE SUITE DC4").Range("R27") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("U36") Then
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("V36") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("V36") + Worksheets("RESTITUTION AVANCE SUITE DC4").Range("I48").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("W36") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("W36") + Worksheets("RESTITUTION AVANCE SUITE DC4").Range("K48").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("Y36") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("I40").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("Z36") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("K40").Value
End If
If Worksheets("RESTITUTION AVANCE SUITE DC4").Range("R27") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("U37") Then
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("V37") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("V37") + Worksheets("RESTITUTION AVANCE SUITE DC4").Range("I48").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("W37") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("W37") + Worksheets("RESTITUTION AVANCE SUITE DC4").Range("K48").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("Y37") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("I40").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("Z37") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("K40").Value
End If
If Worksheets("RESTITUTION AVANCE SUITE DC4").Range("R27") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("U38") Then
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("V38") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("V38") + Worksheets("RESTITUTION AVANCE SUITE DC4").Range("I48").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("W38") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("W38") + Worksheets("RESTITUTION AVANCE SUITE DC4").Range("K48").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("Y38") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("I40").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("Z38") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("K40").Value
End If
If Worksheets("RESTITUTION AVANCE SUITE DC4").Range("R27") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("U39") Then
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("V39") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("V39") + Worksheets("RESTITUTION AVANCE SUITE DC4").Range("I48").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("W39") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("W39") + Worksheets("RESTITUTION AVANCE SUITE DC4").Range("K48").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("Y39") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("I40").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("Z39") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("K40").Value
End If
If Worksheets("RESTITUTION AVANCE SUITE DC4").Range("R27") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("U40") Then
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("V40") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("V40") + Worksheets("RESTITUTION AVANCE SUITE DC4").Range("I48").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("W40") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("W40") + Worksheets("RESTITUTION AVANCE SUITE DC4").Range("K48").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("Y40") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("I40").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("Z40") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("K40").Value
End If
If Worksheets("RESTITUTION AVANCE SUITE DC4").Range("R27") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("U41") Then
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("V41") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("V41") + Worksheets("RESTITUTION AVANCE SUITE DC4").Range("I48").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("W41") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("W41") + Worksheets("RESTITUTION AVANCE SUITE DC4").Range("K48").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("Y41") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("I40").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("Z41") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("K40").Value
End If
If Worksheets("RESTITUTION AVANCE SUITE DC4").Range("R27") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("U42") Then
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("V42") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("V42") + Worksheets("RESTITUTION AVANCE SUITE DC4").Range("I48").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("W42") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("W42") + Worksheets("RESTITUTION AVANCE SUITE DC4").Range("K48").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("Y42") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("I40").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("Z42") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("K40").Value
End If
If Worksheets("RESTITUTION AVANCE SUITE DC4").Range("R27") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("U43") Then
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("V43") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("V43") + Worksheets("RESTITUTION AVANCE SUITE DC4").Range("I48").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("W43") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("W43") + Worksheets("RESTITUTION AVANCE SUITE DC4").Range("K48").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("Y43") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("I40").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("Z43") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("K40").Value
End If
If Worksheets("RESTITUTION AVANCE SUITE DC4").Range("R27") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("U44") Then
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("V44") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("V44") + Worksheets("RESTITUTION AVANCE SUITE DC4").Range("I48").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("W44") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("W44") + Worksheets("RESTITUTION AVANCE SUITE DC4").Range("K48").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("Y44") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("I40").Value
Worksheets("RESTITUTION AVANCE SUITE DC4").Range("Z44") = Worksheets("RESTITUTION AVANCE SUITE DC4").Range("K40").Value
End If
la structure de la commande (redondante ?) est toujours la même. Ici c'est un tout petit morceau car le dernier boc de If/end If porte sur la cellule U118. Je teste la valeur de la cellule R27 par rapport au contenu de la cellule U35 (puis U36, puis 37.....jusqu'à U118) pour ensuite réaliser des copier-coller de valeur dans des cellules (ex pourR27=35, je colle I48 en V35; K48 en W35; I40 en Y77 et K40 en Z77 et ainsi suite en décalant de 1 vers le bas à chaque incrémentation de U35.
Je ne sais pas comment optimiser cette procédure pour qu'elle se lance.
cette macro est située dans le user form n°3 du fichier ci-joint. désolé par avance c'est un peu (beaucoup) le fouilli ! :(
la macro se déclenche en sélectionnant du contenu dans la cellule D27 de la feuille "restitution suite DC4".
pouvez vous m 'aider ? merci ! :)
Bonjour,
Sans avoir regardé ton fichier ...
Un essai ...
Dim X As Integer
With Worksheets("RESTITUTION AVANCE SUITE DC4")
For X = 35 To 44
If .Range("R27") = .Range("U" & X) Then
.Range("V" & X) = .Range("V" & X) + .Range("I48").Value
.Range("W" & X) = .Range("W" & X) + .Range("K48").Value
.Range("Y" & X) = .Range("I40").Value
.Range("Z" & X) = .Range("K40").Value
End If
Next X
End With
ric
formidable et rapide
un grand merci ric
ric