Récupération de données dans plusieurs fichiers

Bonjour à tous,

Je viens vers vous aujourd'hui car j'ai quelques soucis dans une macro pour construire une base de données.

Je dispose d'un dossier contenant plusieurs fichiers ayants la même architecture (mais pas les mêmes variables ni le même nombre de colonnes).

Je souhaite remplir un fichier de récupération avec les données de chaque fichier Excel. Il faut que le remplissage se réalise par colonne afin que je puisse garder toutes mes variables et remplir la bdd au fur et à mesure.

J'ai aussi un autre soucis. Je souhaite mettre en forme la date (format d-m-yyyy H/Mn/S en m/d/yyyy) afin de pouvoir traiter mes données par la suite. J'ai bricolé quelque chose mais lorsque j'execute la macro tout mon fichier et mis en forme et donc les commentaires de mes fichiers se font séparer en X colonnes....

Ci dessous mon code, je joins aussi l'archive avec des fichiers permettant la comprehension de mon problème:

Sub recupdata()

'Importation of the folder with ressources

Dim File As String, Path As String
Dim Wb As Workbook
Path = "\Dossieressai" '<---- Mettre le chemin d'accès au dossier : Dossieressai
File = Dir(Path & "\*.xls")

'Importation of the data collector file with a "already open" test
On Error Resume Next
Workbooks("Fichierrecup.xls").Activate
If Err Then Err.Clear: Workbooks.Open Filename:="\Fichierrecup.xlsx" '<--- Mettre le chemin d'accès au fichier : Fichierrecup

    Do

        Set Wb = Workbooks.Open(Path & "\" & File)

            'Modification of the date format

            Application.DisplayAlerts = False
            Columns("C:C").Select
            Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
            Columns("C:C").Select
            Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
            Range("B13").Select
            Range(Selection, Selection.End(xlDown)).Select
            Selection.TextToColumns Destination:=Range("B13"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
            Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
            :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
            Range("B13").Select
            Range(Selection, Selection.End(xlDown)).Select
            Selection.NumberFormat = "m/d/yyyy"
            Columns("C:D").Select
            Selection.Delete Shift:=xlToLeft
            Application.DisplayAlerts = True

            'Collection of the data

            Range("A13").Select
            Range(Selection, Selection.End(xlDown)).Select
            Range(Selection, Selection.End(xlToRight)).Select
            Selection.Copy
            Application.DisplayAlerts = False
            Wb.Close False
            Application.DisplayAlerts = True

            'Pasting of the data

            Activate.Workbook ("Fichierrecup.xls")
            Activate.Sheet (1)
            Range("A2").Select
            Application.DisplayAlerts = False
            Range(Selection, Selection.End(xlToRight)).Select
            ActiveSheet.Paste
            Application.DisplayAlerts = True

            'Data treatment

    File = Dir

    ' Next File
    Loop Until File = ""

End Sub

Merci beaucoup pour votre temps!

Si vous avez des questions parce que je me suis mal exprimé je réponds rapidement.

Cordialement,

Alexandre

21databasebuildup.zip (47.18 Ko)

bonjour

la "bonne" méthode :

  • dans chaque classeur créer une feuille contenant des simples = pointant vers la feuille principale servant à la saisie, et qui a la forme de ton fichier de destination. Ainsi les futures actions seront grandement facilitées
  • à quoi sert de créer une BDD qui regroupe d'autres BDD ? normalement on n'en a pas besoin. Il suffit de faire des TCD, des SOMMPROD, des graphiques etc.

- la mise en forme des dates se fera dans une colonne supplémentaire du fichier de destination, ou bien par Format cellule

tu aurais dû poser les 2 questions séparément

ne pas croire que VBA peut sauver un projet "machine à écrire"

Bonjour et merci pour votre réponse,

Je suis complètement débutant en Excel donc je me débrouille comme je peux!

_ Je ne peux pas créer des références pointants vers mon fichier final car les données sont sur des fichiers inéditables et variants (extraction automatique journalière de datas en .xls par un autre software).

_ Si je demande pour réaliser le regroupement de plusieurs BdD c'est très certainements parce que j'en ai besoin... La finalité de mon projet n'est pas des réaliser des graphs ou autre mais d'implanter automatiquement et journalièrement cette BdD "surchargée" dans un soft qui prendra ces valeurs pour créer des matrices d'estimations statistiques. J'ai donc besoin d'une architecture unique.

_ Pour la mise en forme des dates c'est exactement ce que j'ai essayé. Le soucis vient du fait que ma demande (ajout de colonne et séparation des données) est uniquement sur une colonne et que pourtant lors de l'execution cette action se fait sur tout le fichier.

Alexandre

re

en 2 étapes :

1 - créer un fichier "de copie" des N fichiers bruts d'export. Ces fichiers étant non homogènes, on crée un fichier de N feuilles qui elles sont de même structure.

Feuil1 contient des = qui pointent vers Brutexport1, mais avec la présentation en colonnes telle que tu la veux. Sans les colonnes inutiles.

Feuil2 contient des = qui pointent vers Brutexport2, mais avec la présentation en colonnes telle que tu la veux.

etc.

2-

afin de regrouper toutes ces tables en une seule, créer un autre fichier et faire comme ceci

https://forum.excel-pratique.com/excel/consolidation-de-fichiers-dans-une-feuille-t73967.html

Il devrait être possible de simplement créer une N+1 feuille dans le fichier ci-dessus

Dates : dans chaque feuille de 1 à N, créer une colonne fixe tout à droite contenant la formule de transformation de date (sur une hauteur de 1000 lignes si tes exports bruts ne dépassent pas 1000 lignes, et plus si nécessaire (mais pas à l'infini)

Re,

Merci pour votre réponse, j'ai testé sur quelques fichiers et ça correspond exactement à ce qu'il me faut!

Pour la date ça marche très bien aussi, il y a t'il une explication sur le fait que cela ne marche pas en sélectionnant une colonne à l'infini et pas une plage de données? (par curiosité)

J'ai validé la résolution du sujet

Merci encore,

Alexandre

Rechercher des sujets similaires à "recuperation donnees fichiers"