Importer des données d'autres classeurs sans connaitre leur noms

OrsonWels Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je suis face à un challenge qui me donne du fil à retordre. J'ai essayé pas mal d'idées mais aucune ne fonctionne ..

Je m'explique;

Dans un dossier j'ai plusieur classeurs .xlsm (leurs noms peuvent varier) dont un recevra les données des autres (son nom à lui est toujours le-même).

J'ai besoin par une macro d'ouvrir successivement tous les autres classeurs du dossier, d'aller chercher les info dont j'ai besoin (ca j'ai su codé, ca s'appelle "Ma_macro_d_exportation" dans l'exemple ci-dessous) et de les refermer sans sauver.

Pour ce faire j'ai adapté un code pour obtenir :

Sub TEST_Extraction()

Dim CD As Workbook 'déclare la variable CD (Classeur Destination)'
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)'
Dim CS As Workbook 'déclare la variable CS (Classeur Source)'
Dim OS As Worksheet 'déclare la variable OD (Onglet Source)'
Dim CA As String 'déclare la variable CA (Chemin dAccès)'
Dim F As String 'déclare la variable F (Fichiers)'

Application.ScreenUpdating = False 'masque les rafraîchissements décran'
Set CD = ThisWorkbook 'définit le classeur destination CD'
Set OD = CD.Sheets("QUOTATION") 'définit longlet destination OD'
CA = CD.Path & "\" 'définit le chemin daccès CA'"

F = Dir(CA & "*.xlsm") 'définit le premier fichier F avec lextension ".xlsm" dans le dossier CA'
Do While F <> "" 'exécute tant quil existe des fichiers F'
    Application.Workbooks.Open (F) 'ouvre le fichier F'
    Set CS = ActiveWorkbook 'définit le classeur source CS'
    Set OS = CS.Sheets("Export_Quotation")
    Ma_macro_d_exportation
    ActiveWorkbook.Close False 'Ferme sans sauver'
    F = Dir 'fichier suivant, avec lextension ".xlsm" dans le dossier CA'
Loop

End Sub


Et de manière tout à fait chronique, quand je lance la macro je recois un message d'erreur qui semble concerner l'instruction : Application.Workbooks.Open (F)


Nb : Evidemment je souhaite que le Classeur qui receille les info des autres Classeurs ne soit ouvert par cette macro (lui son nom sera toujours le meme). De plus, le chemin d'acces (dossier dans le quel se trouvent les classeurs) peut varier d'un utilisateur à l'autre.

Est-ce que quelqu'un pourrait me sauver ? :D

Un tout grand merci d'avance !
A voir également:

2 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour, moi j'essaierais en donnant le nom complet du fichier à ouvrir, le message d'erreur montrant bien que le nom est incomplet.
0
OrsonWels
 
Salut

Merci pour ta réponse

Justement je ne peux pas renseigner les noms qui sont suceptibles de changer.

Le nom du classeur qui apparait dans le message d'erreur est le bon (celui du classeur dans le dossier).
Au moment ou j'applique F = Dir(CA & "*.xlsm") il trouve bien le premier classeur par ordre alphabétique, mais l'instruction d'ouvrir le classeur plante ...
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
Le nom du classeur qui apparaît dans le message d'erreur est incomplet: comment Excel peut-il deviner dans quel dossier se trouve ce classeur?
0
OrsonWels
 
Un grand merci pour ton éclairage !
En effet en tapant

Workbooks.Open (CA & F)

tout fonctionne très bien !
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
parfait, peux-tu alors marquer comme résolu, via la roue dentée à droite du titre?
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour,

pour répondre à ton NB, Thisworkbook.name te donne le nom du classeur ayant cette macro.
A comparer avec F avant d'ouvrir le fichier.
eric
0