[VBA] Importer fichier csv dans un autre

Bonjour,

Je dispose de deux fichiers .CSV qui sont des mesures de température en fonction du temps que je reçois d' une machine. Je voudrais faire un programme qui me permette, a partir d' un classeur vide , de regrouper les deux fichiers csv sur une même feuille.

De plus , les deux fichiers ne possèdent pas les mêmes points de mesure , l' un enregistre toutes les minutes et l' autre toutes les 5 minutes, serait il possible de ne garder que les données qui ont été enregistrées à la même heure ?

Et je voudrais que le code soit adapté pour d' autres fichiers CSV car la machine en question envoie un paire de fichiers tous les 2 jours avec un nom différent.

En espérant que cela soit faisable ... et que j' ai été assez explicite ...

Merci d' avance

Ci joint deux fichiers CSV que j' utilise et le code dont je dispose pour l' instant pour traiter les données CSV et les mettre sous forme de graphique:

22of4270acs2n1.csv (16.43 Ko)

Bonjour,

Il te sera possible de spécifier les fichiers que tu veux fusionner à chaque fusion de donnée?

Les data seront toujours rangées sur la colonne A?

Quelle serait la forme finale de ton fichier? Deux colonnes, une avec les data de ton premier fichier, l'autre avec les data du deuxième? (Pour les heures identique! Les autres données on les efface)

Quel serait le format final de ton fichier?

A te lire,

Yann

Bonjour,

Oui il sera possible de spécifier les fichiers , j' y ai facilement accès. Je veux juste ne pas avoir à changer le chemin spécifié dans le code a chaque fois. ( que ce soit fait de manière dynamique )

Concernant la forme finale du fichier, il me faudrait dans un premier temps effectivement 2 colonnes : une avec les data du premier fichier, l'autre avec les data du deuxième .Et une fois que j' applique mon code , Avoir une colonne avec les heures et toutes les autres colonnes avec les différents relevés de température .

Le but final étant d' avoir toutes les mesures sur un même graphique et non sur 2 comme je le fait pour l' instant.

Cdlt.

Voilà pour ta macro, je t'ai mis directement ça dans un fichier!

Je te laisse cliquer pour voir ce que ça donne!

Tu remarquera que ton extraction toute les minutes n'est pas forcement effectuée toute les minutes d'ailleurs

Ps: Il y a probablement plus simple à faire comme macro, mais je suis un peu fatigué, je la retaperai à l'avenir si tu en ressent le besoin!

Ps2: Du coup ne m'en veux pas c'est pas forcement ultra commenté!

102fusion-csv.xlsm (26.16 Ko)

Merci beaucoup ! C' est exactement ce que je souhaitais avec les MsgBox pour les choix des deux fichiers !

Juste un petit problème au niveau des courbes que je ressors sur le graphique qui présentent des discontinuités sûrement du fait qu' on a retiré trop de points de mesure ? Saurais- tu si on peut éviter cela ?

Apres si un jour tu as le temps de commenter ou simplifier pour que j' arrive a comprendre ce code ça serait génial . Je vais quand même me pencher dessus et essayer de comprendre par moi-même pour l' instant .

Sinon franchement c' est parfait !

Merci encore !

Cdlt

Ci joint le résultat :

36fusion-csv.xlsm (115.43 Ko)

Mais de rien!

Pour les discontinuités je pense que ça viens du fait que l'extraction toutes les minutes n'est en fait pas faite toute les minutes.

Tu as parfois des décalages de quelques secondes qui te font passer sur la minute supérieure, et du coup l'heure n'est pas identique à celle qui est extrait toute les 5mn!

Pour palier ce problème il faudrait peut être tester sur l'heure fixe (toute les 5mn) est présente sur l'extract de chaque minutes, et dans le cas ou elle n'est pas présente, prendre l'extract le plus proche.

Mais un peu complexe! Voit peut être plutôt pour t'assurer que l'extract ait bien lieu toute les minutes! Comme ça il y aura plus de pb!

Si j'ai le temps j'essaierai de te faire ça dans le week end, et j'en profiterai pour simplifier/commenter, mais je vais pas pouvoir être dispo avant!

N'oublie pas de mettre ton sujet en résolu si c'est bon pour toi!

Bonne journée

D' accord !

Encore merci !

Cdlt

Bonjour,

En fait j' ai un petit problème avec cette macro , lorsque je l' applique à deux autre fichiers CSV , le graphique me sort n' importe quoi et je ne vois pas d' où cela peut venir . Que faut il modifier pour qu' il s' adapte à n' importe quel fichier CSV ?

Ci- joint les 2 fichiers pour l' essai et l' excel pour exécuter la macro.

Merci.

12of4247bcs2n2.csv (18.14 Ko)

Bonjour Topek74, Bonjour le Forum,

Je regarde ça, je reviens avec le debug!

Edit: A première vue, la macro garde les extract de chaque minutes..! Je vais réparer ça!

Bizarre, avec les deux fichiers précédents il n'y avais pas ce problème!

Oui je n' ai pas compris non plus les raisons du probleme.

Merci !

Voilà le debug!

Le problème venait du fait que je reconnaisse l'extract / mn via le nombre de ligne total du fichier. (un extract/mn compte logiquement 5 fois plus de data que l'extract /5mn)

Ici ton extract/mn compte moins de lignes que ton extract /5mn, la macro inversait donc le traitement de tes data.

J'ai changé ce fonctionnement là, et ça devrait tourner correctement!

Mais, sur les deux fichiers que tu as donné, il n'y à qu'une seule heure en commun présente sur les deux extracts (10h40 - 28/04/2017). Du coup le graphique ne donne pas grand choses!

Donne moi tes retours!

ah d' accord !

Effectivement le graphique ne donne vraiment rien ^^ Il serait peut être plus judicieux de prendre 1 mesure toutes les 3 ou 4 mesures plutôt que d' afficher seulement les mesures faites à une même heure ? Car je pense que ce cas peut se reproduire assez souvent. Et il est vrai que je n' y avait pas pensé.

Est ce faisable ?

Merci .

Ci joint le graphique que j' obtiens . N' y aurait - il pas un problème avec la sélection des données ?

recuperation debug

Tout dépend de ce que tu veux faire, le principal problème de mon point de vu, c'est que tu as un relevé (extract/5mn) qui commence lorsque l'autre fini (extract/mn).

Il me semble avoir compris que ton graphique se "nourrit" des data des deux relevés en même temps. Ici même en gardant toutes les heures dispo, ton graphique ne sera "complet" que sur une plage horaire de trois minutes.

On peu tout à fait garder 1 data/ 4 ou 1 data/3, mais le fond du problème semble surtout venir du fait que les data concernent deux plages horaires différentes..!

Edit Concernant le graphique, il ne te reste qu'une ligne de data, de mon point de vu, c'est normal u'il n'affiche rien, il lui manque une deuxième série de point au minimum.

Donc on est un peu bloqués alors ^^

Ce serait peut être mieux de faire cela sur 2 graphiques distincts alors ce sera plus simple mais toujours avec la fusion des deux fichiers au début pour avoir les données sur une même feuille.

Peut on faire quelque chose de lisible en mettant les 2 graphiques côte à côte ou l' un au dessous de l' autre ?

Merci.

Avez vous le temps de modifier ce programme pour le faire en 2 graphiques ( mais toujours avec la fusion des fichiers au début ) ?

Je pense que le graphique serait plus lisible et cela permettrait d' avoir tous les points de mesure et d' être plus précis dans l' analyse des courbes.

Bonjour Topiek, Bonjour le forum!

Je te fais ça dans la journée! Tu veux les deux graphes sur une même feuille ou bien deux feuilles différente?

Pour le prélevé de toute les minutes, je laisse les data toute les minutes ou je t'en met 1/x? (Je peux d’ailleurs te laisser le choix de la valeur de x si tu le souhaite! )

A te lire,

Yann

Bonjour !

D' accord super ! Sur une meme feuille ce serait cool si c' est lisible sinon sur 2 . Et du coup je pense que toutes les minutes c est bien, pas besoin d' en supprimer ( si ca reste lisible ) sinon 1/2 devrait suffire.

Merci

Rechercher des sujets similaires à "vba importer fichier csv"