Complétion valeurs manquantes d'un fichier Météo

Bonjour à tous,

Je travaille actuellement sur des relevés météo provenant de stations météorologiques. Je récupère les données qui m'intéressent sur internet ; il s'agit des températures/humidité au pas de temps horaire ou infra-horaire.

I] Première étape (déjà réalisée)

  • -> Suppression des relevés intermédiaires "METAR" qui ne m'intéressent pas (il s'agit des relevés infra horaires - toutes les 30 min - et je ne conserve que les relevés horaires SYNOP)
  • -> Remplacer tous les "." par des "," et stocker les données extraites sous format nombre au lieu du format texte
  • -> Mise en place d'une suppression systématique des lignes au delà de 8786 (les valeurs débutent à la ligne 2 et dans le pire des cas - année bissextile - l'année comporte 8784 heures, d'où mon choix)
  • -> Affichage du % d'heures manquantes à l'année et d'un MsgBox permettant de donner une idée de la fiabilité du fichier initialement récupéré (je considère qu'au delà de 5% d'heures manquantes sur l'année le fichier est non fiable)
  • -> Affichage de la température moyenne calculée sur l'année à partir du fichier récupéré (afin de pouvoir comparer avec la température annuelle moyenne trouvable sur internet pour la station)

II]

Actuellement, je bloque sur la façon de détecter puis compléter les valeurs manquantes. Dans les fichiers récupérés il manque toujours des heures, cela peut être 1h00 ; 2h00 ; 3h00 (à la suite ou non dans une même journée) voire il peut manquer une journée complète :

  • -> Le problème est le saut de ligne brutal : on peut passer d'un relevé à 7h00 ("S 07h") à un relevé à 10h00 ("S 10h") et il n'y a pas de lignes vides intermédiaires. J'aimerais pouvoir rajouter ces lignes manquantes et compléter automatiquement les cellules colonne A nouvellement créées avec "S 08h" ; "S 09h".
  • -> Si le nombre d'heures manquant est inférieur ou égal à 3 j'aimerais compléter les valeurs manquantes par la moyenne de la valeur précédente avec celle de la valeur suivante (par exemple il fait 10°C à 7h00 et 20°C à 10h00 alors je complète 8h00 et 9h00 avec la valeur 15°C)
  • -> Si ce nombre d'heure manquant est supérieur à 3, j'aimerais compléter la plage de valeur manquante par les moyennes individuelles de chaque heure concernée prises sur la journée qui précède et la journée qui suit (par exemple il me manque les valeurs de 12h00 à 16h00 sur ma journée, je vais calculer disons la valeur à 14h00 en faisant la moyenne du 14h00 journée précédente avec le 14h00 journée suivante)

Honnêtement, je pense que c'est assez compliqué (d'autant plus que s'il me manque une journée complète - de 0h à 23h - je ne peux pas m'en apercevoir car je ne dispose pas des dates dans le fichier que je récupère). J'ai mis en pièce jointe un exemple de fichier avec ma macro dedans (Mef_extraction) et j'ai laissé initialement le fichier tel qu'il est extrait (lancer la macro permet de le mettre en forme)

Merci d'avance si vous avez quelques idées sur la question, toute aide est la bienvenue !

Bonjour à toi,

merci à toi pour toutes les explications qui m'ont permis de bien comprendre ta problématique, pour ton souci de jour manquant, je ne saurais pas détecter non plus un jour manquant, mais on peut bricoler quelque chose en suivant cette théorie: un changement minimales et maximales entre 2 journées n'est pas brutal, sauf si il manque un jour au milieu, donc là où le changement de minimales et maximales est le plus brutal, on va supposer que c'est entre ces 2 journées qu'il manque un jour (ça lissera un peu les variations de température, et comme on ne sait pas où se trouve le jour...).

Pour l'écart entre tes heures, je pense que c'est faisable, avec la fonction replace, tu peux changer "S 07h" en 7, et "S 10h" en 10 par exemple, après il suffit de faire la différence entre les 2 lignes pour savoir combien il te manque d'heures. Le souci que je vois avec ton calcul des heures c'est si tu rencontres ce cas: première ligne: 10h, suivante: 17h, tu dois faire une moyenne des températures pour les heures entre 10h et 17h sur le jour précédent et le jour suivant, problème, le jour suivant, il manque les températures entre 15h et 19h, tu ne peux donc pas faire de moyenne pour 15h et 16h. Un moyen de contourner ça serait encore une fois de faire une hypothèse, tu te dis que si à 10h il fait 10°C, et à 17h il fait 17°C, alors il a fait 11°C à 11h, 12°C à 12h et ainsi de suite, en te disant que la température a changé de façon linéaire, c'est faux mais je ne vois pas d'autre solution qui soit imparable

Hello,

Merci de ta réponse ! Dans un premier temps je pense que c'est une bonne chose d'utiliser la fonction "Replace" comme tu le suggère, ça me permettra de calculer la différence entre les heures.

En ce qui concerne la stratégie pour compléter les valeurs manquantes c'est effectivement imprécis mais ce n'est pas si grave, de toute manière il est très compliqué d'estimer correctement ces valeurs manquantes. Dans la mesure où il ne m'en manque pas trop sur l'année ce n'est pas dramatique pour mon usage.

Je vais essayer d'y aller pas à pas et dans un premier temps de détecter lorsqu'il manque seulement des heures sur une journée afin d'insérer le nombre de lignes manquantes en fonction du nombre d'heures manquantes puis de compléter la colonne A de ces lignes avec l'heure correspondante. Si déjà j'ai cette première étape ça ne sera pas si mal et je m'attaquerais pour la suite à compléter les valeurs qui manquent.

Pour ce qui est de la question du jour manquant dans sa totalité, c'est un cas que je vais laisser de côté pour le moment car je pense que j'ai déjà bien assez à faire avec ça ! Merci pour ton aide, je vais continuer à avancer sur le code en y allant pas à pas

Re,

ça marche! si jamais tu as besoin d'aide pour le code n'hésite pas

Rechercher des sujets similaires à "completion valeurs manquantes fichier meteo"