MyPeugeot: communication véhicule / app mobile

Sinon, je fais tourner cette boucle pour voir quand ça plante, car si je n'y vais pas "pas-à-pas" (ça fait beaucoup de pas je sais :whistle:), j'ai l'erreur précédente, mais la boucle fonctionne au début... Il doit y avoir quelque chose qui ne va pas avec le fichier à un endroit...
C'est exactement ce que je t'ai dit plus haut : c'est des données dans ton fichier qui font arriver dans un cas non prévu dans le code. Et effectivement, ce sont tes lignes Alertsxxxx qui font foirer.

Il y a longtemps que @janfi67 et moi avons dit que c'était du JSON.
Il faudrait que la macro fasse du vrai parsing des données et non pas essayer de les trouver dans un ordre précis
La macro date du SMEG, des évolutions sur les exports ont été faites depuis, et c'est cela qui fait planter suivant les cas
 
Dernière édition:

C'est exactement ce que je t'ai dit plus haut : c'est des données dans ton fichier qui font arriver dans un cas non prévu dans le code. Et effectivement, ce sont tes lignes Alertsxxxx qui font foirer.

Il y a longtemps que @janfi67 et moi avons dit que c'était du JSON.
Il faudrait que la macro fasse du vrai parsing des données et non pas essayer de les trouver dans un ordre précis
La macro date du SMEG, des évolutions sur les exports ont été faites depuis, et c'est cela qui fait planter suivant les cas
Hello :)
Je n'ai pas lu tous les messages du sujet, j'avoue :oups::ange:
Je suis en train de travailler sur une version du fichier excel qui utilise le JSON en JSON ;)
Du coup normalement ça devrait fonctionner sur n'importe quel fichier exporté myp, même si c'est le bordel dedans en termes d'organisation des données :)
Je vous tiens au courant ;) Là j'en suis au stade où j'essaie les fonction de parsing JSON de la librairie avec des données d'essai ;)
Voilà mon fichier d'essai :
Code:
[
    {
        "trips": [
            {
                "alertsActive": [],
                "alertsResolved": [],
                "consumption": 1.0,
                "destAddress": "",
                "destQuality": 0,
                "endDateTime": 1579945320,
                "endMileage": 40010,
                "endPosAddress": "Une autre adresse",
                "endPosAltitude": 5,
                "endPosLatitude": 6,
                "endPosLongitude": 7,
                "endPosQuality": 0,
                "fuelAutonomy": 720,
                "fuelLevel": 100,
                "id": 1000,
                "maintenanceDays": -1,
                "maintenanceDistance": 11100,
                "maintenancePassed": false,
                "startDateTime": 1579944840,
                "startMileage": 40000,
                "startPosAddress": "Une adresse",
                "startPosAltitude": 2,
                "startPosLatitude": 3,
                "startPosLongitude": 4,
                "startPosQuality": 255
            },
            {
                "alertsActive": [],
                "alertsResolved": [],
                "consumption": 1.5,
                "destAddress": "",
                "destQuality": 0,
                "endDateTime": 1580288280,
                "endMileage": 40020,
                "endPosAddress": "Une autre adresse",
                "endPosAltitude": 5,
                "endPosLatitude": 6,
                "endPosLongitude": 7,
                "endPosQuality": 0,
                "fuelAutonomy": 720,
                "fuelLevel": 100,
                "id": 1000,
                "maintenanceDays": -1,
                "maintenanceDistance": 11100,
                "maintenancePassed": false,
                "startDateTime": 1580287860,
                "startMileage": 40010,
                "startPosAddress": "Une adresse",
                "startPosAltitude": 2,
                "startPosLatitude": 3,
                "startPosLongitude": 4,
                "startPosQuality": 255
            },
            {
                "alertsActive": [],
                "alertsResolved": [],
                "consumption": 2.0,
                "destAddress": "",
                "destQuality": 0,
                "endDateTime": 1585920660,
                "endMileage": 40030,
                "endPosAddress": "Une autre adresse",
                "endPosAltitude": 5,
                "endPosLatitude": 6,
                "endPosLongitude": 7,
                "endPosQuality": 0,
                "fuelAutonomy": 720,
                "fuelLevel": 100,
                "id": 1001,
                "maintenanceDays": -1,
                "maintenanceDistance": 11100,
                "maintenancePassed": false,
                "startDateTime": 1585920300,
                "startMileage": 40020,
                "startPosAddress": "Une adresse",
                "startPosAltitude": 2,
                "startPosLatitude": 3,
                "startPosLongitude": 4,
                "startPosQuality": 255
            }
        ],
        "vin": "VF3XXXXXXXXXXXXXX"
    }
]

J'ai pris mon fichier à moi, j'ai utilise NotePad++ (il ne faut pas utiliser Wordpad je pense...) avec un plugins JSON qui me permet de visualiser sous la forme d'une arborescence, et surtout de trier les données. Après le tri, le VIN est à la fin du fichier, mais pour un format JSON, c'est pas grave :)

upload_2020-4-4_18-41-36.png
upload_2020-4-4_18-42-37.png

Après j'essaierais sur un modèle où c'est le bordel, comme dans mon fichier.
 
Dernière édition:
  • J'aime
Reactions: Joe L'Arsouille


Sinon, pour importer du json dans Excel sans avoir à écrire de macro, y'a toujours http://www.convertcsv.com/json-to-csv.h
Oui on pourrait utilise ce lien qui converti ^^ Mais il n'y aurait plus de fun à programmer ^^
Et sinon, il faudrait éditer à chaque fois le fichier .myp, le passer sur le site, et copier les colonnes voulues dans le tableau excel.
:whistle:
Bon la parsing du JSON est OK, j'ai les boucles qui vont bien.
Ca me rempli bien les cases du tableau ;)
upload_2020-4-4_20-18-22.png
Maintenant il me faut trouver comment on converti un temps 1579944840 en une date et une heure...
Puis faire les calculs pour remplir les autres cases.
Et ensuite faudra que je regarde comment se rempli la feuille data...

J'ai essayé avec un bout de mon fichier myp, et ça fonctionne encore très bien :D
Je vais vous faire un super fichier excel vous allez voir :cool:
 





C'est à dire ? Dans la macro, soit la fonction format, sinon dans le tableau, juste mettre en forme la colonne au bon format. Et si tu y inscris la valeur retournée par la formule, il fera la "conversion" tout seul comme un grand
 

C'est à dire ? Dans la macro, soit la fonction format, sinon dans le tableau, juste mettre en forme la colonne au bon format. Et si tu y inscris la valeur retournée par la formule, il fera la "conversion" tout seul comme un grand
Oui je viens de comprendre et d'éditer :)
Comme je vais passer dans une macro, faut que je vois si je remplis la case avec le timestamps, et ensuite je converti, ou bien si je fais la conversion à la volée quand je récupère la valeur... Mais je risque d'avoir un soucis de format de variable...
Je vais creuser ^^
merci
 

Je te conseille vivement de faire la conversion dans la macro, et de l'afficher dans le bon format avec la commande vba ... format !
 

Je te conseille vivement de faire la conversion dans la macro, et de l'afficher dans le bon format avec la commande vba ... format !
On peut donner un format à une cellule via le VBA ?
Et moi qui m'embête à définir le format pour toute la colonne puis remettre standard sur les cellules d'en-tête :crazy:
Faut que je trouve la commande VBA pour changer le format.
 

Sinon, vous préférez qu'on continue la discussion sur le fichier excel ici ou vaudrait mieux que je crée un sujet dédié ?

edit : sinon j'ai un soucis de décalage d'une heure... va falloir que je fasse des tests pour voir si la date est avant ou après les changements d'heure... o_O
Il n'y aurait pas quelqu'un qui aurait déjà codé une fonction pour faire ça ?

edit 2 : bon la ligne suivante fonctionne bien, mais ne gère pas l'heure d'hiver/d'été...
Code:
      MaDate = (item_item("startDateTime") / 86400) + DateValue("01/01/1970")
 
Dernière édition:


Evidemment, tu as mis un VIN de 10 caractères, ça ne peut pas fonctionner


:coucou:

Non ça n'a pas d'importance
regarde j'ai modifié en mettant le même nbre de carac.

excel (tu vois le nom de fic au dessus de Ouvrir un fichier *.myp

upload_2020-4-5_8-3-48.png

upload_2020-4-5_8-1-19.png


et le même fichier avec wordpad

upload_2020-4-5_8-7-21.png
 

Sinon, vous préférez qu'on continue la discussion sur le fichier excel ici ou vaudrait mieux que je crée un sujet dédié ?

edit : sinon j'ai un soucis de décalage d'une heure... va falloir que je fasse des tests pour voir si la date est avant ou après les changements d'heure... o_O
Il n'y aurait pas quelqu'un qui aurait déjà codé une fonction pour faire ça ?

edit 2 : bon la ligne suivante fonctionne bien, mais ne gère pas l'heure d'hiver/d'été...
Code:
      MaDate = (item_item("startDateTime") / 86400) + DateValue("01/01/1970")

:coucou:

titi_sw.gif
tu n'es pas le seul, j'ai eu le cas à mon 1er chgt d'heure, c'était le jour de mon départ en vac , et au 1er arrêt, je me suis aperçu que c'était pas la bonne heure alors j'ai remis à l'heure , celle d'été et ploufff
 

:coucou:

c'est super si tu ré-écris une appli n'oubies pas qu'il te faudra une appli win et apple

y a beaucoup de discutions à ce sujet, mais personne ne sait pourquoi ça fonctionne chez moi (et sans doute chez d'autres) que ce soit sur SMEG ET NAC

est-ce que d'autres personnes ont fait ce test? et quel en ait le résultat?

les tests que j'ai fait ont été réalisés avec un myp de ma précédente T9 (SMEG+) et un myp avec la nlle T9 (NAC) et les 2 myp sont identiques dans leur structure
 

Bonjour,

Je suis peut-être hors sujet. J'ai un nac wave 2. J'ai fait le test hier à partir d'un fichier que je venais de sauvegarder .myp .
J'ai utilisé le fichier smegMYPtoXLSvide.xls
Pas de problème rencontré
 
  • J'aime
Reactions: picard60

Bonjour,

Je suis peut-être hors sujet. J'ai un nac wave 2. J'ai fait le test hier à partir d'un fichier que je venais de sauvegarder .myp .
J'ai utilisé le fichier smegMYPtoXLSvide.xls
Pas de problème rencontré

:coucou:

:non::non: tu n'es pas hors sujet, bien au contraire :bounce:
tu es sous Android ou IOS
 



Ben, je te l'ai donnée dans mes messages : c'est ... format (tout simplement)
Un peu d'aide ici https://docs.microsoft.com/fr-fr/of...format-function-visual-basic-for-applications

Pour les heures, elles ne sont pas toutes en GMT ? (j'avoue que je ne me souviens plus)
Si elles sont en GMT (ou UTC c'est pareil) en format UNIX (Timestamps).
Je me suis fait un algorithme de rectification en tenant compte du changement d'heure les derniers dimanches de mars et d'octobre. (et dire qu'en 2021 il se peut que ça cesse :eek:)
Je vous montre le tout quand j'aurai fini de le coder, hier avant la nuit de repos il me restait la partie octobre, le reste étant fait et opérationnel.

:coucou:

Non ça n'a pas d'importance
regarde j'ai modifié en mettant le même nbre de carac.

excel (tu vois le nom de fic au dessus de Ouvrir un fichier *.myp

Voir la pièce jointe 12247

Voir la pièce jointe 12246


et le même fichier avec wordpad

Voir la pièce jointe 12248
Je ne suis pas sur, mais je pense que c'est wordpad qui merdouille à la sauvegarde, peut-être sur les codes des caractères de retour à la ligne...
Comme tu m'as dit ne pas connaître NotePad++, voilà : https://notepad-plus-plus.org/
Tu verras c'est un blocnote mais vraiment amélioré. Les programmeurs du dimanche comme moi l'utilisent très souvent. Totalement gratuit et opensource (il ont un github).
Dans le même genre tu as aussi atom, sublimetext (payant celui là). Mais ils sont moins simples que Notepad++ que je te recommande d'essayer ;)

:coucou:

titi_sw.gif
tu n'es pas le seul, j'ai eu le cas à mon 1er chgt d'heure, c'était le jour de mon départ en vac , et au 1er arrêt, je me suis aperçu que c'était pas la bonne heure alors j'ai remis à l'heure , celle d'été et ploufff
lol
Je me suis dit que si jamais je faisais un trajet entre 0h59 et 2h du matin de des derniers dimanches de mars ou d'octobre, ça serait la pagaille niveau date/heure :D
Du coup j'ai mis dans mon algorithme de quoi tester l'heure, car avant 1h00 GMT je ne fait que +1h lors du dernier dimanche de mars pour faire l'heure d'hiver FR, et +2h après 1h pour refléter l'heure d'été.
J'ai mis pleins de commentaires dans mon code ;)
:coucou:

c'est super si tu ré-écris une appli n'oubies pas qu'il te faudra une appli win et apple

y a beaucoup de discutions à ce sujet, mais personne ne sait pourquoi ça fonctionne chez moi (et sans doute chez d'autres) que ce soit sur SMEG ET NAC

est-ce que d'autres personnes ont fait ce test? et quel en ait le résultat?

les tests que j'ai fait ont été réalisés avec un myp de ma précédente T9 (SMEG+) et un myp avec la nlle T9 (NAC) et les 2 myp sont identiques dans leur structure

Oui oui, je vais essayer de faire en sorte que le fichier xlsm fonctionne aussi avec macOS, ça tombe bien j'en ai un sous la main ;)

Sinon juste une hypothèse comme ça pour le fait que ca fonctionne avec le SMEG et le NAC chez toi : les deux véhicules ont été mis sur le même compte dans l'application MyPeugeot non ?
Ca serait peut être pour ça...

Mais bon avec le parsing JSON que je suis en train de faire, OSEF :D ça devrait fonctionner tout le temps sans soucis.
(faudra peut-être optimiser le code, je ne suis pas programmeur professionnel, juste mes souvenirs de fac et de ce que je fais personnellement à coté (C++ pour arduino; et très longtemps avant j'avais codé une appli en VB))
 

Je ne suis pas sur, mais je pense que c'est wordpad qui merdouille à la sauvegarde, peut-être sur les codes des caractères de retour à la ligne...
Comme tu m'as dit ne pas connaître NotePad++, voilà : https://notepad-plus-plus.org/
Tu verras c'est un blocnote mais vraiment amélioré. Les programmeurs du dimanche comme moi l'utilisent très souvent. Totalement gratuit et opensource (il ont un github).
Dans le même genre tu as aussi atom, sublimetext (payant celui là). Mais ils sont moins simples que Notepad++ que je te recommande d'essayer ;)

:coucou:

désolé de te contredire voici la comparaison faite par winmerge sur les 2 fichiers seul le VIN sort en différence

upload_2020-4-5_10-24-2.png
 

:coucou:

désolé de te contredire voici la comparaison faite par winmerge sur les 2 fichiers seul le VIN sort en différence

Voir la pièce jointe 12251
Et bien je pense que c'est justement ce que je disais ^^
Regarde en bas à droite de chaque partie : sur le fichier copie2 il est marqué Win dans un rectangle jaune pâle, et à droite pour l'autre fichier c'est marqué Unix.
Ca veut dire que le format d'encodage des retours chariots n'est pas le même.
Je n'utilise pas winmerge donc je ne pourrais pas être sur à 100%, mais à mon avis c'est ça

Le CRLF est surtout utilisé par les logiciels sous Windows, mais d'autres systèmes d'exploitation le reconnaissent. Cependant, certains logiciels ont des standards qui les empêchent de reconnaître le CRLF. Il existe des programmes qui convertissent le CRLF en un autre caractère de contrôle équivalent. Unix, par exemple, n'utilise que le caractère LF pour une nouvelle ligne, alors que Mac OS avant sa version 10 (version basée en partie sur BSD, un Unix) n'utilisait que le CR.
Source : https://fr.wikipedia.org/wiki/Carriage_Return_Line_Feed

Du coup je pense que le format windows est la version éditée par wordpad, ce qui serait logique ;) utilise donc le CRLF pour le retour à la ligne, donc compte 2 caractères. Alors que le format Unix n'utilise que le LF, donc un seul caractère.
Wordpad ne doit pas gérer le format unix je pense ;)
Après si d'autres plus calés ont la réponse je suis preneur :chinois:
 

Et bien je pense que c'est justement ce que je disais ^^
Regarde en bas à droite de chaque partie : sur le fichier copie2 il est marqué Win dans un rectangle jaune pâle, et à droite pour l'autre fichier c'est marqué Unix.
Ca veut dire que le format d'encodage des retours chariots n'est pas le même.
Je n'utilise pas winmerge donc je ne pourrais pas être sur à 100%, mais à mon avis c'est ça


Source : https://fr.wikipedia.org/wiki/Carriage_Return_Line_Feed

Du coup je pense que le format windows est la version éditée par wordpad, ce qui serait logique ;) utilise donc le CRLF pour le retour à la ligne, donc compte 2 caractères. Alors que le format Unix n'utilise que le LF, donc un seul caractère.
Wordpad ne doit pas gérer le format unix je pense ;)
Après si d'autres plus calés ont la réponse je suis preneur :chinois:

:coucou:
oui les fins de pages sont différentes, mais les infos affichées ne sont pas dans le désordre comme chez toi, et ne sont pas manquantes, l'appli n'a pas été écrite par et pour moi

Regarde en bas à droite de chaque partie : sur le fichier copie2 il est marqué Win dans un rectangle jaune pâle, et à droite pour l'autre fichier c'est marqué Unix.
si tu regardes de plus prés tu verras que celui mentionné Win est celui qui rentre sans pb dans l'appli
Par contre le 2ème marqué uft-8 n'est pas spécialement un fichier UNIX mais surtout utilisé sur beaucoup d'autres systèmes et notamment pour les transferts de fichiers
upload_2020-4-5_11-20-25.png

UTF-8 est un codage de caractères informatiques conçu pour coder l’ensemble des caractères du « répertoire universel de caractères codés », initialement développé par l’ISO dans la norme internationale ISO/CEI 10646, aujourd’hui totalement compatible avec le standard Unicode, en restant compatible avec la norme ASCII ...
 
  • J'aime
Reactions: MilesTEG1

Comme tu m'as dit ne pas connaître NotePad++, voilà : https://notepad-plus-plus.org/
Tu verras c'est un blocnote mais vraiment amélioré. Les programmeurs du dimanche comme moi l'utilisent très souvent. Totalement gratuit et opensource (il ont un github).
Dans le même genre tu as aussi atom, sublimetext (payant celui là). Mais ils sont moins simples que Notepad++ que je te recommande d'essayer ;)
Tu as Visual Studio Code de Microsoft aussi : https://code.visualstudio.com/
Personnellement c’est celui que j’utilise et je le trouve vraiment très bien. Il a une multitude d’add-ons et il est multiplateforme. :bien:
 

@picard60 : merci pour les précisions ;)
@Joe L'Arsouille : je connais ^^ Mais je ne suis pas très fan. Mais il est plutôt joli ^^

Sinon pour ceux qui veulent voir le code de la gestion du temps ;) le voici : la fonction test tout à la fin me permet de vérifier que tout est OK. Et ça fonctionne ;)

Code:
Private Function Date_UNIX_To_Date_GMT(date_unix_GMT As Long) As Date
    ' Fonction qui converti un temps UNIX en date GMT
    '@PARAM {Long} date à convertir, au format UNIX GMT
    '@RETURN {Date} Renvoi la date convertie en date GMT

    Date_UNIX_To_Date_GMT = (date_unix_GMT / 86400) + DateValue("01/01/1970")

End Function

Private Function Date_UNIX_To_Date_DST(date_unix_GMT As Long) As Date
    ' Fonction qui converti un temps UNIX en date avec DST (changement d'heure)
    '@PARAM {Long} date à convertir, au format UNIX GMT
    '@RETURN {Date} Renvoi la date convertie en date GMT
  
    Dim DST_val As Integer, date_unix_DST As Long
          
    ' La date ainsi calculée ne tient pas compte du passage à l'heure d'été ou à l'heure d'hiver
    ' Il faut vérifier si le jour du mois de cette date est avant ou après le dernier dimanche de mars ou d'octbre.
    ' Rappel :  l'heure passe en GMT +2 au dernier dimanche de mars, c'est l'heure d'été
    '           l'heure passe en GMT +1 au dernier dimanche d'octobre, c'est l'heure d'hiver
    ' On va donc devoir ajouter soit 1h=3600s au temps GMT si c'est l'heure d'hiver, soit 2h=7200s au temps GMT si c'est l'heure d'hiver
    ' Déterminons la valeur du facteur DST
    DST_val = DST(date_unix_GMT)
  
    ' Calcul de la nouvelle date avec DST
    date_unix_DST = date_unix_GMT + DST_val * 3600
    ' Conversion en Date de cette date UNIX : la nouvelle Date est maintenant DST
    Date_UNIX_To_Date_DST = Date_UNIX_To_Date_GMT(date_unix_DST)

End Function

Private Function DST(date_unix_GMT As Long) As Integer
    ' Fonction qui détermine le modificateur d'heure (Day Saving Time) à appliquer à l'heure GMT pour avoir l'heure FR
    ' Ce sera le modificateur d'heure par rapport au temps unix GMT :   1 = pour l'heure d'hiver
    '                                                                   2 = pour l'heure d'été
    '@PARAM {Long} date à tester, au format unix GMT
    '@RETURN {Integer} Renvoi un entier permettant la modification de l'heure unix


    ' On déclare les variables utilisées pour le jour, le mois, l'année, l'heure en temps GMT
    Dim jour_GMT As Integer, mois_GMT As Integer, annee_GMT As Integer, heure_GMT As Integer, minutes_GMT As Integer
    Dim date_temp As Date
  
    ' On déclare les variables utilisées pour le dernier dimanche de mars ou d'octobre : jour/mois/heure
    Dim jour_dD As Integer, mois_dD As Integer, heure_dD As Integer
    Dim num_jour_31 As Integer      ' C'est pour stocker le n° du jour de semaine pour le 31/03/annee ou 31/10/annee
 
    ' On convertir la date unix en date GMT
    date_temp = Date_UNIX_To_Date_GMT(date_unix_GMT)
  
    ' On récupère le jour, le mois, l'année, l'heure en temps GMT
    jour_GMT = Day(date_temp)
    mois_GMT = Month(date_temp)
    annee_GMT = Year(date_temp)
    heure_GMT = Hour(date_temp)
    ' minutes = Minute(date_temp)       ' Inutile ici
  
    Select Case mois_GMT
        Case 1, 2, 11, 12
            ' On est dans le cas où l'heure d'hiver est appliquée : de Novembre à Février
            DST = 1
          
        Case 4 To 9
            ' On est dans le cas où l'heure d'été est appliquée : de Avril à Septembre
            DST = 2
          
        Case 3
            ' On est en mars, il faut vérifier que le jour en question est avant ou après le dernier dimanche de mars
            ' Détermination du n° du jour de la semaine du dernier jour de mars
            num_jour_31 = Weekday("31/03/" & annee_GMT, vbMonday)
            If num_jour_31 = 7 Then
                ' Le 31 c'est le dimanche
                jour_dD = 7
            Else
                jour_dD = 31 - num_jour_31
            End If
                          
            If jour_GMT < jour_dD Then
                ' On est avant le dernier dimanche du mois, donc encore en heure d'hiver
                DST = 1
            ElseIf jour_GMT > jour_dD Then
                ' On est après le dernier dimanche du mois, donc en heure d'été
                DST = 2
            ElseIf jour_GMT = jour_dD Then
                ' On est le dernier dimanche du mois, donc il faut voir si on est avant 1h du matin ou pas.
                If heure_GMT < 1 Then
                    ' On est encore à l'heure d'hiver
                    DST = 1
                Else
                    ' On est passé à l'heure d'été
                    DST = 2
                End If
            End If
          
        Case 10
            ' On est en octobre, il faut vérifier que le jour en question est avant ou après le dernier dimanche de mars
            ' Détermination du n° du jour de la semaine du dernier jour d'octobre
            num_jour_31 = Weekday("31/10/" & annee_GMT, vbMonday)
            jour_dD = 31 - num_jour_31
            If num_jour_31 = 7 Then
                ' Le 31 c'est le dimanche, c'est donc lui le dernier dimanche du mois !
                jour_dD = 7
            Else
                ' Le 31 est un autre jour de la semaine, on calcule donc quel sera le jour XX du dernier dimanche du mois
                jour_dD = 31 - num_jour_31
            End If
          
            If jour_GMT < jour_dD Then
                ' On est avant le dernier dimanche du mois, donc encore en heure d'hiver
                DST = 1
            ElseIf jour_GMT > jour_dD Then
                ' On est après le dernier dimanche du mois, donc en heure d'été
                DST = 2
            ElseIf jour_GMT = jour_dD Then
                ' On est le dernier dimanche du mois, donc il faut voir si on est avant 1h du matin ou pas.
                If heure_GMT < 1 Then
                    ' On est encore à l'heure d'été
                    DST = 2
                Else
                    ' On est passé à l'heure d'hiver
                    DST = 1
                End If
            End If
        End Select
      
End Function



Sub test()

  
    Dim MaDate_UNIX_GMT As Long, MaDate_GMT As Date, MaDate_DST As Date  ' Pour convertir une date unix en date excel

  
    ' pour les essais = 25/10/2020 à 0h50min00s  ==  1603587000 UTC-UNIX <- c'est censé être encore l'heure d'été
    ' pour les essais = 29/03/2020 à 0h50min00s  ==  1585443000 UTC-UNIX <- c'est censé être encore l'heure d'hiver
    MaDate_UNIX_GMT = 1603590600
    'MaDate_GMT = (MaDate_UNIX_GMT / 86400) + DateValue("01/01/1970")

    MaDate_DST = Date_UNIX_To_Date_DST(MaDate_UNIX_GMT)
  
    MsgBox "Date UNIX GMT = " & MaDate_GMT & vbCrLf & "Date DST = " & MaDate_DST

End Sub


Et un extrait du code qui rempli le tableau : tout n'est pas encore fini, mais là je rempli tout le tableau avec les données extraites, et ça calcule la durée du trajet.
(j'ai mis en pratique ce que vous m'avez appris ^^)
Code:
For Each item In jsonObject
        For Each item_item In item("trips")   ' Boucle pour récupérer les trajets
            ws.Cells(i, 1) = item_item("id")
    
            ' Récupération des dates
            ' On stocke les deux dates (départ et arrivée) car il faut déterminer le temps de parcours
            ' qui ne doit pas être dépendant d'un éventuelle changement d'heure en cours de route
            MaDate_UNIX_GMT_dep = item_item("startDateTime")            ' Date de départ
            MaDate_UNIX_GMT_arr = item_item("endDateTime")              ' Date d'arrivée
            MaDate_DST_dep = Date_UNIX_To_Date_DST(MaDate_UNIX_GMT_dep)
            MaDate_DST_arr = Date_UNIX_To_Date_DST(MaDate_UNIX_GMT_arr)
            ws.Cells(i, 2) = Format(MaDate_DST_dep, "dd/mm/yy - hh:mm")
            ws.Cells(i, 3) = Format(MaDate_DST_arr, "dd/mm/yy - hh:mm")
            ' Calcul de la durée du trajet en cours
            duree_trajet = MaDate_UNIX_GMT_arr - MaDate_UNIX_GMT_dep
            duree_trajet_bis = Date_UNIX_To_Date_GMT(MaDate_UNIX_GMT_arr) - Date_UNIX_To_Date_GMT(MaDate_UNIX_GMT_dep)
            ws.Cells(i, 4) = Format(duree_trajet_bis, "h:mm")
          
      ' ws.Cells(i, 5) = item_item("")   ' Il faudra calculer cette valeur là
      ws.Cells(i, 6) = item_item("endMileage")
      ws.Cells(i, 7) = item_item("consumption")
      ' ws.Cells(i, 8) = item_item("")   ' Il faudra calculer cette valeur là
      ws.Cells(i, 9) = item_item("startPosLatitude")
      ws.Cells(i, 10) = item_item("startPosLongitude")
      ws.Cells(i, 11) = item_item("startPosAddress")
      ws.Cells(i, 12) = item_item("endPosLatitude")
      ws.Cells(i, 13) = item_item("endPosLongitude")
      ws.Cells(i, 14) = item_item("endPosAddress")
      ws.Cells(i, 15) = item_item("fuelLevel")
      i = i + 1
      nbTrip = nbTrip + 1
    Next


edit : ha c'est moche le code sans les couleurs...
 
Dernière édition:

:coucou:

@MilesTEG1

je viens de me souvenir tu n'es pas sur NAC, tu es sur SMEG+ , j'ai fait une recherche et j'ai retrouvé ton 1er message :kaola:

upload_2020-4-5_16-54-55.png


Alors l'appli que tu remets en cause a été conçue sur SMEG+ et surtout ne pas dire que la gestion des trajets de l'appli sous NAC a peut être été modifiée a celle du SMEG+
 
Dernière édition:

:coucou:

@MilesTEG1

je viens de me souvenir tu n'es pas sur NAC, tu es sur SMEG+ , j'ai fait une recherche et j'ai retrouvé ton 1er message :kaola:

Voir la pièce jointe 12268


Alors l'appli que tu remets en cause a été conçue sur SMEG+ et surtout ne pas dire que la gestion des trajets de l'appli sous NAC a peut être été modifiée a celle du SMEG+
Tout ce que je sais c'est que c'est la structure du fichier .myp qui pose problème pour moi.
Le fichier excel tel qu'il est codé, est conçu pour une seule organisation du fichier de trajet .myp.
Je ne dis pas qu'il ne fonctionne jamais et avec personne, je dis qu'il ne fonctionne pas dans mon cas.
Et comme je ne peux pas corriger la source du désordre dans mon fichier .myp, et bien je contourne le soucis, et je fabrique un outils polyvalent qui n'est pas limité dans une seule structure de fichier .myp.

Ceux qui veulent essayer ma version, la voici : https://www.dropbox.com/s/als0sv6nd2qrkw7/Trajets-MyPeugeot - Copie.xlsm?dl=0
Mais attention, tout n'est pas encore codé.
Je n'ai codé que l'importation des données de l'onglet trajets, et les divers calculs de cette page.
Aucun graphique n'est paramétré, ni la feuille DATA.
Mais ça va venir ;)
Dites moi ce que vous en pensez, et si vous avez des bugs ;)

PS : je pense qu'il serait judicieux d'ouvrir un nouveau sujet, qu'en pensez-vous ?
 
  • J'aime
Reactions: Malouk and janfi67

Tout ce que je sais c'est que c'est la structure du fichier .myp qui pose problème pour moi.
Le fichier excel tel qu'il est codé, est conçu pour une seule organisation du fichier de trajet .myp.




:coucou:

ce n'est pas la structure qui posent problème ce sont les infos qu'il contient



Le fichier excel tel qu'il est codé, est conçu pour une seule organisation du fichier de trajet .myp.

il n'y a qu'une seule organisation des articles du fichier excel

relis 1er message de ce post

il n'y a pas 50 organisations de fichiers trajets (JSON), ton fichier est mer..que, pourquoi je ne sais pas, tu as fais tellement d'interventions dessus, d'autant plus sur smeg+, ça été éprouvé

perso 2 voitures 4 ans avec 1 MAJ par mois et pas de problème et pourtant on a souffert avec cette appli, maintenant, elle est beaucoup plus stable

si tu as un tel android fait le test tu devrais avoir le même résultat