Copier une partie d'un classeur excel dans 40 dossiers différent
Résolu
patoche49
Messages postés
19
Date d'inscription
Statut
Membre
Dernière intervention
-
patoche49 Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
patoche49 Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Bonjour,
J'ai des difficultés pr créer une macro afin de copier coller une zone d'une feuille de calcul sur 40 fichiers différents.
Mon problème vient du fait que chaque fichier destinataire est différent et la macro que j'ai créé fait référence à celui que j'ai pris comme modèle. Comment faire pour changer le nom du fichier à chaque fois ?
Je me suis positionné sur le fichier que je souhaitais modifier pour exécuter la macro mais lorsque je l'exécute il ne trouve pas le fichier et j'ai le message d'erreur ci-dessous en gras, dans la macro.
voici ma macro :
Sub coprcom()
'
' coprcom Macro
'
' Touche de raccourci du clavier: Ctrl+a
'
Range("A8:B34").Select
Selection.Copy
Windows("MARTIN Jean RCOM.xlsx").Activate
Sheets(Array("RCOM ", "06", "07", "08", "09", "10", "11", "12")).Select
Sheets("RCOM ").Activate
Range("A8").Select
ActiveSheet.Paste
Range("C8").Select
ActiveWorkbook.Save
ActiveWindow.Close
End Sub
Merci pour votre aide
Bonjour,
J'ai des difficultés pr créer une macro afin de copier coller une zone d'une feuille de calcul sur 40 fichiers différents.
Mon problème vient du fait que chaque fichier destinataire est différent et la macro que j'ai créé fait référence à celui que j'ai pris comme modèle. Comment faire pour changer le nom du fichier à chaque fois ?
Je me suis positionné sur le fichier que je souhaitais modifier pour exécuter la macro mais lorsque je l'exécute il ne trouve pas le fichier et j'ai le message d'erreur ci-dessous en gras, dans la macro.
voici ma macro :
Sub coprcom()
'
' coprcom Macro
'
' Touche de raccourci du clavier: Ctrl+a
'
Range("A8:B34").Select
Selection.Copy
Windows("MARTIN Jean RCOM.xlsx").Activate
Sheets(Array("RCOM ", "06", "07", "08", "09", "10", "11", "12")).Select
Sheets("RCOM ").Activate
Range("A8").Select
ActiveSheet.Paste
Range("C8").Select
ActiveWorkbook.Save
ActiveWindow.Close
End Sub
Merci pour votre aide
A voir également:
- Copier une partie d'un classeur excel dans 40 dossiers différent
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Comment copier une vidéo youtube - Guide
- Word et excel gratuit - Guide
- Trier un tableau excel - Guide
3 réponses
Bonjour,
Pas de ligne en gras et pas de message d'erreur !!!
Les explications ne sont pas très claires: Mon problème vient du fait que chaque fichier destinataire est différent et la macro que j'ai créé fait référence à celui que j'ai pris comme modèle
Pas de ligne en gras et pas de message d'erreur !!!
Les explications ne sont pas très claires: Mon problème vient du fait que chaque fichier destinataire est différent et la macro que j'ai créé fait référence à celui que j'ai pris comme modèle
Il faut bien sûr adapter le chemin d'accès du répertoire, le nom des feuilles, la plage à copier etc ...
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
Option Explicit '*** Macro qui lance le traitement: '*** 1 - Création des objets : Workbook, Worksheet et Range (qui contient la plage à copier) '*** 2 - Appel de la procédure RecupFichiersXL(Arg()) '*** 3 - Boucle sur tous les éléments du tableau mTab() '*** ° Ouvre le fichier Excel à mettre à jour '*** ° Création des objets : Workbook, Worksheet '*** ° Copie de la plage '*** ° Sauvegarde et ferme le fichier '*** ° Ferme les objets et passe à l'élément suivant du tableau '' Public Sub MaMacro() Dim mTab() Dim wkOut As Workbook Dim ws As Worksheet Dim wsOut As Worksheet Dim plage As Range Dim i As Long ' Désactive les messages d'alerte Application.DisplayAlerts = False ' Instanciation de l'objet Worksheet (Feuille qui contient les données à copier) Set ws = ThisWorkbook.Worksheets("Feuil1") ' /!\ A adapter ' Instanciation de l'objet Range (Plage des cellules à copier) Set plage = ws.Range("A2:C20") ' /!\ A adapter 'appel de la procédure qui remplit le tableau Call RecupFichiersXL(mTab()) ' i = indice du tableau For i = LBound(mTab()) To UBound(mTab()) ' Instanciation de l'objet Workbook (Fichier de derstination pour la copie) Set wkOut = Workbooks.Open(mTab(i)) ' Instanciation de l'objet Worksheet (Feuille destination) Set wsOut = wkOut.Worksheets("Feuil1") ' /!\ A adapter ' Copie de la plage plage.Copy Destination:=wsOut.Range("A2") ' /!\ A adapter ' Sauvegarde du fichier wkOut.Save ' Fermeture du fichier wkOut.Close ' Libération des objets et de la mémoire Set wsOut = Nothing Set wkOut = Nothing ' On passe à l'élément suivant du tableau Next i ' Active les messages d'alerte Application.DisplayAlerts = True 'Libération de l'objet et de la mémoire Set ws = Nothing MsgBox "Traitement terminé !!!" End Sub '*** Procédure qui parcourt un répertoire '*** Elle recoit en paramètre un tableau '*** Elle remplit le tableau passé en référence '*** avec le chemin complet d'accès des fichiers xlsx '' Private Sub RecupFichiersXL(ByRef mTab()) Dim Chemin As String Dim Fichier As String Dim i As Long 'Définit le répertoire contenant les fichiers '/!\ adapter le chemin complet du répertoire Chemin = "D:\CCM\" 'Boucle sur tous les fichiers xlsx du répertoire. Fichier = Dir(Chemin & "*.xlsx") Do While Len(Fichier) > 0 ReDim Preserve mTab(i) mTab(i) = Chemin & Fichier i = i + 1 Fichier = Dir() Loop End Sub
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
Pour info, la ligne en gras est consultable ICI
Merci mais je ne comprends toujours pas ce qu'il veut faire ;0)
Attendons...
Effectivement ce n'est pas très clair.
Je vais essayer de le formuler différemment :
Afin d'éviter de faire 50 fois un copier coller, je voudrais créer une macro :
J'ai 3 colonnes dans un fichier A que je veux recopier à l'identique dans 50 fichiers différents, nommés Dupont, Martin, Jean... (50 noms différents).
la logique que j'ai tenté pour créer la macro (qui n'est peut être pas la bonne...)
J'ouvre le fichier A
je fais un copier des 3 colonnes
je ferme le fichier A
j'ouvre le fichier Dupont
je fais un coller des 3 colonnes
Pour exécuter la macro j'ouvre le fichier Martin et l'exécution se passe bien pour les 3 1er points mais bloque sur l'ouverture du fichier Martin car elle ouvre le fichier Dupont. Normal car c'est celui que j'ai pris comme référence dans la macro. Comment faire pour que le nom change à chaque fois ?
J'espère avoir été plus clair. Ci-dessous la nouvelle macro que j'ai créé.
Sub coprcom()
'
' coprcom Macro
'
' Touche de raccourci du clavier: Ctrl+m
'
ChDir "S:\C.M. Accueil\Commercial\2014\RCOM TC"
Workbooks.Open Filename:= _
"S:\C.M. Accueil\Commercial\2014\RCOM TC\A RCOM.xlsx"
Range("A8:B34").Select
Selection.Copy
ActiveWindow.Close
Workbooks.Open Filename:= _
"S:\C.M. Accueil\Commercial\2014\RCOM TC\Dupont RCOM.xlsx"
Range("A8").Select
ActiveSheet.PasteSpecial Format:="Texte Unicode", Link:=False, _
DisplayAsIcon:=False, NoHTMLFormatting:=True
End Sub