VBA - Mieux coder !
Hors ligneKamkam33 Le 25/03/2009 à 12:37 Profil de Kamkam33 Configuration de Kamkam33

Bonjour à tous,
J'utilise des macros assez régulièrement tout en y connaissant pas grand chose (j'ai commencé à trifouiller ça depuis 2 mois)

En ce moment, je bascule beaucoup de "classeurs année" en nouveaux classeurs où les années deviennent les variables colonnes. Je fais donc quasi-exclusivement du copier-coller avec le même code appliqué pour chaque "classeur année" et des lignes d'arrivées distinctes dans un nouveau classeur;
Comment simplifier donc cet exemple de code (je l'ai allégé de plein de détails de mon côté) pour éviter de retaper à chaque fois les différentes années et les petites modifictions de la ligne de "collage"


'' 2003
Windows("Autres.xls").Activate
Windows("France_2003.xls").Activate
Sheets("Juridi-sexage").Select
Range("M9:M26").Select
Selection.Copy
Windows("Autres.xls").Activate
Sheets("chefs selon jur-sexe").Select
Range("C6").Select
Selection.Paste

'' 2004
Windows("Autres.xls").Activate
Windows("France_2004.xls").Activate
Sheets("Juridi-sexage").Select
Range("M9:M26").Select
Selection.Copy
Windows("Autres.xls").Activate
Sheets("chefs selon jur-sexe").Select
Range("C7").Select
Selection.Paste

'' 2005
Windows("Autres.xls").Activate
Windows("France_2005.xls").Activate
Sheets("Juridi-sexage").Select
Range("M9:M26").Select
Selection.Copy
Windows("Autres.xls").Activate
Sheets("chefs selon jur-sexe").Select
Range("C8").Select
Selection.Paste

'' 2006
Windows("Autres.xls").Activate
Windows("France_2006.xls").Activate
Sheets("Juridi-sexage").Select
Range("M9:M26").Select
Selection.Copy
Windows("Autres.xls").Activate
Sheets("chefs selon jur-sexe").Select
Range("C9").Select
Selection.Paste

'' 2007
Windows("Autres.xls").Activate
Windows("France_2007.xls").Activate
Sheets("Juridi-sexage").Select
Range("M9:M26").Select
Selection.Copy
Windows("Autres.xls").Activate
Sheets("chefs selon jur-sexe").Select
Range("C10").Select
Selection.Paste



Merci beaucoup !
Hors ligneWilder Le 26/03/2009 à 14:04 Profil de Wilder Configuration de Wilder

Viconaute Modérateur
Bonjour Kamkam33 ,

Pour moi, je crois que ça serait quelque chose comme ça:

ThisWorkbook.Worksheets("Juridi-sexage").Range("M9:M29").Select
Selection.Copy Destination:=Worksheets("chefs selon jur-sexe").Range("C6")


Je suis sur qu'avec un Userform, tu serais en mesure de simplifier les choses encore plus.

Je remarque que t'a formule change pour chaque année.

Est-ce normal?
--


Hors ligneKamkam33 Le 26/03/2009 à 15:05 Profil de Kamkam33 Configuration de Kamkam33

Merci, mais j'ai réussi à  trouver la réponse ! (qqun m'a aidé)
C'est normal que la formule change, sinon, je recopier tout le temps dans la même case..!

Dim i as integer

For i = 1 To 5
Workbooks("France_" & 2002 + i & ".xls").Worksheets("Juridi-sexage").Range("M9:M26").Copy  
Workbooks("Autres.xls").Worksheets("chefs selon jure-sexe").Range("C" & i + 5)
Next i

Bonne journée !
Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels