Macro dans excel

AAA1 Messages postés 2 Statut Membre -  
 AAA1 -
Bonjour,
j'ai fait une macro toutes simple copier cellule 1A dans l'onglet feuil1 et coller dans l'onglet feuil 2 dans la cellule 10C.
j'aimerais répéter cette formule avec la cellule 2A dans l'onglet feuil1 et coller dans l'onglet feuil 2 dans la cellule 10C.
etc... jusqu'à la cellule 100A
y a t'il la possibilité de copier et coller la macro avec le changement de cellule dans la feuille 1 ?

je vous joint la macro que j'ai faite
j'aimerais remplacer "D7", "E7",ect par "D8", "E8",ect...

Sub Macro1()
'
' Macro1 Macro
'

'
Range("D7").Select
Selection.Copy
Sheets("Ordre de réparation").Select
ActiveSheet.Paste
Sheets("Voiture VN-VS-VO").Select
Range("E7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Ordre de réparation").Select
Range("H8:S8").Select
ActiveSheet.Paste
Sheets("Voiture VN-VS-VO").Select
Range("F7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Ordre de réparation").Select
Range("AA4:AH4").Select
ActiveSheet.Paste
Sheets("Voiture VN-VS-VO").Select
Range("G7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Ordre de réparation").Select
Range("H7:S7").Select
ActiveSheet.Paste
Sheets("Voiture VN-VS-VO").Select
Range("H7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Ordre de réparation").Select
Range("N21:P21").Select
ActiveSheet.Paste
Sheets("Voiture VN-VS-VO").Select
Range("I7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Ordre de réparation").Select
Range("Q21:AH21").Select
ActiveSheet.Paste
Sheets("Voiture VN-VS-VO").Select
Range("J7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Ordre de réparation").Select
Range("N11:AH11").Select
ActiveSheet.Paste
Sheets("Voiture VN-VS-VO").Select
Range("K7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Ordre de réparation").Select
ActiveWindow.SmallScroll Down:=3
Range("N28:AA28").Select
ActiveSheet.Paste
Sheets("Voiture VN-VS-VO").Select
Range("L7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Ordre de réparation").Select
Range("N13:AH13").Select
ActiveSheet.Paste
Sheets("Voiture VN-VS-VO").Select
Range("M7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Ordre de réparation").Select
Range("N14:AH14").Select
ActiveSheet.Paste
Sheets("Voiture VN-VS-VO").Select
Range("P7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Ordre de réparation").Select
Range("N15:AH15").Select
ActiveSheet.Paste
Sheets("Voiture VN-VS-VO").Select
Range("R7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Ordre de réparation").Select
Range("N19:AH20").Select
ActiveSheet.Paste
Sheets("Voiture VN-VS-VO").Select
Range("S7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Ordre de réparation").Select
Range("N12:AH12").Select
ActiveSheet.Paste
Sheets("Voiture VN-VS-VO").Select
Range("T7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Ordre de réparation").Select
Range("N17:AH17").Select
ActiveSheet.Paste
Sheets("Voiture VN-VS-VO").Select
Range("U7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Ordre de réparation").Select
Range("N16:AH16").Select
ActiveSheet.Paste
Range("B33:P33").Select
Sheets("Voiture VN-VS-VO").Select
Range("V7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Ordre de réparation").Select
Range("N18:AH18").Select
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=-6
Range("A1:K4").Select
End Sub

D'avance merci
AAA1

2 réponses

  1. Normad Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   40
     
    Bonjour,

    Les macros de l'enregistreur vous font des tas de lignes superflues, difficiles à adapter et lentes à l'exécution avec de nombreux Select, Copy, Paste, CutCopyMode =False ou encore des ActiveWindow.SmallScroll parfaitement inutiles.

    Par exemple les lignes :


    Sheets("Voiture VN-VS-VO").Select
    Range("E7").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Ordre de réparation").Select
    Range("H8:S8").Select
    ActiveSheet.Paste

    peuvent être remplacée par une seule ligne :


    Sheets("Ordre de réparation").Range("H8:S8").Value = Sheets("Voiture VN-VS-VO").Range("E7").Value

    Pour faire toute la macro, on peut aussi utiliser un With pour éviter de répéter le nom de la feuille de destination à chaque ligne, ainsi le code complet peut être remplacé par :

    With Sheets("Ordre de réparation")
    .Range("E7").Value = Sheets("Voiture VN-VS-VO").Range("D7").Value
    .Range("H8:S8").Value = Sheets("Voiture VN-VS-VO").Range("E7").Value
    .Range("AA4:AH4").Value = Sheets("Voiture VN-VS-VO").Range("F7").Value
    .Range("H7:S7").Value = Sheets("Voiture VN-VS-VO").Range("G7").Value
    .Range("N21:P21").Value = Sheets("Voiture VN-VS-VO").Range("H7").Value
    .Range("Q21:AH21").Value = Sheets("Voiture VN-VS-VO").Range("I7").Value
    .Range("N11:AH11").Value = Sheets("Voiture VN-VS-VO").Range("J7").Value
    .Range("N28:AA28").Value = Sheets("Voiture VN-VS-VO").Range("K7").Value
    .Range("N13:AH13").Value = Sheets("Voiture VN-VS-VO").Range("L7").Value
    .Range("N14:AH14").Value = Sheets("Voiture VN-VS-VO").Range("M7").Value
    .Range("N15:AH15").Value = Sheets("Voiture VN-VS-VO").Range("P7").Value
    .Range("N19:AH20").Value = Sheets("Voiture VN-VS-VO").Range("R7").Value
    .Range("N12:AH12").Value = Sheets("Voiture VN-VS-VO").Range("S7").Value
    .Range("N17:AH17").Value = Sheets("Voiture VN-VS-VO").Range("T7").Value
    .Range("N16:AH16").Value = Sheets("Voiture VN-VS-VO").Range("U7").Value
    .Range("N18:AH18").Value = Sheets("Voiture VN-VS-VO").Range("V7").Value
    End With

    Ensuite pour la question de passer à D8, E8, etc..., pas bien compris dans quelle destination (plusieurs lignes différentes...)

    Il suffit de remplacer le 7 par une variable qu'on index dans une boucle, ainsi la procédure se répète en commençant par 7 et en allant jusqu'à 8 ou plus :

    Exemple avec une variable I (déclarer en début de procédure par
    Dim I as Integer
    )

    Ensuite pour le code (pour faire des lignes 7 à 10 par exemple) :

    For I = 7 to 10
    .Range("H8:S8").Value = Sheets("Voiture VN-VS-VO").Range("E" & I).Value
    'etc..
    Next I
    0
  2. AAA1
     
    Bonsoir Normad
    Je te remercie pour la réponse je vais me mettre au travail pour effectuer les modifications. je te donnerais les résultats bonne soirée
    AAA1
    0