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
AAA1 - 22 sept. 2014 à 23:12
A voir également:
- Macro dans excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
2 réponses
Normad
Messages postés
112
Date d'inscription
dimanche 6 juin 2010
Statut
Membre
Dernière intervention
10 juin 2015
38
22 sept. 2014 à 08:12
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 :
peuvent être remplacée par une seule ligne :
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 :
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
Ensuite pour le code (pour faire des lignes 7 à 10 par exemple) :
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