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".

7cpp-dev.zip (1.00 Mo)

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

Rechercher des sujets similaires à "optimiser macro trop longue"