Ne garder que la première donnée d'une série d'heures

Bonjour à tous,

Comme je l'indiquais dans mon dernier sujet, je collecte des données en csv depuis une station météo.

Celle-ci enregistre toutes les x minutes.

Il y a 288 lignes par jour. N'en garder que 8

La première de: 1h00

La première de: 4h00

La première de: 7h00

La première de: 10h00

La première de: 13h00

La première de: 16h00

La première de: 19h00

La première de: 22h00

Dans le fichier, ne garder que celles en jaune exemple effectué manuellement sur les deux premières lignes(attention dans le fichier de traitement, les lignes ne sont pas en couleur)

En finalité, je désir pouvoir générer un graphique "déroulant" sur 4 semaines, mais là, c'est une autre question, qui n'est peut être pas réalisable.

pour l'instant, nous allons nous contenter seulement d'éliminer les lignes superflues.

Merci pour votre précieuse aide

@+

Robert

30extractdonnees.xlsm (46.78 Ko)

Bonjour Robert,

Suggestion en pièce jointe, largement inspirée de l'exercice précédent, mais avec, dans la feuille Paramètres :

  • la ligne de début de boucle
  • la colonne où sont stockées les heures
  • le format dans lequel sont récupérées les heures
  • une liste des valeurs à conserver

Ce qui permet de n'avoir qu'une seule macro pour les deux cas de figure...

Pour tester :

  • mettre les paramètres à jour
  • sélectionner la feuille à traiter
  • déclencher la macro (CTRL+MAJ+B)

Des feuilles nommées BK contiennent des sauvegardes des données, au cas où...

Espérabnt avoir aidé,

Daniel

24boby71c-v2.xlsm (170.71 Ko)

Bonjour Dan,

Merci pour ta participation.

Je suis surpris de voir des nouvelles feuilles avec des données météo complètes, aurais tu une station météo ?

Ca n'a pas l'ai de fonctionner, j'ai faits tourner le code et au résultat, il reste:

Dates Heures Pression relative (atmosphèrique) Date France Heures France

20140519 144 1010 19/05/2014 00:01:44

20140519 120145 1009 19/05/2014 20:01:45

20140519 150145 1008 19/05/2014 01:01:45

20140519 180145 1008 19/05/2014 06:01:45

20140519 210146 1009 19/05/2014 11:01:46

20140520 2146 1009 20/05/2014 00:21:46

20140520 12146 1010 20/05/2014 02:01:46

20140520 12646 1010 20/05/2014 02:06:46

20140520 15146 1010 20/05/2014 02:31:46

20140520 15646 1010 20/05/2014 02:36:46

20140520 21146 1010 20/05/2014 03:31:46

20140520 21646 1010 20/05/2014 03:36:46

20140520 120147 1012 20/05/2014 20:01:47

20140520 150147 1014 20/05/2014 01:01:47

20140520 180147 1015 20/05/2014 06:01:47

20140520 210147 1015 20/05/2014 11:01:47

Ce ne sont pas les heures que je désir conserver.

Je vais essayer d'analyser le code VBA, mais mes petites compétences dans ce domaines vont rapidement me bloquer.

Je n'aurai pas le temps cet après midi.

@+

Robert

As-tu mis à jour les valeurs à conserver ?

Pour les données, ce sont celles de tes fichiers joints...

Cordialement, Daniel

Re

J'ai modifié les valeurs, ce que je n'avais pas fait avant.

Le résultat est bizarre, il garde bien les bonne données, mais les heures en colonne H ne correspondent plus aux heures de la colonne B ?

20140519 144 1010 19/05/2014 00:01:44

20140519 100145 1009 19/05/2014 16:41:45

20140519 130145 1009 19/05/2014 21:41:45

20140519 160145 1008 19/05/2014 02:41:45

20140519 190146 1008 19/05/2014 07:41:46

20140519 220146 1009 19/05/2014 12:41:46

20140520 1646 1009 20/05/2014 00:16:46

20140520 10146 1010 20/05/2014 01:41:46

20140520 10646 1010 20/05/2014 01:46:46

20140520 13146 1009 20/05/2014 02:11:46

20140520 13646 1009 20/05/2014 02:16:46

20140520 22146 1010 20/05/2014 03:41:46

20140520 22646 1010 20/05/2014 03:46:46

20140520 100147 1013 20/05/2014 16:41:47

20140520 130147 1013 20/05/2014 21:41:47

20140520 160147 1014 20/05/2014 02:41:47

20140520 190147 1014 20/05/2014 07:41:47

20140520 220147 1015 20/05/2014 12:41:47

Oui, c'est ce que j'avais vu sur ton fichier initial... La formule ?

Une version avec un paramètre supplémentaire : la possibilité d'enregistrer deux listes de valeurs à conserver.

Je pense qu'on pourrait se servir de la fonctionnalité "scénario", à ce stade...

Cordialement,

Daniel

11boby71c-v3.xlsm (136.67 Ko)

Bonjour,

Merci Pour le temps que tu passes sur mon problème.

J'ai refaits un essai.

Il est exact que je me fiais à la colonne H ou j'avais transformé les heures et il y avait une erreur.

J'ai refaits tourner le code, mais il y a toujours une anomalie, pour les 01, 04 07 il prend en compte les mn.

Je ne comprends pas la suggestion de "scénario"

Voici le résultat

20140519 144 1010 19/05/2014

20140519 100145 1009 19/05/2014

20140519 130145 1009 19/05/2014

20140519 160145 1008 19/05/2014

20140519 190146 1008 19/05/2014

20140519 220146 1009 19/05/2014

20140520 1646 1009 20/05/2014

20140520 10146 1010 20/05/2014

20140520 10646 1010 20/05/2014

20140520 13146 1009 20/05/2014

20140520 13646 1009 20/05/2014

20140520 22146 1010 20/05/2014

20140520 22646 1010 20/05/2014

20140520 100147 1013 20/05/2014

20140520 130147 1013 20/05/2014

20140520 160147 1014 20/05/2014

20140520 190147 1014 20/05/2014

20140520 220147 1015 20/05/2014

Même en mettant la colonne B au format 000000, le résultat est erroné.

Je n'arrive pas à trouver d’où pourrait venir le problème dans le code.

Je remet mon fichier allégé et avec une feuille de sauvegarde des données, en rouge les lignes qui devraient être supprimées, en fond jaune, les lignes qui devraient rester.

De plus, si nous avons un traitement qui a déja été fait (ici manuellement 2 première lignes conservée en jaune), le code efface la seconde ligne

Merci pour ton aide, mes compétences en VBA sont dépassées.

@+

Robert

Effectivement, petit problème réglé dans le code...

Cordialement, Daniel

12boby71c-v3.xlsm (136.67 Ko)

Bonsoir,

Je doit avoir une configuration autre que la tienne car ça ne fonctionne pas.

Pour moi, office 2007

Il ne reste que 1 ligne

Dates Heures Pression relative (atmosphèrique) Date France Heures France

20140519 144 1010 19/05/2014 00:01:44

@+

Robert

Voilà le fichier en position de résultat, c'est-à-dire juste après l'exécution de la macro, avec les paramètres suivants :

  • heures à conserver : 01 et 04
  • format des heures : numérique
  • ligne de début de boucle : 2
  • colonne contenant les heures : B

Les lignes conservées sont :

  • le jour 20140519 avec l'heure 40145 soit 4 heures
  • le jour 20140520 avec l'heure 10146 soit 1 heure
  • le jour 20140520 avec l'heure 40146 soit 4 heures

Aurais-je fait une erreur de transmission de fichier ?

Je vérifierai en détail demain dans la journée, mais pour moi, avec les données fournies, c'est le résultat attendu...

Cordialement, Daniel

Apparemment ça n'était pas le bon fichier, ça a l'air de fonctionner.

Seul petit bémol, ça ne choisi pas la liste 2 malgré mon choix, mais je vais regarder de plus près.

Merci beaucoup pour ton aide et ta patience

Robert

A propos des scénarios :

- le gestionnaire de scénarios permet de définir, sous un nom choisi, un ensemble de cellules composant les variables d'un scénario. En appelant le scénario choisi, toutes ses valeurs se mettent à jour en même temps. Cela permettrait, dans ton cas, d'appeler les valeurs de la feuille Paramètres en un clic.

Voir Données / Analyse de scénarios / Gestionnaire de scénarios.

Cordialement, Daniel

Bonjour,

Ton problème m'a intéressé et j'ai essayé de le résoudre sans macro.

J'espère avoir bien compris tes données, notamment l'affichage des heures en 240000ème ainsi que le fait que tu as toujours 2 jours de données et que l'anomalie de l'absence de l'heure 1 dans la première journée ne risque pas de se reproduire pour les autres heures désirées.

Je te propose donc une solution différente qui ne demande pas de macro. Les 2 colonnes (A et B) qui servent aux tests peuvent être masquées si tu ne veux pas les voir ou les imprimer.

Il y a un onglet "Comment cela marche" dans le classeur qui essaie de décrire les opérations. Si tu as des explications complémentaires à demander, n'hésites pas à me revenir.

Merci de me confirmer si cela correspond à tes attentes (même si tu préfères utiliser la solution macro). Juste pour savoir si j'ai bien appréhender le sujet (notamment le calcul des heures qui m'a pris un certain temps avant de comprendre ce que signifiait les chiffres originaux.

A+

Chris

14meteo-chris.xlsm (108.23 Ko)

Bonsoir Chris1945,

Merci pour ta participation.

Ça a l'ai intéressant. le seul bémol, c'est que mon fichier exemple comporte 2 jours, mais le fichier final peut aller sur 1 an.

Je vais quand même analyser ton super travail car il est fort bien fait.

Je serais également certainement contraint au VBA car comme je l'indique plus haut, c'est un petit fichier exemple.

Mon fichier final aura les graphiques températures, pluie, baromètre, vent etc... donc à la base, j'importe en VBA les données d'un fichier texte en csv.

@+

Robert

Bonsoir à tous,

J'ai procédé aux essais.le code VBA fonctionne très bien, mais le gros soucis, c'est que dans mon fichier final, j'ai 137532 lignes, pour l'instant et le traitement s'effectue à environ 6000 ligne/heure donc je vais essayer de trouver une autre astuce.

Merci à tous les deux d'avoir apporté de votre temps et de partager.

A bientôt sur le forum

Robert

Je crois qu'il faudrait attaquer par la fin, sinon Excel passe le plus clair de son temps à remonter les lignes en dessous de chaque suppression...

J'essaie de regarder ça demain...

Cordialement, Daniel

Bonsoir,

En fonction de ta réponse, j'ai examiné s'il n'y avait pas de possibilité d'adapter la formule et je pense avoir trouvé une solution.

Le fichier étant très volumineux, j'ai du le sauver en mode binaire et te le transmettre via l'application ci-joint. Il s'agit d'un site qui permet de transmettre des fichiers en cliquant sur un lien. Voici le lien :

https://www.cjoint.com/c/EIDsm6VhmeF

Tu cliques dessus et tu suis les instructions et tu recevras le fichier.

Je te conseille de le sauver sous xlsm.

J'espère que cela fonctionnera : c'est la première fois que j’emploie ce sauvetage binaire.

J'ai adapté les explications en fonction des modifications apportées.

Le principe reste le même sauf que, pour pouvoir faire face à une année de données, j'ai remplacé le test OU qui testait 2 possibilités par un test qui va chercher le numéro de lignes dans une matrice (onglet GRILLE) qui prévoit tous les cas de figure pour les 8 lignes par jours et pour un an. Cette matrice s'adapte automatiquement en fonction de la première date trouvée dans l'onglet Sauve_données.

Donc tu peux sauver tes données dans les colonnes C ; D ; E. Attention : pour éviter les maladresses, j'ai protégé tous les onglets (sans mot de passe donc tu peux enlever les protections). Seuls les colonnes C D et E sont déprotégées et peuvent donc être écrasées.

Le fichier est lourd mais réagit bien. Il se charge en quelques secondes et se sauve pareil.

J'ai dupliqué tes données pour tester sur plusieurs jours et tout semble bien fonctionner. Peux tu charger tes données pour voir si tout se passe convenablement ?

Enfin si cette solution t'intéresse naturellement.

A+

Chris

Bonsoir Robert,

Une nouvelle version, qui colorie en jaune les lignes à supprimer (176 000 lignes en 20 secondes environ).

Si ça te convient, on peut essayer une macro de suppression plus rapide que précédemment, dans la foulée.

Toujours CTRL+MAJ+B pour lancer la macro.

(reconstituer un jeu d'essai, j'a idu supprimer la plupart des lignes, question de taille maximum du fichier joint...).

Cordialement, Daniel

Bonsoir,

Merci beaucoup.

Ça a l'air de fonctionner et très rapidement. A savoir si en suppression de lignes ça ira aussi vite ?

J'ai faits l'essai sur la feuille en numérique, ou il y a toutes les données, comme cela, je n'ai que 1x à faire tourer le code, ensuite, je déplacerais les données dans les feuilles adaptées.

Ensuite, restera à créer des graphiques.

Bonne soirée

Robert

Je vais essayer de rédiger la macro de suppression, dès que possible...

Je crains de manquer de temps, mais dans le week-end, c'est jouable...

Ce ne sera pas le plus difficile du travail : en testant la couleur, et en commençant par le bas, c'est simple à programmer, et ça devrait être assez rapide à l'exécution...

Si quelqu'un veut s'en charger avant, je ne lui en voudrai pas !

Cordialement, Daniel

Rechercher des sujets similaires à "garder que premiere donnee serie heures"