Récupération de données dans plusieurs fichiers Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
A
AlexandreM54
Jeune membre
Jeune membre
Messages : 10
Inscrit le : 22 mars 2016
Version d'Excel : 2010 EN

Message par AlexandreM54 » 29 mars 2016, 06:49

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
databasebuildup.zip
(47.18 Kio) Téléchargé 14 fois
j
jmd
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'656
Appréciations reçues : 251
Inscrit le : 8 décembre 2007
Version d'Excel : 365 + PowerBI

Message par jmd » 30 mars 2016, 10:33

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"
Apprenez les fonctions d'Excel.
Exemple "Mettre sous forme de tableau", TCD, "Récupérer des données".
Apprendre les fonctionnalités "récentes".
A
AlexandreM54
Jeune membre
Jeune membre
Messages : 10
Inscrit le : 22 mars 2016
Version d'Excel : 2010 EN

Message par AlexandreM54 » 31 mars 2016, 05:32

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
j
jmd
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'656
Appréciations reçues : 251
Inscrit le : 8 décembre 2007
Version d'Excel : 365 + PowerBI

Message par jmd » 31 mars 2016, 09:30

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
http://forum.excel-pratique.com/excel/c ... 73967.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)
Apprenez les fonctions d'Excel.
Exemple "Mettre sous forme de tableau", TCD, "Récupérer des données".
Apprendre les fonctionnalités "récentes".
A
AlexandreM54
Jeune membre
Jeune membre
Messages : 10
Inscrit le : 22 mars 2016
Version d'Excel : 2010 EN

Message par AlexandreM54 » 31 mars 2016, 12:33

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
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message