Extraire donnees tableau depuis plusieurs documents

Bonjour,

Après avoir recherché longuement une solution, je me décide à poster cette demande.

Je travail sur les approvisionnements de restaurants scolaires de différentes communes.

J'ai deux types de documents :

1. un document par commune qui répertorie les approvisionnements spécifiques à cette commune. Ils ont tous les même structure et sont tous répertorié au même endroit dans un dossier sur le disque C:

2. Un document de synthèse.

Dans les documents des communes, j'ai dans l'onglet OUTILS, le tableau des approvisionnements.

J'aimerais extraire via une macro, les données de tous les tableaux (appelé Tableau1) des communes dans une feuille de mon document de synthèse. J'aimerais pouvoir me référer au dossier et non au nom des documents car le nombre de commune peut augmenter ou diminuer. Je me dis qu'il faudrait que la macro prennent en compte automatiquement tous les documents Excel présent dans le dossier et qu'il recherche les données dans l'onglet OUTILS pour finalement me les afficher (sous forme de valeur) dans une feuille de mon document de synthèse.

J'aimerai aussi que les en-têtes ne soit pas transférer dans mon documents de synthèse.

Je me suis référer à cette macro, mais que je la lance, rien ne s'exécute.

Sub Importfiles()

Dim WbDest As Workbook, WbSource As Workbook

Dim WksNewSheet As Worksheet

Dim NomFichier As String, Chemin As String

Dim I As Long

Set WbDest = ActiveWorkbook

Chemin = "C:\EVALUATION RESTAURATION COLLECTIVE\COMMUNES"

NomFichier = Dir(Chemin & "*.xls") 'définit les fichiers à importer en l’occurence tous les fichiers excel se trouvant dans ce répertoire

Do While NomFichier <> "" 'démarre la boucle jusqu’au dernier fichier disponible dans le répertoire

Set WbSource = Workbooks.Open(Chemin & NomFichier) 'ouvre le fichier actuel à importer

Set WksNewSheet = WbSource.Sheets("OUTILS") 'sélectionne la feuille de données à importer

WksNewSheet.Activate 'active cette feuille

WksNewSheet.Select

Range(Cells(1, 1), Cells(500, 14)).Select 'selection des données que l’on veut importer

Selection.Copy 'copie les données sélectionnées

WbDest.Activate 'retourne vers le fichier de départ

I = ActiveSheet.UsedRange.Rows.Count 'compte le nombre de lignes déjà utilisées dans ce fichier

Cells(I + 1, 1).Select 'sélection de la cellule où on veut coller les données (la première vide)

ActiveSheet.Paste 'colle les données

WbSource.Close 'ferme le fichier source

NomFichier = Dir 'va vers le fichier suivant à importer

Loop 'recommece la boucle avec le fichier suivant

WbDest.Activate

End Sub

Est-ce que je suis partie dans la bonne voie et sauriez-vous me dire ce qui bloque?

Je met en pièce jointe un document avec l'onglet OUTILS et le tableau pour que cela vous donne une idée.

Je m'excuse par avance si cette question est redondante.

Merci beaucoup de votre aide!

30tableau.xlsx (11.13 Ko)

Bonjour et bienvenue sur le forum

Juste une anomalie que je note dans ton code.

Entre le chemin et le nom, il doit y avoir un anti-slash (« \ ») et je n’en vois pas.

Essaie d’en mettre un en l’ajoutant à chemin :

Chemin = "C:\EVALUATION RESTAURATION COLLECTIVE\COMMUNES" & "\ "

Et refais l’essai de lancer ta macro.

S’il ne se passe toujours rien, remplace :

Do While NomFichier <> ""

par

Do While Len( NomFichier)  > 0

Bonne chance !

Bonjour,

Merci beaucoup pour ce coups de pouce, alors j'ai réussi à faire ouvrir les dossiers avec le code suivant (changements en gras)

[code]Sub Importfiles()

Dim WbDest As Workbook, WbSource As Workbook

Dim WksNewSheet As Worksheet

Dim NomFichier As String, Chemin As String

Dim I As Long

Set WbDest = ActiveWorkbook

Chemin = "C:\EVALUATION RESTAURATION COLLECTIVE\COMMUNES"

ChDir Chemin

NomFichier = Dir("*.xls") 'définit les fichiers à importer en l’occurence tous les fichiers excel se trouvant dans ce répertoire

Do While NomFichier <> "" 'démarre la boucle jusqu’au dernier fichier disponible dans le répertoire

Set WbSource = Workbooks.Open(NomFichier) 'ouvre le fichier actuel à importer

Set WksNewSheet = WbSource.Sheets("OUTILS") 'sélectionne la feuille de données à importer

WksNewSheet.Activate 'active cette feuille

WksNewSheet.Select

Range("Tableau1").Select 'selection des données que l’on veut importer

Selection.Copy 'copie les données sélectionnées

WbDest.Activate 'retourne vers le fichier de départ

I = ActiveSheet.UsedRange.Rows.Count 'compte le nombre de lignes déjà utilisées dans ce fichier

Cells(I + 1, 1).Select 'sélection de la cellule où on veut coller les données (la première vide)

ActiveSheet.Paste 'colle les données

WbSource.Close 'ferme le fichier source

NomFichier = Dir 'va vers le fichier suivant à importer

Loop 'recommece la boucle avec le fichier suivant

WbDest.Activate

End Sub[code\]

Maintenant un autre problème se pose à moi... Ce code fait un copier coller en passant par le presse papier, et d'après ce que j'ai lu il faut éviter cette étape en passant par le code destination. De plus je copie des cellules avec formules (affectées à des noms), mais je veux conserver uniquement les valeurs pour ne pas importer les noms dans ma feuille de synthèse

Pouvez-vous m'aider sur ce point?? Cela me serait d'une très grande aide!

Bonjour

Tu écris :

…je copie des cellules avec formules (affectées à des noms), mais je veux conserver uniquement les valeurs pour ne pas importer les noms dans ma feuille de synthèse

Pouvez-vous m'aider sur ce point??

Ce serait plus simple si tu joignais les fichiers concernés, même allégés et anonymisés…

Bye !

Rechercher des sujets similaires à "extraire donnees tableau documents"