Réorganiser les données de plusieurs fichiers dans plusieurs fichiers

Y compris Power BI, Power Query et toute autre question en lien avec Excel
S
Sankreet
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 29 juin 2018
Version d'Excel : 2013

Message par Sankreet » 29 juin 2018, 15:21

Bonjour à tous,

Je possède des données de niveau d’eau, de température, et de date/heure sur plusieurs années et pour plusieurs sondes.

Les fichiers sont organisés par période. C’est-à-dire que je vais avoir un fichier pour une durée finie avec dans chaque onglet les données pour une sonde (le nom de l’onglet est le nom de la sonde)

Mon but serait de faire un fichier par sonde qui regroupe toutes les données de cette sonde pour toute la période d’étude.

Les fichiers que j’ai ont été fait par quelqu’un d’autre dans un but purement consultatif donc ils ne sont pas vraiment bien organisé...

Ex :
- Les noms des fichiers sont assez brouillons ils peuvent avoir différents noms comme « avril-juillet 14 » ou bien « 04-05-06-07-2014 » ou encore « relevés de niveaux av-juil 2014 ».
- Les dates ne sont pas forcément bien calé par rapport au titre, pour l’exemple des fichiers avril/juillet 2014 la première valeur du fichier pourra être le 04/04 à 12 :15 et la dernière le 01/08 03 :45
- Les fichiers ne couvrent pas forcément la même période de temps la plupart sont sous forme de récapitulatif de 4 mois, d’autres synthétise 1 mois de mesure et enfin certains couvrent une période de 2 semaines. Bien entendu tous les fichiers sont ne sont pas précis sur les dates. (comme précisé dans le point d’avant)
- Tous les fichiers ne couvrent pas les mêmes sondes, je vais par exemple avoir un fichier sur une période de temps pour 10 sondes, un autre sur la même période de temps pour d’autres sondes. Sachant que dans un fichier plus récent les sondes qui étaient ensemble au début ne le sont plus forcément après.
- Les pas de temps des données varient. Le pas de temps peut-être horaires ou en quart d’heure en fonction des différentes dates ou sondes selon les cas
-les fichiers ne comment pas à la première ligne car il y a du blabla au dessus. Normalement ils commencent tous à la ligne 5.

Point positif (oui il y en a un !) les colonnes sont toujours dans le même ordre :
Colonne A : numéro de la mesure (ne m’intéresse pas)
Colonne B : Date/Heure
Colonne C : Niveau d’eau côte NGF
Colonne D : Température eau (°C)

Du coup, ce que je voudrais essayer de faire c’est de faire une macro qui puisse lire le nom de l’onglet dans mon fichier qui lui donnera le nom de la sonde, puis qu’elle récupère les données pour les mettre dans un fichier portant le nom de la sonde. Que cette opération soit répétée pour tous mes fichiers. Que les nouveaux fichiers soient classés de la date la plus ancienne à la plus récente.

En bonus, si tout ça se passe comme prévu je suis sûr d’avoir des doublons au niveau des dates en sortie dans mes fichiers finaux, du coup, je recherche aussi à traquer et éliminer ces potentiels doublons.

Voilà le projet que j’avais en tête après je suis ouvert à toutes propositions qui vous semblent meilleurs !

Je vous joins un fichier que j’ai fait en exemple, pour vous montrer la mise en forme des fichiers, car les données sont confidentielles. N’hésitez pas à demander si vous voulez un exemple plus complet.

Tous conseils sont les bienvenues car c’est la première fois que je me lance dans une macro excel.

PS : je sais que j’ai mis ce post dans un forum excel, mais j’ai déjà travaillé sur matlab et R studio aussi donc si vous pensez que ce projet est plus adapté sur l’un de ces logiciels, n’hésitez pas à me le dire.

PS : j’ai essayé d’être le plus clair possible, si certains des points semblent obscurs n’hésitez pas à demander un éclaircissement.

Merci d'avance.
exemple.xlsx
(22.27 Kio) Téléchargé 20 fois
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'825
Appréciations reçues : 362
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 30 juin 2018, 10:50

Bonjour

Un essai à tester.
Les fichiers obtenus seront dans le même dossier que celui où sera mis le fichier ci-joint.
Cela te convient-il ?
Bye !
Exemple v1.xlsm
(30.86 Kio) Téléchargé 26 fois
S
Sankreet
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 29 juin 2018
Version d'Excel : 2013

Message par Sankreet » 3 juillet 2018, 10:55

Bonjour,

Tout d'abord, merci pour ta réponse.

Ça me conviens bien ! Par contre, je rajoute deux petites questions.

Est-il possible d'appliquer la macro à plusieurs fichiers en même temps ? Et existe-il un moyen de fusionner les fichiers qui ont le même nom ?

Merci d'avance.
j
jmd
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'603
Appréciations reçues : 251
Inscrit le : 8 décembre 2007
Version d'Excel : 365 + PowerBI

Message par jmd » 3 juillet 2018, 12:01

bonjour

salut gmb

il semble que ce soit un job pour Power Query
https://www.youtube.com/watch?v=3CVUfgdYcHo

M est un langage d'avenir, pas VBA. C'est mon avis perso de moi à moi et ça se discute :mrgreen:

amitiés à vous
Apprenez les fonctions d'Excel.
Exemple "Mettre sous forme de tableau", TCD, "Récupérer des données".
Apprendre les fonctionnalités "récentes".
S
Sankreet
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 29 juin 2018
Version d'Excel : 2013

Message par Sankreet » 4 juillet 2018, 15:37

Bonjour,

Après quelques recherches. j'ai trouvé ce code pour ouvrir les fichiers d'un dossier.

Mon problème est que je n'arrive pas à le faire marcher avec le premier code.

Voici le code que j'ai trouvé :
Sub test()
 
Dim repertoire As String
Dim wbook As Workbook
repertoire = "C:\Users\TOTO\Downloads\"

unFichier = Dir(repertoire & "*.xls")
While unFichier <> ""
    Set wbook = Workbooks.Open(repertoire & unFichier, , True)
    'code a réaliser ici
    wbook.Close False
    unFichier = Dir
Wend
End Sub 
Voici le code que m'a founi gmb :

Option Explicit

Dim f As Worksheet

Sub CréerUnFichierParOnglet()

 For Each f In Worksheets
        If f.Name <> "Menu" Then
            f.Copy
            With ActiveWorkbook
                .SaveAs ThisWorkbook.Path & "\" & f.Name
                .Close
            End With
        End If
    Next f
    
End Sub
Je me suis dis que ça pouvait venir de Option Explicit car la variable unFichier n'est pas défini. Mais quand j'enlève Option Explicit, le code marche mais ne produit rien.

Un coup de main serait le bienvenue !

Merci d'avance

PS : jmd, merci pour la proposition de l'effectuer sous M mais vu que je commence à comprendre deux trois trucs sous vba je suis plus motivé à rester dedans que de repartir à 0.
S
Sankreet
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 29 juin 2018
Version d'Excel : 2013

Message par Sankreet » 13 juillet 2018, 08:49

Bonjour,

Je me permet de mettre un petit "up" car je suis toujours bloqué dans cette macro.

Le moindre conseil est le bienvenue.

Merci :)
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'825
Appréciations reçues : 362
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 13 juillet 2018, 09:00

Bonjour

Désolé mais je ne comprends pas très bien ce que tu veux faire…

Bye !
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message