Problème code copié collé
Bonjour,
Je suis nouveau sur vba, j'ai commencé à coder il y a peu et souhaite vraiment m'améliorer.
J'aurais besoin de votre aide afin de savoir si je peux améliorer mon code, mes macros sont super longues, et j'aimerais les rendre
plus efficiente. merci beaucoup pour votre aide.
Grosso modo, J'ai plusisuers fichier de calcul et je modifie certains paramètres afin d'avoir de nouveau résultat et je copie colle le resultat en valeurs, comment puis-je faire en sorte que cela aille plus vite? (sachant que je repete cet test beaucoup de fois dans une macro). voici quelques exemples:
exemple 1:
If Worksheets("RECAP").Range("A31") > 0 Then
Worksheets("RECAP").Range("B31").Copy
Worksheets("RECAP").Range("A101").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Worksheets("RECAP").Range("c78").Copy
Worksheets("RECAP").Range("A102").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Worksheets("RECAP").Range("A100:KIL615").Copy
Worksheets("MC").Range("A4136").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End If
Application.CutCopyMode = False
Set laplage = Nothing
exemple 2 (le fichier Recap_V7 comprend beaucoup de formules):
Workbooks.Open Filename:="D:\Vitesse_vecteurs\Nouveau\DYNAMIQUE.xlsx"
Workbooks("DYNAMIQUE.xlsx").Activate
Worksheets("RECAP").Range("B18").Copy
Worksheets("RECAP").Range("H1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Worksheets("RECAP").Range("A1:DB3000").Copy
Workbooks("Analyse dynanique RECAP_v7.xlsb").Activate
Worksheets("1-10").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Set laplage = Nothing
Workbooks("DYNAMIQUE.xlsx").Activate
Worksheets("RECAP").Range("B29").Copy
Worksheets("RECAP").Range("H1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Worksheets("RECAP").Range("A1:DB3000").Copy
Workbooks("Analyse dynanique RECAP_v7.xlsb").Activate
Worksheets("11-210").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Set laplage = Nothing
exemple3
Workbooks.Open Filename:="D:\Vitesse_vecteurs\Nouveau\Analyse dynamique\Valeurs.xlsx"
Worksheets("01").Range("A1:KKK10000").ClearContents
Worksheets("02").Range("A1:KKK10000").ClearContents
Worksheets("03").Range("A1:KKK10000").ClearContents
Worksheets("04").Range("A1:KKK10000").ClearContents
Worksheets("05").Range("A1:KKK10000").ClearContents
Worksheets("06").Range("A1:KKK10000").ClearContents
Workbooks("ADRECAP_v7.xlsm").Activate
Worksheets("RECAP").EnableCalculation = False
Worksheets("01").Range("A1:KIL8000").Copy
Workbooks("Valeurs.xlsx").Activate
Worksheets("01").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Set laplage = Nothing
Merci beaucoup pour vos conseils
Bonsoir
Une idée comme ceci :
Exemple 1 :
With Worksheets("RECAP")
If .Range("A31") > 0 Then
.Range("B31").Copy
.Range("A101").PasteSpecial Paste:=xlPasteValues
.Range("c78").Copy
.Range("A102").PasteSpecial Paste:=xlPasteValues
.Range("A100:KIL615").Copy
Worksheets("MC").Range("A4136").PasteSpecial Paste:=xlPasteValues
End If
Application.CutCopyMode = False
Set laplage = Nothing
Exemple 2 :
Workbooks.Open Filename:="D:\Vitesse_vecteurs\Nouveau\DYNAMIQUE.xlsx"
With Workbooks("DYNAMIQUE.xlsx").Worksheets("RECAP")
.Range("B18").Copy
.Range("H1").PasteSpecial Paste:=xlPasteValues
.Range("A1:DB3000").Copy
Workbooks("Analyse dynanique RECAP_v7.xlsb").Worksheets("1-10").Range("A1").PasteSpecial Paste:=xlPasteValues
Set laplage = Nothing
.Range("B29").Copy
.Range("H1").PasteSpecial Paste:=xlPasteValues
.Range("A1:DB3000").Copy
Workbooks("Analyse dynanique RECAP_v7.xlsb").Worksheets("11-210").Range("A1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Set laplage = Nothing
End With
Là je ne vois pas pourquoi vous mettez deux fois l'instruction Set laplage = Nothing
Exemple 3:
Workbooks.Open Filename:="D:\Vitesse_vecteurs\Nouveau\Analyse dynamique\Valeurs.xlsx"
Sheets(Array("01", "02", "03", "04", "05", "06")).Range("A1:KKK10000").ClearContents
With Workbooks("ADRECAP_v7.xlsm")
.Worksheets("RECAP").EnableCalculation = False
.Worksheets("01").Range("A1:KIL8000").Copy
End With
Workbooks("Valeurs.xlsx").Worksheets("01").Range("A1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Set laplage = Nothing
Cordialement
Merci beaucoup Dan!!!