Macro dans excel

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

  • Votes
  • Date
  • Date décroissante
  1. 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
    1. 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