Extraire les données de plusieurs fichiers Excel VBA

Bonjour à tous,

Je suis un novice en ce qui concerne le VBA, les seules choses que j'ai faite avec une macro est "reinitialiser une fiche par un bouton" et "enregistrer dans une base une feuille avec comme nom de fichier une cellule" .

Aujourd'hui je me heurte a un soucis bien plus complexe que je n'arrive pas a résoudre depuis quelque jours.

je vous explique mon problème.

J'ai dans un meme dossier plusieurs fichiers excel ayant le meme schéma avec des données differentes (chaque donnée est repartie exactement dans la meme cellule dans tout les fichiers).

Je souhaite donc pouvoir ouvrir tout ces fichiers excel pour récupérer les données (celle que je souhaite extraire) pour creer une base de donnée. Je n'est pas besoin de l'origine du fichier juste les données qui sont a l'interieur. Et les données récuperé je voudrais qu'elles soient mise ligne par ligne ( une ligne correspond a un fichier).

J'espere avoir été assez clair je peux mettre des piece jointe pour que vous puissiez mieux comprendre.

Merci de votre patience si vous pouvez m'aidé.

Bonne journée.

Bonjour Wartang et bienvenu, bonjour le forum,

Vu le peu d'informations que tu donnes, je te propose le code ci-dessous à adapter (à placer dans le classeur de la base de données).

Sinon, Il est toujours préférable de joindre un fichier et surtout d'être plus précis dans tes explications...

Le code :

Sub Macro1()
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim CA As String 'déclare la variable CA (Chemin d'Accès)
Dim F As String 'déclare la variable F (Fichier)
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim DEST As Range 'déclare la variable DEST (Cellule de DESTination)

Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set CD = ThisWorkbook 'définit le classeur destination CD
Set OD = CD.Worksheets(1) 'définit l'onglet destination OD (ici le premier, à adapter à ton cas)
CA = CD.Path & "\" 'définit le chemin d'accès CA
F = Dir(CA & "*.xls?") 'définit le premier fichier F ayant CA comme chemin d'accès
Do While F <> "" 'exécute tant qu'il existe des fichiers F
    If F <> ThisWorkbook.Name Then 'condition : si F n'est pas le fichier destination
        Set CS = Application.Workbooks.Open(CA & F) 'définit le classeur source CS en l'ouvrant
        Set OS = CS.Worksheets(1) 'définit l'onglet source (ici le premier, à adapter à ton cas)
        Set DEST = OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST (à adapter à ton cas)
        OS.Range("A1").Copy DEST 'copy la cellule A1 de l'onglet source (à adapter à ton cas) et la colle dans DEST
        CS.Close False 'ferme la classeur source sans enregistrer
    End If 'fin de la condition
    F = Dir 'définit le prochain fichier F ayant CA comme chemin d'accès
Loop 'boucle
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
MsgBox "Données traitées !" 'message
End Sub
63vierge.xls (44.00 Ko)

Merci beaucoup pour ta réponse et d'avoir prit le temps de répondre.

Mais comme j'ai dit je suis un novice je ne voit pas ou remplir les chemins d'accés et surtout où mettre les instructions lorsque la macro ouvre les fichiers.

Je vais essayer d'être beaucoup plus clair.

J'ai un fichier mère où se trouve ma base de données (là ou je veux que les information des autres fichier aille) ils se trouvent dans le meme dossier que les autres fichier. le chemin d'accés est ; P:\UAP02\FICHE DE REGLAGE GAP 1 ,2 & 4\021240 (Tournage 1902-1185-1259) - Copie

Ensuite je souhaite que dans les autres fichier ce completer par des donnée (fichier ci-joint) la macro récupère toute la fiche réglage pour les mettre dans la base de donnée dans la fuille "fiche de réglage" ensuite j'ai créer une autre macro qui lorsque on copie une fiche réglage dans cette feuille cela rempli automatiquement la base de donné. Chemin d'accés ;P:\UAP02\FICHE DE REGLAGE GAP 1 ,2 & 4\021240 (Tournage 1902-1185-1259) - Copie

Donc je souhaite juste que la macro copie toute la feuille de réglage et la colle dans la base de donné et tout ca pour tout les fichiers.

je vous montre ci-joint un exemple d'un fichier et la base de donné vous comprendrez vite ce que j'ai expliquer.

101base-de-donnee.xlsx (33.98 Ko)

Re,

Ha là au moins on sait où on va... Je regarde...

Re,

En pièce jointe le fichier destination modifié. Enregistre-le dans le même dossier que les autres fichiers puis clique sur le bouton Récup. Code commenté.

490base-de-donnee.xlsm (31.35 Ko)

Merci beaucoup !!!!!!!!!!

Je viens de le tester, de vérifier et tout marche a merveille c'est exactement ce que je souhaité.

Merci encore pour avoir prit le temps et la rapidité de m'aider et surtout de m'avoir fait gagner énormément de temps grace à cette macro.

De ma part je vais essayer de la comprendre pour voir comment vous avez fait.

Bonne journée

Rechercher des sujets similaires à "extraire donnees fichiers vba"