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

Messages postés
1
Date d'inscription
mercredi 7 août 2019
Statut
Membre
Dernière intervention
7 août 2019
-
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 !
Afficher la suite 

2 réponses

Messages postés
8305
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 août 2019
412
0
Merci
bonjour, moi j'essaierais en donnant le nom complet du fichier à ouvrir, le message d'erreur montrant bien que le nom est incomplet.
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 ...
yg_be
Messages postés
8305
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 août 2019
412 -
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?
Un grand merci pour ton éclairage !
En effet en tapant

Workbooks.Open (CA & F)

tout fonctionne très bien !
yg_be
Messages postés
8305
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 août 2019
412 -
parfait, peux-tu alors marquer comme résolu, via la roue dentée à droite du titre?
Commenter la réponse de yg_be
Messages postés
22841
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
20 août 2019
5595
0
Merci
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
Commenter la réponse de eriiic