OVH Cloud OVH Cloud

Macro lourde de copier coller valeur et formules

6 réponses
Avatar
AlbanT
Bonjour,

J'ai écrit une Macro qui prend plusieurs secondes à tourner et visuellement on voit les changements (même rapides) de feuille. Je voulais savoir si quelqu'un savait comment optimiser la Macro ci-dessous. Je vous remercie d'avance.

Alban

Sub Validation()
Dim ligne As Integer
Sheets("Visualization").Select
ligne = Range("AF3")
Range("AB16").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Boutiques").Select
Range("BE" & ligne).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Sheets("Visualization").Select
Range("AD16").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Boutiques").Select
Range("BG" & ligne).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Sheets("Visualization").Select
Range("AB22").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Boutiques").Select
Range("BP" & ligne).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Sheets("Visualization").Select

Range("AG7").Select
Selection.Copy
Range("AB16").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Range("AG9").Select
Selection.Copy
Range("AD16").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Range("AG22").Select
Selection.Copy
Range("AB22").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Range("AH4") = Range("AG3")

Range("I4").Select
Selection.Copy

End Sub

6 réponses

Avatar
Jacky
Bonjour,

Quelque chose comme ceci...
'-------------
Sub Validation()
With Sheets("Visualization")
ligne = .Range("AF3").Value
Sheets("Boutiques").Range("BE" & ligne) = .Range("AB16")
Sheets("Boutiques").Range("BG" & ligne) = .Range("AD16")
Sheets("Boutiques").Range("BP" & ligne) = .Range("AB22")
.Range("AB16") = .Range("AG7")
.Range("AD16") = .Range("AG9")
.Range("AB22") = .Range("AG22")
.Range("AH4") = .Range("AG3")
End With
End Sub
'----------------

--
Salutations
JJ


"AlbanT" a écrit dans le message de news:

Bonjour,

J'ai écrit une Macro qui prend plusieurs secondes à tourner et visuellement on
voit les changements (même rapides) de feuille. Je voulais savoir si quelqu'un
savait comment optimiser la Macro ci-dessous. Je vous remercie d'avance.

Alban

Sub Validation()
Dim ligne As Integer
Sheets("Visualization").Select
ligne = Range("AF3")
Range("AB16").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Boutiques").Select
Range("BE" & ligne).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:úlse, Transpose:úlse

Sheets("Visualization").Select
Range("AD16").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Boutiques").Select
Range("BG" & ligne).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:úlse, Transpose:úlse

Sheets("Visualization").Select
Range("AB22").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Boutiques").Select
Range("BP" & ligne).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:úlse, Transpose:úlse

Sheets("Visualization").Select

Range("AG7").Select
Selection.Copy
Range("AB16").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse

Range("AG9").Select
Selection.Copy
Range("AD16").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse

Range("AG22").Select
Selection.Copy
Range("AB22").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse

Range("AH4") = Range("AG3")

Range("I4").Select
Selection.Copy

End Sub
Avatar
albant
Le mercredi 05 Février 2014 à 11:33 par AlbanT :
Bonjour,

J'ai écrit une Macro qui prend plusieurs secondes à tourner et
visuellement on voit les changements (même rapides) de feuille. Je
voulais savoir si quelqu'un savait comment optimiser la Macro ci-dessous. Je
vous remercie d'avance.

Alban

Sub Validation()
Dim ligne As Integer
Sheets("Visualization").Select
ligne = Range("AF3")
Range("AB16").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Boutiques").Select
Range("BE" & ligne).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:úlse, Transpose:úlse

Sheets("Visualization").Select
Range("AD16").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Boutiques").Select
Range("BG" & ligne).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:úlse, Transpose:úlse

Sheets("Visualization").Select
Range("AB22").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Boutiques").Select
Range("BP" & ligne).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:úlse, Transpose:úlse

Sheets("Visualization").Select

Range("AG7").Select
Selection.Copy
Range("AB16").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse

Range("AG9").Select
Selection.Copy
Range("AD16").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse

Range("AG22").Select
Selection.Copy
Range("AB22").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse

Range("AH4") = Range("AG3")

Range("I4").Select
Selection.Copy

End Sub


Bonjour Jacky,

Merci beaucoup.
Le problème c'est qu'en faisant ça je perds toutes mes copies valeurs et formules non ?

Alban
Avatar
Jacky
Re...
Pas vu qu'il y avait des ":=xlPasteFormulas"
Essaie ceci
'--------------------------
Sub Validation()
With Sheets("Visualization")
ligne = .Range("AF3").Value
Sheets("Boutiques").Range("BE" & ligne) = .Range("AB16")
Sheets("Boutiques").Range("BG" & ligne) = .Range("AD16")
Sheets("Boutiques").Range("BP" & ligne) = .Range("AB22")
.Range("AG7").Copy
.Range("AB16").PasteSpecial Paste:=xlPasteFormulas
.Range("AG9").Copy
.Range("AD16").PasteSpecial Paste:=xlPasteFormulas
.Range("AG22").Copy
.Range("AB22").PasteSpecial Paste:=xlPasteFormulas
Application.CutCopyMode = False
.Range("AH4") = .Range("AG3")
End With
End Sub
'--------------------------
--
Salutations
JJ
Avatar
albant
Le mercredi 05 Février 2014 à 11:33 par AlbanT :
Bonjour,

J'ai écrit une Macro qui prend plusieurs secondes à tourner et
visuellement on voit les changements (même rapides) de feuille. Je
voulais savoir si quelqu'un savait comment optimiser la Macro ci-dessous. Je
vous remercie d'avance.

Alban

Sub Validation()
Dim ligne As Integer
Sheets("Visualization").Select
ligne = Range("AF3")
Range("AB16").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Boutiques").Select
Range("BE" & ligne).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:úlse, Transpose:úlse

Sheets("Visualization").Select
Range("AD16").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Boutiques").Select
Range("BG" & ligne).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:úlse, Transpose:úlse

Sheets("Visualization").Select
Range("AB22").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Boutiques").Select
Range("BP" & ligne).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:úlse, Transpose:úlse

Sheets("Visualization").Select

Range("AG7").Select
Selection.Copy
Range("AB16").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse

Range("AG9").Select
Selection.Copy
Range("AD16").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse

Range("AG22").Select
Selection.Copy
Range("AB22").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse

Range("AH4") = Range("AG3")

Range("I4").Select
Selection.Copy

End Sub


Bonjour Jacky,

C'est beaucoup mieux effectivement.

Merci beaucoup !

Très sincèrement.

Alban
Avatar
HD
Et avec ScreenUpdating et EnableEvents ça sera encore plus rapide:

----------------------
Sub Validation()
Application.ScreenUpdating = False
Application.EnableEvents = False
With Sheets("Visualization")
ligne = .Range("AF3").Value
Sheets("Boutiques").Range("BE" & ligne) = .Range("AB16")
Sheets("Boutiques").Range("BG" & ligne) = .Range("AD16")
Sheets("Boutiques").Range("BP" & ligne) = .Range("AB22")
.Range("AG7").Copy
.Range("AB16").PasteSpecial Paste:=xlPasteFormulas
.Range("AG9").Copy
.Range("AD16").PasteSpecial Paste:=xlPasteFormulas
.Range("AG22").Copy
.Range("AB22").PasteSpecial Paste:=xlPasteFormulas
Application.CutCopyMode = False
.Range("AH4") = .Range("AG3")
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
----------------------

@+
HD
Avatar
albant
Le mercredi 05 Février 2014 à 11:33 par AlbanT :
Bonjour,

J'ai écrit une Macro qui prend plusieurs secondes à tourner et
visuellement on voit les changements (même rapides) de feuille. Je
voulais savoir si quelqu'un savait comment optimiser la Macro ci-dessous. Je
vous remercie d'avance.

Alban

Sub Validation()
Dim ligne As Integer
Sheets("Visualization").Select
ligne = Range("AF3")
Range("AB16").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Boutiques").Select
Range("BE" & ligne).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:úlse, Transpose:úlse

Sheets("Visualization").Select
Range("AD16").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Boutiques").Select
Range("BG" & ligne).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:úlse, Transpose:úlse

Sheets("Visualization").Select
Range("AB22").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Boutiques").Select
Range("BP" & ligne).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:úlse, Transpose:úlse

Sheets("Visualization").Select

Range("AG7").Select
Selection.Copy
Range("AB16").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse

Range("AG9").Select
Selection.Copy
Range("AD16").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse

Range("AG22").Select
Selection.Copy
Range("AB22").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse

Range("AH4") = Range("AG3")

Range("I4").Select
Selection.Copy

End Sub


Génial c'est super rapide maintenant. Il y a trois jours je ne savais pas faire une macro, et maintenant j'arrive à créer un formulaire complet grâce à votre aide.

Merci beaucoup !

Alban