Microsoft 365 Trier des données météo

aToulon

XLDnaute Nouveau
Bonjour

J'ai un capteur météo qui collecte toutes les minutes la température et l'hygrométrie sur une carte SD.

Tous les mois j'enregistre sur mon PC le fichier.

J'aimerais pouvoir extraire de ce fichier la température et l'hygrométrie maximale et minimale pour chaque journée du mois.

Je joins un fichier pour l'exemple qui donne les données du début du mois de janvier

En espérant que ma demande est suffisamment claire.

Salutations
 

Pièces jointes

  • Météo....xlsm
    149.3 KB · Affichages: 14

Hasco

XLDnaute Barbatruc
Bonjour,

Dans le fichier ci-joint, j'ai recrée un fichier .csv avec vos données.
Puis ré-importé avec l'assistant d'importation, afin qu'il reconnaisse les dates et le séparateur "." comme séparateur décimal.
1642163977805.png


A cette étape 3 cliquez sur l'entête désirée puis choisissez une des quatre options d'importation. Lorsque ce sont des nombre avec le "." comme séparateur décimal, cliquez sur le bouton "Avancé" (ici caché par la fenêtre qu'il ouvre) puis renseignez les informations idoines.

solution 1 : Une fois les données importées, créer un Tableau croisé dynamique (Feuille TCD)

solution 2 : Créer une requête power query sur les données (Feuille météo...)

Power query pourrait très bien aller chercher les données dans le fichier csv sans les afficher dans un feuille et en tirer les températures et rh min et max.

L'assistant traditionnel d'importation des.csv se fait par :
1642164600473.png


Cordialement
 

Pièces jointes

  • Météo.xlsx
    221.4 KB · Affichages: 2

aToulon

XLDnaute Nouveau
Bonjour,

Dans le fichier ci-joint, j'ai recrée un fichier .csv avec vos données.
Puis ré-importé avec l'assistant d'importation, afin qu'il reconnaisse les dates et le séparateur "." comme séparateur décimal.
Regarde la pièce jointe 1127531

A cette étape 3 cliquez sur l'entête désirée puis choisissez une des quatre options d'importation. Lorsque ce sont des nombre avec le "." comme séparateur décimal, cliquez sur le bouton "Avancé" (ici caché par la fenêtre qu'il ouvre) puis renseignez les informations idoines.

solution 1 : Une fois les données importées, créer un Tableau croisé dynamique (Feuille TCD)

solution 2 : Créer une requête power query sur les données (Feuille météo...)

Power query pourrait très bien aller chercher les données dans le fichier csv sans les afficher dans un feuille et en tirer les températures et rh min et max.

L'assistant traditionnel d'importation des.csv se fait par :
Regarde la pièce jointe 1127534

Cordialement
Bonjour

Je vois que vous parlez de CSV, au départ lorsque j enregistre les données de ma carte SD sur mon ordi, elles sont au format CSV.

Par contre j ai oublié de précisé que je suis totalement débutant, les deux solutions que vous me donnez sont pour moi du chinois

Merci pour votre réponse
 

Hasco

XLDnaute Barbatruc
Bonjour,
Hello @JHA :),

@aToulon
j ai oublié de précisé que je suis totalement débutant,
Alors voyez ce lien sur l'aide microsoft :
Un fichier .csv n'est rien d'autre qu'un fichier texte dont les données sont dans un format particulier.
Si vous double-cliquez dessus dans l'explorateur windows, il s'ouvre automatiquement dans excel, tel quel, sans transformation ("." en "," pour les nombres par exemple).

Power Query est un outil d'importation et de transformation des données.

Cordialement
 

aToulon

XLDnaute Nouveau
Bonjour,
Hello @JHA :),

@aToulon

Alors voyez ce lien sur l'aide microsoft :

Un fichier .csv n'est rien d'autre qu'un fichier texte dont les données sont dans un format particulier.
Si vous double-cliquez dessus dans l'explorateur windows, il s'ouvre automatiquement dans excel, tel quel, sans transformation ("." en "," pour les nombres par exemple).

Power Query est un outil d'importation et de transformation des données.

Cordialement

Sauf erreur de ma part, je n ai pas besoin d'importer le fichier puisque que je l ai des le départ au format CSV.

Par contre cela, je ne sais pas faire (je ne connais pas)

solution 1 : Une fois les données importées, créer un Tableau croisé dynamique (Feuille TCD)
solution 2 : Créer une requête power query sur les données (Feuille météo...)

Cdt
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour aToulon, JHA, Hasco,
Pourquoi pas une version VBA pour le fun.
Sur mon PC avec 40000 mesures, cela ne dure que 0.2s.
VB:
    T0 = Timer
    Range("H2:L40").ClearContents
    Application.ScreenUpdating = False
    Dim DL#, T, i#, Ligne%
    DL = Range("A65500").End(xlUp).Row
    T = Range("A2:C" & DL)
    For i = 1 To UBound(T)
        T(i, 1) = CDate(Left(T(i, 1), 10)) ' Extrait date
    Next i
    Ligne = 2: i = 2
    While i <= UBound(T)
        Dat = T(i, 1): Tempmax = T(i, 2): Tempmin = T(i, 2): Hygromax = T(i, 3): Hygromin = T(i, 3)
        While T(i, 1) = Dat And i < UBound(T)
            If T(1, 2) > Tempmax Then Tempmax = T(1, 2)
            If T(1, 2) < Tempmin Then Tempmin = T(1, 2)
            If T(1, 3) > Hygromax Then Hygromax = T(1, 3)
            If T(1, 3) < Hygromin Then Hygromin = T(1, 3)
            i = i + 1
        Wend
        Cells(Ligne, "H") = Dat: Cells(Ligne, "I") = Tempmin: Cells(Ligne, "J") = Tempmax: Cells(Ligne, "K") = Hygromin: Cells(Ligne, "L") = Hygromax
        Ligne = Ligne + 1
        i = i + 1
    Wend
    [E4] = "( " & Round(Timer - T0, 3) & "s )"
End Sub
 

Pièces jointes

  • Météo....xlsm
    929.3 KB · Affichages: 5

aToulon

XLDnaute Nouveau
Bonjour aToulon, JHA, Hasco,
Pourquoi pas une version VBA pour le fun.
Sur mon PC avec 40000 mesures, cela ne dure que 0.2s.
VB:
    T0 = Timer
    Range("H2:L40").ClearContents
    Application.ScreenUpdating = False
    Dim DL#, T, i#, Ligne%
    DL = Range("A65500").End(xlUp).Row
    T = Range("A2:C" & DL)
    For i = 1 To UBound(T)
        T(i, 1) = CDate(Left(T(i, 1), 10)) ' Extrait date
    Next i
    Ligne = 2: i = 2
    While i <= UBound(T)
        Dat = T(i, 1): Tempmax = T(i, 2): Tempmin = T(i, 2): Hygromax = T(i, 3): Hygromin = T(i, 3)
        While T(i, 1) = Dat And i < UBound(T)
            If T(1, 2) > Tempmax Then Tempmax = T(1, 2)
            If T(1, 2) < Tempmin Then Tempmin = T(1, 2)
            If T(1, 3) > Hygromax Then Hygromax = T(1, 3)
            If T(1, 3) < Hygromin Then Hygromin = T(1, 3)
            i = i + 1
        Wend
        Cells(Ligne, "H") = Dat: Cells(Ligne, "I") = Tempmin: Cells(Ligne, "J") = Tempmax: Cells(Ligne, "K") = Hygromin: Cells(Ligne, "L") = Hygromax
        Ligne = Ligne + 1
        i = i + 1
    Wend
    [E4] = "( " & Round(Timer - T0, 3) & "s )"
End Sub
Bonjour
je vais essayer cela ce week-end, cela est déjà plus a ma portée de débutant
je vous dirai si j ai réussi
merci et bonne fin de semaine
 

Hasco

XLDnaute Barbatruc
au départ lorsque j enregistre les données de ma carte SD sur mon ordi, elles sont au format CSV.
Sur votre carte SD son extension est .csv ? Si tel est le cas, alors il faut l'importer d'une manière ou d'une autre.
Peut-être le faites-vous sans vous en rendre compte, en l'ouvrant directement dans excel.

vous êtes d'accord que les données de votre fichier du post 1 sont des données textes et non numériques ou dates ? Excel ne peut pas faire de calcul numérique ou temporel sur du texte. Il faut convertir ces textes en valeur de Dates et de nombres. C'est ce que je vous proposais de faire par l'assistant d'importation de fichier texte ou par power query, tous deux intégré à votre version excel.

Vous avez aussi la possibilité de les convertir après, exemple pour les dates :

Sélectionnez votre colonne de dates , puis cliquez sur le bouton 'Données'/Groupe 'outils de donnés'/bouton 'Convertir'. Passez les deux premières étapes de l'assisant et à la troisième étape :

1642171739937.png



Sélectionnez "Date" et "JMA" puis Validez en cliquant sur terminé.

Pour les colonne temp et rh, il vous faudra cliquer sur le bouton 'Avancé...' et choisir le "." comme séparateur décimal

Pour la manière de créer un Tableau croisé dynamique je vous invite à faire une recherche de tutoriel sur internet (il y en a pas mal) et de trouver celui qui vous conviendra le mieux.


Cordialement
 

aToulon

XLDnaute Nouveau
Sur votre carte SD son extension est .csv ? Si tel est le cas, alors il faut l'importer d'une manière ou d'une autre.
Peut-être le faites-vous sans vous en rendre compte, en l'ouvrant directement dans excel.

vous êtes d'accord que les données de votre fichier du post 1 sont des données textes et non numériques ou dates ? Excel ne peut pas faire de calcul numérique ou temporel sur du texte. Il faut convertir ces textes en valeur de Dates et de nombres. C'est ce que je vous proposais de faire par l'assistant d'importation de fichier texte ou par power query, tous deux intégré à votre version excel.

Vous avez aussi la possibilité de les convertir après, exemple pour les dates :

Sélectionnez votre colonne de dates , puis cliquez sur le bouton 'Données'/Groupe 'outils de donnés'/bouton 'Convertir'. Passez les deux premières étapes de l'assisant et à la troisième étape :

Regarde la pièce jointe 1127548


Sélectionnez "Date" et "JMA" puis Validez en cliquant sur terminé.

Pour les colonne temp et rh, il vous faudra cliquer sur le bouton 'Avancé...' et choisir le "." comme séparateur décimal

Pour la manière de créer un Tableau croisé dynamique je vous invite à faire une recherche de tutoriel sur internet (il y en a pas mal) et de trouver celui qui vous conviendra le mieux.


Cordialement
Merci beaucoup, j ai commencé a chercher des tutos via Google
:)
 

Hasco

XLDnaute Barbatruc
Re,

Une version pour excel 365 et 2021 à partir des fonctions UNIQUE, MAX.SI.ENS , MIN.SI.ENS.
Après conversions des types en date et nombre

UNIQUE(ENT(T_Datas[datetime]))

Va lister les jours de la colonne
=MAX.SI.ENS(T_Datas[temp];T_Datas[datetime];">=" &$F2;T_Datas[datetime];"<=" &$F2+1)
Va retourner la température maximale pour la journée

Cordialement
 

Pièces jointes

  • Météo fonctions.xlsm
    155.7 KB · Affichages: 1

aToulon

XLDnaute Nouveau
Bonjour aToulon, JHA, Hasco,
Pourquoi pas une version VBA pour le fun.
Sur mon PC avec 40000 mesures, cela ne dure que 0.2s.
VB:
    T0 = Timer
    Range("H2:L40").ClearContents
    Application.ScreenUpdating = False
    Dim DL#, T, i#, Ligne%
    DL = Range("A65500").End(xlUp).Row
    T = Range("A2:C" & DL)
    For i = 1 To UBound(T)
        T(i, 1) = CDate(Left(T(i, 1), 10)) ' Extrait date
    Next i
    Ligne = 2: i = 2
    While i <= UBound(T)
        Dat = T(i, 1): Tempmax = T(i, 2): Tempmin = T(i, 2): Hygromax = T(i, 3): Hygromin = T(i, 3)
        While T(i, 1) = Dat And i < UBound(T)
            If T(1, 2) > Tempmax Then Tempmax = T(1, 2)
            If T(1, 2) < Tempmin Then Tempmin = T(1, 2)
            If T(1, 3) > Hygromax Then Hygromax = T(1, 3)
            If T(1, 3) < Hygromin Then Hygromin = T(1, 3)
            i = i + 1
        Wend
        Cells(Ligne, "H") = Dat: Cells(Ligne, "I") = Tempmin: Cells(Ligne, "J") = Tempmax: Cells(Ligne, "K") = Hygromin: Cells(Ligne, "L") = Hygromax
        Ligne = Ligne + 1
        i = i + 1
    Wend
    [E4] = "( " & Round(Timer - T0, 3) & "s )"
End Sub
Bonjour

Je n arrive pas a faire fonctionner avec ce code, j ai du oublier quelque chose quelque part !!!! le systeme me demande le nom de la macro, je coince

Merci
 

Pièces jointes

  • Macro VBA.PNG
    Macro VBA.PNG
    39 KB · Affichages: 4

Discussions similaires

Statistiques des forums

Discussions
294 297
Messages
1 937 547
Membres
188 332
dernier inscrit
azilislb