épurer un code par aprentissage

cococh

XLDnaute Occasionnel
Bonjour à tous,


J'ai enregistré une macro par apprentissage. Cette macro a pour rôle de copier la valeur de cellules d'une feuille et d'aller la coller un peut partout dans différentes feuilles du classeur.

Voici le code généré par le module d'apprentissage:

Code:
Sub projectdatas()
'
' projectdatas Macro
'

'
    Range("L15").Select
    Selection.Copy
    Sheets("result").Select
    Range("D6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("step0.1").Select
    Range("D16:E16").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("result").Select
    Range("D5").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("step0.1").Select
    Range("L17").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("result").Select
    Range("E5").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveWindow.ScrollWorkbookTabs Position:=xlLast
    Sheets("Tooling").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
    Sheets("step0.1").Select
    Range("D18:E18").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("result").Select
    Range("D9").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("step0.1").Select
    Range("D19").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("result").Select
    Range("D10").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("step0.1").Select
    Range("H19").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    Range("I19").Select
    Sheets("step0.1").Select
    ActiveWindow.ScrollWorkbookTabs Sheets:=-1
    ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
    ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
    Sheets("start").Select
    Range("H17").Select
End Sub

Pensez-vous que l'on puisse le simplifier et l'épurer en gardant les mêmes fonctions?
Je tiens à préciser que le code doit coller les valeurs des cellules de départ et non les formules.


merci d'avance et bon week end à tous

Benjamin
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : épurer un code par aprentissage

Bonjour

Bonne initiative que d'utiliser l'enregistreur de macros
(C'est une bonne école, et cela permet d'écrire rapidement du code VBA)

Le revers de la médaille, c'est qu'effectivement ensuite il faut alléger le code ainsi obtenu.
Ainsi ceci:
Code:
Range("L15").Select
    Selection.Copy
    Sheets("result").Select
    Range("D6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
peut se simplifier en
Code:
Range("L15").Copy Sheets("result").Range("D6")
Donc tu peux modifier les lignes code VBA similaires dans le reste de ta macro.

Je te laisse essayer et tester.

EDITION: Bonsoir Gorfael
 
Dernière édition:

Gorfael

XLDnaute Barbatruc
Re : épurer un code par aprentissage

Salut cococh et le forum
Code:
Sub projectdatas()
Sheets("step0.1").Range("L15").Copy
Sheets("result").Range("D6").PasteSpecial Paste:=xlPasteValues

Sheets("step0.1").Range("D16:E16").Copy
Sheets("result").Range("D5").PasteSpecial Paste:=xlPasteValues

Sheets("step0.1").Range("L17").Copy
Sheets("result").Range("E5").PasteSpecial Paste:=xlPasteValues
Sheets("Tooling").PasteSpecial Paste:=xlPasteValues

Sheets("step0.1").Range("D18:E18").Copy
Sheets("result").Range("D9").PasteSpecial Paste:=xlPasteValues

Sheets("step0.1").Range("D19").Copy
Sheets("result").Range("D10").PasteSpecial Paste:=xlPasteValues

Sheets("step0.1").Range("H19").ClearContents

Sheets("step0.1").Select
Range("I19").Select

Sheets("start").Select
Range("H17").Select
Application.CutCopyMode = False
End Sub
Pour moi, ça donnerait un truc comme ça.

Mais évidemment, ça nécessite une vérification avant usage : Ta première ligne ne donnant pas la feuille, j'ai extrapolé.

Application.CutCopyMode = False ne sert qu'à faire disparaître les tirets clignotants sur la sélection copiée/coupée. Une fois suffit

Les deux dernières instructions ne servent qu'à positionner les curseurs sur les feuilles : est-ce bien utile ?
A+
 

Discussions similaires

Réponses
2
Affichages
151
Réponses
5
Affichages
177

Statistiques des forums

Discussions
312 495
Messages
2 088 964
Membres
103 992
dernier inscrit
Christine 974