Copier une partie d'un classeur excel dans 40 dossiers différent

Résolu/Fermé
patoche49 Messages postés 19 Date d'inscription jeudi 12 juillet 2012 Statut Membre Dernière intervention 11 octobre 2014 - 18 juin 2014 à 16:34
patoche49 Messages postés 19 Date d'inscription jeudi 12 juillet 2012 Statut Membre Dernière intervention 11 octobre 2014 - 20 juin 2014 à 11:30
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



A voir également:

3 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
18 juin 2014 à 18:10
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
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
19 juin 2014 à 09:09
SAlut Polux31,

Pour info, la ligne en gras est consultable ICI
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
19 juin 2014 à 09:51
Salut Franck,

Merci mais je ne comprends toujours pas ce qu'il veut faire ;0)
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
19 juin 2014 à 10:26
Moi non plus ;-)
Attendons...
0
patoche49 Messages postés 19 Date d'inscription jeudi 12 juillet 2012 Statut Membre Dernière intervention 11 octobre 2014
19 juin 2014 à 10:49
bj à vous et merci de vous intéresser à mon cas.
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
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
19 juin 2014 à 10:56
Où sont les fichiers à mettre à jour ? Sont-ils tous dans le même répertoire ?
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
19 juin 2014 à 10:18
Bonjour,

Windows("MARTIN Jean RCOM.xlsx").Activate

n'est pas un chemin valide!!!!!!!!!!!!
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
Modifié par Polux31 le 19/06/2014 à 17:17
Il faut bien sûr adapter le chemin d'accès du répertoire, le nom des feuilles, la plage à copier etc ...

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
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
19 juin 2014 à 20:56
Merci à Franck pour le complément d'infos ;0)
0
patoche49 Messages postés 19 Date d'inscription jeudi 12 juillet 2012 Statut Membre Dernière intervention 11 octobre 2014
20 juin 2014 à 11:30
je vais tester. Cela me parait un peu compliqué pour un débutant comme moi. Encore Merci pour ton aide.
0