Macro dans excel

Fermé
AAA1 Messages postés 2 Date d'inscription dimanche 21 septembre 2014 Statut Membre Dernière intervention 30 avril 2016 - Modifié par AAA1 le 21/09/2014 à 22:49
 AAA1 - 22 sept. 2014 à 23:12
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
A voir également:

2 réponses

Normad Messages postés 112 Date d'inscription dimanche 6 juin 2010 Statut Membre Dernière intervention 10 juin 2015 37
22 sept. 2014 à 08:12
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
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