|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Guillaume BARJOTIngénieur en hydraulique urbaine Inscription : février 2011 Messages : 28 ![]() |
Bonjour à vous tous.
Je cherche à me faire un petit bout de code pour me simplifier la vie mais je bloque sur certains points. Voici le concept. Je récupère un fichier d'enregistrement de pluviométrie au pas de temps minute sur X mois (soit 220505 lignes sur 5 mois). Le fichier est organisé en selon trois colonnes principale : "DATE/Pluie (mm)/Intensité(mm/h)" La date comprend aussi l'heure t la minute. J'ai donc, sur X mois, autant de lignes qu'il y a de minutes. Bien sur, comme il ne pleut pas en continu, beaucoup de ces lignes contiennent des 0. Je souhaite donc "extraire" les épisodes pluvieux. Pour poser le vocabulaire, un épisode est une suite d'évènements au pas de temps minutes. Un épisode d'1 heure contient donc 60 évènements. En sachant que :
Ainsi, par exemple, une pluie isolée (distante de plus de T de l'évènement suivant et précédent) de 1 minutes est à la fois un épisode et un évènement. S'il est supérieur à S il doit être "extrait", sinon non. Autre exemple, un évènement nul (0) est inférieur à S mais s'il est proche d'un autre évènements (distant de moins de T avant ou après) supérieur à S il doit être "extrait" car il permet de reconstituer l'épisode au complet par "extrait", j’entends une copie de la valeur des trois colonne sur une nouvelle feuille. Ainsi, de mon tableau de base, je récupère un tableau ne comprenant que les épisodes pluvieux, sans 0 "inutiles" (non inclus dans un épisodes) et je passe de 220505 lignes à environ 30 000 sur 5 mois (voire moins en fonction de la pluie mesurée et des mois considérés) Pour l'instant, j'ai essayé, avec mes maigres connaissance, de faire ceci : Code :
Évidemment, cela ne marche pas, mais je ne sais pas pourquoi. a noter que mes compétences étant plus que limitées, le code donné ne répond aps tout à fait à mes propres exigences : il ne vérifie pas si le total d'un épisode fait plus que le seuil S. Si quelqu'un de charitable a une idée pour me débloquer ou voit pourquoi cela ne marche pas, je suis preneur. Merci d'avance. EDIT : le code contenait deux erreur : il partait de 0 pour le Loop, ce qui n'est pas possible. Maintenant il pars de 2 (en-têtes de colonnes). J'ai rajouté une variable faisant référence à ma feuille de donnée (qui contient les valeurs de T et S) Le programme s'arrête à la ligne 32767 pour dépassement de capacité. |
||
|
|
00
|
|
|
#2 | |
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : juin 2007 Messages : 480 ![]() |
Bonjour,
Sans aller décortiquer le code, j'ai une première remarque sur la base de l'aide Excel : Citation:
|
|
|
|
10
|
|
|
#3 | |
|
Membre éprouvé
![]() Franck PRESSEInscription : août 2010 Messages : 202 ![]() |
Bonjour,
Sans décortiquer, non plus, le code : Citation:
1- Clic sur l'entête d'une colonne, 2- Données/Filtres > filtre automatique, 3- Cliquer sur le menu déroulant situé dans la colonne "Pluie" choisir "personnalisé" 4- "Sélectionner les lignes pour lesquelles" Pluie choisir dans le menu déroulant de gauche "différent de" et à droite inscrire 0 Cliquez sur OK Un simple copié collé dans une autre feuille (ou un autre classeur pour ne pas alourdir celui-ci) vous permet de n'obtenir que les épisodes pluvieux en 3-4 clics...
__________________
Cordialement, Franck P. Ps : n'oubliez pas de placer vos posts comme "résolus" ( ) si tel est le cas...
|
|
|
|
00
|
|
|
#4 |
|
Membre actif
![]() Inscription : novembre 2008 Messages : 188 ![]() |
Sinon, c'est pas pour faire mon rabat-joie mais Access me semble beaucoup plus indiqué pour ce genre de problème.
|
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() J-Pierre CatherineConception Calcul Inscription : juillet 2007 Messages : 659 ![]() |
Bonjour,
Sans passer par Access, j’enregistrerais, via Vba les données du tableau dans un fichier txt et je requêterais dedans, Donne un extrait de ton tableau en csv (je n’ai pas 2007 sur mon poste) afin de voir Bon courage
__________________
Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci ![]() ---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------
|
|
|
00
|
|
|
#6 | ||||
|
Invité régulier
![]() Guillaume BARJOTIngénieur en hydraulique urbaine Inscription : février 2011 Messages : 28 ![]() |
Merci à tous pour vos commentaires.
Effectivement, Access serait pas mal adapté pour ce genre de problèmes, seulement voila, je dialogue avec des gens qui ont une peur panique des mots Access, Base de donnée ou encore macro. ils s'imaginent qu'ils vont "perdre le contrôle" ou encore qu'ils ne sauront pas utiliser l'outil. Enfin bref, ça c'est mon souci au quotidien. Du coup, quand je me développe un petit outil de calcul qui peut aussi servir aux autres, je me limite à VBA et à Excel, comme ça, pas de traumatisé et l'outil est utilisé plutôt que de rester dans un coin parce que les gens en ont peur. Pour le reste, j'ai pas mal avancé sur mon projet. Au total j'ai fait le choix de faire plusieurs sub indépenadntes :
Le tout marche bien et j'ai aussi fait un bouton qui lance les 4 première étapes en une seule fois (pourquoi ne pas m'avoir fait tout de suite ?? Eh bien c'est encore cette histoire de contrôle sur le processus). La difficulté des codes (qui n'en est pas une avec un peu de rigueur et de logique) réside dans la gestion des boucles imbriquées : une boucle qui compte les lignes de destination et dans cette boucle une autre qui compte pour parcourir le tableau. Une fois ce principe acquis, le reste, c'est juste de la mise en musique. Pour info, je poste le code de la première et de la troisième sub. Alors bien sur, cela n'a rien du professionnalisme de certains code vu ici mais cela à le mérite de fonctionner, assez rapidement et sans accros. Code :
Code :
|
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com