Simplifier une macro

  • Initiateur de la discussion Initiateur de la discussion olive323
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

olive323

XLDnaute Occasionnel
Bonjour à tous,

je souhaiterai simplifier cette macro, car je la repete tellement de fois que j'ai un message "texte trop long". De plus c'est plutot fastidieux d'avoir à écrire autant de ligne.
Et pas simple de s'y retrouver.

Est ce que quelqu'un à une idée?


Sub BILANMAJSSE()

ActiveSheet.Unprotect "3277"
With Application
.Calculation = xlManual
.MaxChange = 0.001
End With
ActiveWorkbook.PrecisionAsDisplayed = False



Workbooks("im-2n-sse00004-04-base 2011").Worksheets("Noms").Range("j25:J32").Copy
Workbooks("Bilan sse alizay").Worksheets("Page 7").Range("o8😱15").PasteSpecial xlPasteValues
Application.CutCopyMode = False


Workbooks("im-2n-sse00004-04-base 2011").Worksheets("Noms").Range("j37").Copy
Workbooks("Bilan sse alizay").Worksheets("Page 7").Range("E20").PasteSpecial xlPasteValues
Application.CutCopyMode = False

Workbooks("im-2n-sse00004-04-base 2011").Worksheets("Noms").Range("j38").Copy
Workbooks("Bilan sse alizay").Worksheets("Page 7").Range("H20").PasteSpecial xlPasteValues
Application.CutCopyMode = False

Workbooks("im-2n-sse00004-04-base 2011").Worksheets("Noms").Range("j39").Copy
Workbooks("Bilan sse alizay").Worksheets("Page 7").Range("K20").PasteSpecial xlPasteValues
Application.CutCopyMode = False

Workbooks("im-2n-sse00004-04-base 2011").Worksheets("Noms").Range("j40").Copy
Workbooks("Bilan sse alizay").Worksheets("Page 7").Range("N20").PasteSpecial xlPasteValues
Application.CutCopyMode = False
With Application
.Calculation = xlAutomatic
.MaxChange = 0.001
End With
ActiveWorkbook.PrecisionAsDisplayed = False
ActiveSheet.Protect "3277", True, True, True
End Sub


Cordialement
 
Re : Simplifier une macro

Salut Olive,

Tu peux utiliser des variables pour éviter d'avoir à tout retaper:

Code:
Dim wbkSource as Workbook
Dim wbkDestination as Workbook
Dim shtSource as Worksheet
Dim shtDestination as Worksheet
Dim i as Long, j as Long

Set wbkSource = Workbooks("im-2n-sse00004-04-base 2011")
Set shtSource = wbkSource.Worksheets("Noms")
Set wbkDestination = Workbooks("Bilan sse alizay")
set shtDestination = wbkDestination.Worksheets("Page 7")

With shtSource
    shtDestination.Range("o8:15")=.Range("j25:J32")   '<-plage du range à corriger
    j=0
    For i=1 to 3
        shtDestination.cells(5+j,20)=.Range("J" & 36+i)
        j=j+3
   next
End With
(....)

J'ai pas testé mais je crois bien que cela devrait le faire.
A noter, que tu ne précises pas si tu fais ce type de copier/coller sur plus de plages. Dans ce cas il faudra que tu adaptes ton code.

Bonne soirée.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
883
Réponses
1
Affichages
439
Réponses
0
Affichages
725
Retour