Extractions de données de plusieurs fichiers vers fichier maître

JPrev

XLDnaute Junior
Bonjour,

J'aimerais savoir s'il est possible (en code vba) de créer une macro qui va extraire dans un fichier "maître" toutes les données d'un ensemble de fichiers pour les compiler.

Cas pratique : J'extrais chaque mois une vingtaine de fichiers excel d'un appareil dans lesquels les données qui m'intéressent sont en colonne A (à partir de A9). Je fais donc manuellement un copier/coller...fastidieux.

Quelqu'un pour m'aiguiller? Cela me suffira en cadeau de Noël :).

Cordialement,

JPrev

P.S : Un exemple de fichier utilisé est en PJ
 

Fichiers joints

sousou

XLDnaute Barbatruc
Bonjour
Un exemple pour accumuler tes données dans le fichier mesure ci-joint.
Ne connaissant pas la structure d de tous tes fichiers, ici tu charge un fichier un par un.
Mais il sera facile d'automatiser pour plusieurs fichiers
 

Fichiers joints

JPrev

XLDnaute Junior
Bonjour,

Merci pour votre réponse tout d'abord :).

Le format des fichiers que j'extrais de mon appareil est le suivant : Fichier CSV Microsoft Excel.

Or, en utilisant votre fichier je ne peux pas les charger :/, y'a-t-il un moyen pour contrer ça?

Cordialement,

JPrev
 

JPrev

XLDnaute Junior
Bonjour,

Merci pour votre réponse :).

Le format des fichier excel extraits de l'appareil est le suivant : Fichier CSV Microsoft Excel

Or, votre macro ne les prend pas en charge.

Comment pourrais-je contrer ça?

Merci, JPrev
 

sousou

XLDnaute Barbatruc
bonjour
Le fichier que tu avais fournit, était xlsx.
Il faudrait que tu fournisses le fichier csv afin que je puisse faire une importation correct.

remplace cette ligne ainsi pour voir les fichier autres que excel
fichier = Application.GetOpenFilename(" (*.*), 1")
 

JPrev

XLDnaute Junior
Bonjour,

Tu es excellent, ton code marche bien :) (j'ai remplacé la ligne). Ca "empile" les données sans remettre les données inutiles (tu as vu que les 10 premières lignes n'ajoutaient rien).

Je n'arrive pas à te joindre un fichier CSV exemple...par mail peut-être? Par mois j'en ai une vingtaine comme ça.

Merci vraiment,

JPrev
 

sousou

XLDnaute Barbatruc
Pour joindre un fichier csv tu le zip et tu pourras le joindre
Mais si cela fonctionne comme cela ce n'est peut -être pas utile.
Pour faire tous tes fichiers d'un seul coup il faudrait faire une boucle reprenant le code, mais il faut pour cela connaître la structure de tes fichiers.
(dans un seul répertoire,le nommage...?)
le principe:
for chaque fichier
Set fichier = Workbooks.Open(fichier)
Call copiedonnees(fichier)
next
End Sub
 

JPrev

XLDnaute Junior
En effet, l'idéal serait qu'en appuyant sur le bouton ça fasse la même chose pour tous les fichiers!

Regarde la photo, je colle tous mes fichiers du mois correspondant dans un répertoire qui s'appelle "Mois Année" (sachant que je peux en créer un qui soit fixe et qui me permette de faire tourner la macro pour ranger les fichiers ensuite).

Par contre je n'ai pas très bien saisi le principe de ta boucle :/

Cordialement,

JPrev
 

Fichiers joints

sousou

XLDnaute Barbatruc
bonsoir
Dans la solution ci-joint.
Tu positionnes le fichier dans un répertoire (ici mesure), et tu ranges tous tes dossiers mensuel dans ce même répertoire.
Mais tu peux imaginer un autre positionnement...

La conversion csv est ici faite avec un ; (semicolon), tu peux modifier en fonction du contenu réel de ton fichier csv ("," ou "." .....
 

Fichiers joints

JPrev

XLDnaute Junior
Bonjour,

J'ai essayé un test mais sans succès. J'ai vu que tu avais passé en commentaires la Sub précédente qui incluait le code pour ouvrir les fichiers csv.

Tu penses que ça peut être ça qui coince?

Merci :).

JPrev
 

JPrev

XLDnaute Junior
Quand je clique sur insérer je ne vois pas mes fichiers en csv

Dans le code que tu as mis, la partie qui permet d'ouvrir ce format est en vert (pour les commentaires)
 

sousou

XLDnaute Barbatruc
Bonjour
La partie mise en commentaire n'est plus utile.
Tu remarqueras que le début de procédure insertion ce trouve en haut de la page du module1
le programme se positionne et te propose de choisir un dossier (msofiledialogfolder).
N'oublie pas que j'ai créé un répertoire 'mesure' dans le répertoire du fichier.
Avec ce choix, le programme va voir tous les fichiers csv contenu dans le répertoire que tu à sélectionner.
Puis il fait le travail.
L'image jointe te montre la configuration des dossiers
Un répertoire mesure
dedans le fichier mesure.xlsm, et un ou des répertoires ici(décembre 2016) contenant les fichiers csv
 

Fichiers joints

JPrev

XLDnaute Junior
Je n'avais pas compris!

J'ai placé du coup dans les bons répertoires les fichiers. Alors ça marche, mais :

- Je retrouve des données des autres mois alors que j'ai pris pour exemple mes fichiers de novembre 2016 (d'où peuvent-ils venir?)
- La conversion des données en plusieurs colonnes n'a pas séparé la date et l'heure
- Je dois cliquer sur OK pour chaque fichier qu'il ajoute

Sinon, vraiment c'est pas mal!!! Penses-tu qu'on puisse régler les problèmes ci-dessus?

Merci,

JPrev
 

Fichiers joints

JPrev

XLDnaute Junior
Voilà le fichier pour Novembre 2016 avec l'ensemble des fichiers collectés.

OK c'est quand tu cliques sur la msgbox pour la fermer. En gros j'ai l'impression qu'il m'affiche le nombre de lignes total remplies et en appuyant sur ok tu relances la boucle avec le fichier suivant.

JPrev
 

Fichiers joints

sousou

XLDnaute Barbatruc
Bonsoir.
1/pour le ok, j'avais oublié de retirer un msgbox qui me servait à la mise au point.
2/ A la vue de tes fichiers csv, le séparateur est l'espace et non le ; alors j'ai remplacé semicolon par space (voir plus haut dans le post)
3/J'ai ajouté un affichage dans la barre de statut le nom du fichier en cours de traitement
3/J'ai ajouté un vérification que le fichier est bien un csv parceque tu as un fichier autre dans le répertoire.
4/J'ai bloqué l'affichage pendant le traitement (gain de temps)
5/J'ai ajouté un message 'opération terminée'
 

Fichiers joints

JPrev

XLDnaute Junior
Ca commence à donner quelque chose de pas mal!! J'ai même réussi à intégrer la macro à mon fichier qui fait de ces données un TCD derrière.

Juste une dernière chose : Pour les 11 premiers jours du mois, il inverse le jour et le mois (Ex :
11/08/2016
au lieu du 08/11/2016)

Une fois que le jour dépasse le chiffre du mois ça rentre dans l'ordre, tu sais si on peut corriger ça?

En tout cas vraiment merci à toi, tu viens de me faire gagner 2heures de travail par mois :p

JPrev
 

JPrev

XLDnaute Junior
Ca marche :).

Des difficultés? Ca va vu ce que tu sais faire derrière c'est peanuts!

En tout cas merci à toi, tu as été top!!!

Bonnes fêtes de fin d'année,

JPrev
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas