IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

calcul des dénivelés a partir d'un fichier GPX [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 342
    Points : 231
    Points
    231
    Par défaut calcul des dénivelés a partir d'un fichier GPX
    Bonjour,

    J'ai un fichier GPX

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
    <gpx version="1.1" creator="Visorando" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.topografix.com/GPX/1/1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
    <metadata><name>Caudiés de Fenouillèdes - Cubières sur Cinoble</name><link href=""><text></text></link></metadata>
    <wpt lat="42.81392" lon="2.376949"><ele>337</ele><name>Caudiés de Fenouillèdes</name></wpt><wpt lat="42.824431" lon="2.41195"><ele>419</ele><name>D20</name></wpt><wpt lat="42.825868" lon="2.433405"><ele>342</ele><name>Prugnanes</name></wpt><wpt lat="42.827557" lon="2.472894"><ele>394</ele><name>Col de Lenti</name></wpt><wpt lat="42.832749" lon="2.479994"><ele>287</ele><name>Gorges de Galamus</name></wpt><wpt lat="42.835767" lon="2.490799"><ele>379</ele><name>D7</name></wpt><wpt lat="42.849378" lon="2.520548"><ele>667</ele><name>Roc Fourcat</name></wpt><wpt lat="42.849068" lon="2.524857"><ele>655</ele><name>GR36</name></wpt><wpt lat="42.85131" lon="2.526811"><ele>573</ele><name>Carrefour sentier</name></wpt><wpt lat="42.858028" lon="2.493853"><ele>620</ele><name>Carrefour Bac de Merlano</name></wpt><wpt lat="42.852394" lon="2.470247"><ele>421</ele><name>D10</name></wpt><wpt lat="42.853087" lon="2.465952"><ele>419</ele><name>Bivouac</name></wpt>
    <trk><name>Caudiés de Fenouillèdes - Cubières sur Cinoble</name><trkseg><trkpt lat="42.81392" lon="2.376949"><ele>337</ele></trkpt><trkpt lat="42.813705" lon="2.37755"><ele>333</ele></trkpt><trkpt lat="42.815016" lon="2.378176"><ele>337</ele></trkpt><trkpt lat="42.816112" lon="2.378542"><ele>336</ele></trkpt><trkpt lat="42.816597" lon="2.379612"><ele>337</ele></trkpt><trkpt lat="42.817819" lon="2.380577"><ele>345</ele></trkpt><trkpt lat="42.817963" lon="2.381491"><ele>348</ele></trkpt><trkpt lat="42.817963" lon="2.381882"><ele>349</ele></trkpt><trkpt lat="42.818322" lon="2.382378"><ele>351</ele></trkpt><trkpt lat="42.818861" lon="2.384414"><ele>361</ele></trkpt><trkpt lat="42.818969" lon="2.385302"><ele>361</ele></trkpt><trkpt lat="42.820011" lon="2.385328"><ele>367</ele></trkpt><trkpt lat="42.82037" lon="2.384858"><ele>372</ele></trkpt><trkpt lat="42.82046" lon="2.385458"><ele>368</ele></trkpt><trkpt lat="42.821502" lon="2.384675"><ele>380</ele></trkpt><trkpt lat="42.8224" lon="2.384597"><ele>383</ele></trkpt><trkpt lat="42.823047" lon="2.384936"><ele>382</ele></trkpt><trkpt lat="42.823389" lon="2.38585"><ele>383</ele></trkpt><trkpt lat="42.823299" lon="2.38893"><ele>398</ele></trkpt><trkpt lat="42.823191" lon="2.390391"><ele>395</ele></trkpt><trkpt lat="42.823514" lon="2.3912"><ele>394</ele></trkpt><trkpt lat="42.823766" lon="2.391461"><ele>396</ele></trkpt><trkpt lat="42.823928" lon="2.392009"><ele>395</ele></trkpt><trkpt lat="42.824431" lon="2.392584"><ele>401</ele></trkpt><trkpt lat="42.824359" lon="2.393654"><ele>398</ele></trkpt><trkpt lat="42.824341" lon="2.394358"><ele>397</ele></trkpt><trkpt lat="42.824053" lon="2.395011"><ele>392</ele></trkpt><trkpt lat="42.824125" lon="2.396081"><ele>396</ele></trkpt><trkpt lat="42.824305" lon="2.396603"><ele>402</ele></trkpt><trkpt lat="42.824251" lon="2.396968"><ele>400</ele></trkpt><trkpt lat="42.824682" lon="2.39783"><ele>409</ele></trkpt><trkpt lat="42.824898" lon="2.399839"><ele>417</ele></trkpt><trkpt lat="42.824538" lon="2.40104"><ele>416</ele></trkpt><trkpt lat="42.824754" lon="2.401823"><ele>421</ele></trkpt><trkpt lat="42.824664" lon="2.405164"><ele>424</ele></trkpt><trkpt lat="42.82497" lon="2.406573"><ele>429</ele></trkpt><trkpt lat="42.824718" lon="2.4084"><ele>420</ele></trkpt><trkpt lat="42.824898" lon="2.40934"><ele>424</ele></trkpt><trkpt lat="42.824808" lon="2.41101"><ele>425</ele></trkpt><trkpt lat="42.824431" lon="2.41195"><ele>419</ele></trkpt><trkpt lat="42.82497" lon="2.413386"><ele>416</ele></trkpt><trkpt lat="42.825167" lon="2.414612"><ele>414</ele></trkpt><trkpt lat="42.825131" lon="2.415421"><ele>405</ele></trkpt><trkpt lat="42.826964" lon="2.420511"><ele>381</ele></trkpt><trkpt lat="42.827503" lon="2.420824"><ele>391</ele></trkpt><trkpt lat="42.827665" lon="2.421607"><ele>388</ele></trkpt><trkpt lat="42.827287" lon="2.422364"><ele>373</ele></trkpt><trkpt lat="42.828006" lon="2.422312"><ele>391</ele></trkpt><trkpt lat="42.828168" lon="2.422964"><ele>383</ele></trkpt><trkpt lat="42.828599" lon="2.423591"><ele>388</ele></trkpt><trkpt lat="42.828671" lon="2.424374"><ele>382</ele></trkpt><trkpt lat="42.828832" lon="2.424791"><ele>383</ele></trkpt><trkpt lat="42.828707" lon="2.425444"><ele>378</ele></trkpt><trkpt lat="42.828491" lon="2.426331"><ele>374</ele></trkpt><trkpt lat="42.827557" lon="2.428028"><ele>363</ele></trkpt><trkpt lat="42.827503" lon="2.429516"><ele>358</ele></trkpt><trkpt lat="42.827108" lon="2.430925"><ele>351</ele></trkpt><trkpt lat="42.826335" lon="2.432778"><ele>344</ele></trkpt><trkpt lat="42.825868" lon="2.433405"><ele>342</ele></trkpt><trkpt lat="42.826335" lon="2.433718"><ele>346</ele></trkpt><trkpt lat="42.826712" lon="2.434553"><ele>349</ele></trkpt><trkpt lat="42.827503" lon="2.435232"><ele>360</ele></trkpt><trkpt lat="42.828006" lon="2.438442"><ele>377</ele></trkpt><trkpt lat="42.828347" lon="2.439643"><ele>387</ele></trkpt><trkpt lat="42.82815" lon="2.441156"><ele>394</ele></trkpt><trkpt lat="42.828725" lon="2.442618"><ele>411</ele></trkpt><trkpt lat="42.828599" lon="2.445411"><ele>419</ele></trkpt><trkpt lat="42.828006" lon="2.449378"><ele>402</ele></trkpt><trkpt lat="42.828257" lon="2.449743"><ele>403</ele></trkpt><trkpt lat="42.82779" lon="2.452275"><ele>386</ele></trkpt><trkpt lat="42.828006" lon="2.455016"><ele>404</ele></trkpt><trkpt lat="42.827521" lon="2.457104"><ele>397</ele></trkpt><trkpt lat="42.827934" lon="2.459401"><ele>393</ele></trkpt><trkpt lat="42.827844" lon="2.460471"><ele>385</ele></trkpt><trkpt lat="42.828042" lon="2.461123"><ele>389</ele></trkpt><trkpt lat="42.828042" lon="2.463603"><ele>391</ele></trkpt><trkpt lat="42.827054" lon="2.467988"><ele>368</ele></trkpt><trkpt lat="42.827215" lon="2.468562"><ele>379</ele></trkpt><trkpt lat="42.827323" lon="2.470337"><ele>390</ele></trkpt><trkpt lat="42.827323" lon="2.472085"><ele>397</ele></trkpt><trkpt lat="42.827557" lon="2.472894"><ele>394</ele></trkpt><trkpt lat="42.827754" lon="2.473756"><ele>378</ele></trkpt><trkpt lat="42.827629" lon="2.476157"><ele>332</ele></trkpt><trkpt lat="42.82797" lon="2.477853"><ele>318</ele></trkpt><trkpt lat="42.828653" lon="2.479132"><ele>304</ele></trkpt><trkpt lat="42.829479" lon="2.480124"><ele>290</ele></trkpt><trkpt lat="42.829641" lon="2.480672"><ele>283</ele></trkpt><trkpt lat="42.830449" lon="2.48002"><ele>286</ele></trkpt><trkpt lat="42.831653" lon="2.480229"><ele>288</ele></trkpt><trkpt lat="42.832228" lon="2.480281"><ele>286</ele></trkpt><trkpt lat="42.832749" lon="2.479994"><ele>287</ele></trkpt><trkpt lat="42.832659" lon="2.480672"><ele>293</ele></trkpt><trkpt lat="42.832839" lon="2.481899"><ele>326</ele></trkpt><trkpt lat="42.833414" lon="2.483517"><ele>344</ele></trkpt><trkpt lat="42.833557" lon="2.483778"><ele>344</ele></trkpt><trkpt lat="42.833575" lon="2.483465"><ele>353</ele></trkpt><trkpt lat="42.833773" lon="2.483622"><ele>358</ele></trkpt><trkpt lat="42.833665" lon="2.482813"><ele>369</ele></trkpt><trkpt lat="42.833863" lon="2.482786"><ele>380</ele></trkpt><trkpt lat="42.835121" lon="2.484561"><ele>388</ele></trkpt><trkpt lat="42.835444" lon="2.485135"><ele>395</ele></trkpt><trkpt lat="42.835156" lon="2.485997"><ele>377</ele></trkpt><trkpt lat="42.836217" lon="2.488241"><ele>396</ele></trkpt><trkpt lat="42.836199" lon="2.489729"><ele>392</ele></trkpt><trkpt lat="42.835767" lon="2.490799"><ele>379</ele></trkpt><trkpt lat="42.836396" lon="2.490147"><ele>398</ele></trkpt><trkpt lat="42.836378" lon="2.489912"><ele>399</ele></trkpt><trkpt lat="42.836522" lon="2.489938"><ele>403</ele></trkpt><trkpt lat="42.836558" lon="2.48939"><ele>407</ele></trkpt><trkpt lat="42.836863" lon="2.48952"><ele>419</ele></trkpt><trkpt lat="42.837133" lon="2.488241"><ele>447</ele></trkpt><trkpt lat="42.837151" lon="2.486989"><ele>465</ele></trkpt><trkpt lat="42.836881" lon="2.486023"><ele>466</ele></trkpt><trkpt lat="42.837025" lon="2.485605"><ele>474</ele></trkpt><trkpt lat="42.837348" lon="2.485918"><ele>487</ele></trkpt><trkpt lat="42.837564" lon="2.485736"><ele>494</ele></trkpt><trkpt lat="42.838444" lon="2.487119"><ele>516</ele></trkpt><trkpt lat="42.839397" lon="2.488529"><ele>547</ele></trkpt><trkpt lat="42.839594" lon="2.488163"><ele>552</ele></trkpt><trkpt lat="42.841391" lon="2.48798"><ele>583</ele></trkpt><trkpt lat="42.841714" lon="2.488268"><ele>596</ele></trkpt><trkpt lat="42.842613" lon="2.487041"><ele>574</ele></trkpt><trkpt lat="42.843044" lon="2.48691"><ele>583</ele></trkpt><trkpt lat="42.843834" lon="2.48738"><ele>603</ele></trkpt><trkpt lat="42.844212" lon="2.48725"><ele>607</ele></trkpt><trkpt lat="42.846565" lon="2.488659"><ele>636</ele></trkpt><trkpt lat="42.84732" lon="2.489416"><ele>655</ele></trkpt><trkpt lat="42.848128" lon="2.491426"><ele>686</ele></trkpt><trkpt lat="42.848505" lon="2.492209"><ele>692</ele></trkpt><trkpt lat="42.849637" lon="2.4926"><ele>714</ele></trkpt><trkpt lat="42.850302" lon="2.493905"><ele>728</ele></trkpt><trkpt lat="42.851291" lon="2.494818"><ele>751</ele></trkpt><trkpt lat="42.851398" lon="2.495654"><ele>765</ele></trkpt><trkpt lat="42.851237" lon="2.496777"><ele>792</ele></trkpt><trkpt lat="42.851272" lon="2.497663"><ele>818</ele></trkpt><trkpt lat="42.849961" lon="2.498499"><ele>831</ele></trkpt><trkpt lat="42.850032" lon="2.499543"><ele>858</ele></trkpt><trkpt lat="42.849709" lon="2.501057"><ele>893</ele></trkpt><trkpt lat="42.849458" lon="2.502466"><ele>902</ele></trkpt><trkpt lat="42.850104" lon="2.503771"><ele>902</ele></trkpt><trkpt lat="42.850554" lon="2.506538"><ele>890</ele></trkpt><trkpt lat="42.850572" lon="2.507373"><ele>886</ele></trkpt><trkpt lat="42.849835" lon="2.508521"><ele>897</ele></trkpt><trkpt lat="42.850069" lon="2.510453"><ele>904</ele></trkpt><trkpt lat="42.850086" lon="2.511549"><ele>887</ele></trkpt><trkpt lat="42.850249" lon="2.511966"><ele>865</ele></trkpt><trkpt lat="42.85014" lon="2.513011"><ele>839</ele></trkpt><trkpt lat="42.850827" lon="2.514644"><ele>759</ele></trkpt><trkpt lat="42.850704" lon="2.516739"><ele>707</ele></trkpt><trkpt lat="42.850983" lon="2.517343"><ele>683</ele></trkpt><trkpt lat="42.850584" lon="2.519159"><ele>667</ele></trkpt><trkpt lat="42.850258" lon="2.519754"><ele>671</ele></trkpt><trkpt lat="42.849378" lon="2.520548"><ele>667</ele></trkpt><trkpt lat="42.849171" lon="2.521781"><ele>665</ele></trkpt><trkpt lat="42.849559" lon="2.52324"><ele>667</ele></trkpt><trkpt lat="42.849627" lon="2.523866"><ele>656</ele></trkpt><trkpt lat="42.849068" lon="2.524857"><ele>655</ele></trkpt><trkpt lat="42.848501" lon="2.525639"><ele>664</ele></trkpt><trkpt lat="42.848559" lon="2.526631"><ele>650</ele></trkpt><trkpt lat="42.848193" lon="2.527597"><ele>657</ele></trkpt><trkpt lat="42.848584" lon="2.527584"><ele>647</ele></trkpt><trkpt lat="42.849319" lon="2.526559"><ele>617</ele></trkpt><trkpt lat="42.849992" lon="2.526647"><ele>601</ele></trkpt><trkpt lat="42.850724" lon="2.527005"><ele>591</ele></trkpt><trkpt lat="42.851111" lon="2.526896"><ele>579</ele></trkpt><trkpt lat="42.851714" lon="2.527571"><ele>577</ele></trkpt><trkpt lat="42.85131" lon="2.526811"><ele>573</ele></trkpt><trkpt lat="42.850925" lon="2.526494"><ele>576</ele></trkpt><trkpt lat="42.850558" lon="2.526551"><ele>585</ele></trkpt><trkpt lat="42.850191" lon="2.526348"><ele>592</ele></trkpt><trkpt lat="42.850126" lon="2.525744"><ele>589</ele></trkpt><trkpt lat="42.850542" lon="2.524956"><ele>590</ele></trkpt><trkpt lat="42.851302" lon="2.523903"><ele>587</ele></trkpt><trkpt lat="42.851529" lon="2.522423"><ele>597</ele></trkpt><trkpt lat="42.851444" lon="2.520456"><ele>618</ele></trkpt><trkpt lat="42.851729" lon="2.518652"><ele>621</ele></trkpt><trkpt lat="42.852187" lon="2.516906"><ele>623</ele></trkpt><trkpt lat="42.852735" lon="2.514534"><ele>634</ele></trkpt><trkpt lat="42.8533" lon="2.512814"><ele>645</ele></trkpt><trkpt lat="42.853586" lon="2.511208"><ele>655</ele></trkpt><trkpt lat="42.854444" lon="2.508675"><ele>648</ele></trkpt><trkpt lat="42.854544" lon="2.507784"><ele>649</ele></trkpt><trkpt lat="42.854816" lon="2.50736"><ele>639</ele></trkpt><trkpt lat="42.855359" lon="2.505624"><ele>624</ele></trkpt><trkpt lat="42.855297" lon="2.504606"><ele>630</ele></trkpt><trkpt lat="42.856123" lon="2.50304"><ele>608</ele></trkpt><trkpt lat="42.856321" lon="2.5015"><ele>610</ele></trkpt><trkpt lat="42.855926" lon="2.499648"><ele>625</ele></trkpt><trkpt lat="42.856141" lon="2.497298"><ele>636</ele></trkpt><trkpt lat="42.856483" lon="2.496933"><ele>626</ele></trkpt><trkpt lat="42.856662" lon="2.496097"><ele>636</ele></trkpt><trkpt lat="42.857165" lon="2.495315"><ele>631</ele></trkpt><trkpt lat="42.858028" lon="2.493853"><ele>620</ele></trkpt><trkpt lat="42.858172" lon="2.492653"><ele>620</ele></trkpt><trkpt lat="42.857965" lon="2.491452"><ele>629</ele></trkpt><trkpt lat="42.85682" lon="2.490512"><ele>653</ele></trkpt><trkpt lat="42.856588" lon="2.488398"><ele>644</ele></trkpt><trkpt lat="42.855682" lon="2.487132"><ele>656</ele></trkpt><trkpt lat="42.855528" lon="2.48649"><ele>648</ele></trkpt><trkpt lat="42.85466" lon="2.485177"><ele>661</ele></trkpt><trkpt lat="42.853936" lon="2.48355"><ele>658</ele></trkpt><trkpt lat="42.852954" lon="2.482581"><ele>671</ele></trkpt><trkpt lat="42.852428" lon="2.481183"><ele>661</ele></trkpt><trkpt lat="42.852219" lon="2.479806"><ele>646</ele></trkpt><trkpt lat="42.85233" lon="2.478177"><ele>635</ele></trkpt><trkpt lat="42.852026" lon="2.477193"><ele>634</ele></trkpt><trkpt lat="42.851604" lon="2.476701"><ele>636</ele></trkpt><trkpt lat="42.850819" lon="2.476925"><ele>624</ele></trkpt><trkpt lat="42.850983" lon="2.476358"><ele>624</ele></trkpt><trkpt lat="42.851748" lon="2.476232"><ele>625</ele></trkpt><trkpt lat="42.852202" lon="2.476821"><ele>620</ele></trkpt><trkpt lat="42.852887" lon="2.475732"><ele>574</ele></trkpt><trkpt lat="42.853112" lon="2.475682"><ele>562</ele></trkpt><trkpt lat="42.853553" lon="2.475945"><ele>550</ele></trkpt><trkpt lat="42.853994" lon="2.475764"><ele>535</ele></trkpt><trkpt lat="42.85416" lon="2.474864"><ele>513</ele></trkpt><trkpt lat="42.854476" lon="2.474457"><ele>499</ele></trkpt><trkpt lat="42.85463" lon="2.473266"><ele>474</ele></trkpt><trkpt lat="42.854353" lon="2.472676"><ele>470</ele></trkpt><trkpt lat="42.853783" lon="2.471885"><ele>462</ele></trkpt><trkpt lat="42.85366" lon="2.471333"><ele>448</ele></trkpt><trkpt lat="42.852394" lon="2.470247"><ele>421</ele></trkpt><trkpt lat="42.852642" lon="2.468243"><ele>421</ele></trkpt><trkpt lat="42.85299" lon="2.466693"><ele>420</ele></trkpt><trkpt lat="42.853578" lon="2.466336"><ele>423</ele></trkpt><trkpt lat="42.854141" lon="2.46587"><ele>424</ele></trkpt><trkpt lat="42.853884" lon="2.465454"><ele>422</ele></trkpt><trkpt lat="42.853087" lon="2.465952"><ele>419</ele></trkpt></trkseg></trk></gpx>

    Et après avoir parcouru des fils de discussion sur le sujet, j'ai écrit ce code qui bloque au niveau de la ligne : Set xmlTracks = xmlRoot.selectNodes("trk")

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    Sub CalculerDenivele3()
     
    'Déclaration des variables
    Dim xmlDoc As MSXML2.DOMDocument60
    Dim xmlRoot As IXMLDOMElement
    Dim xmlTracks As IXMLDOMNodeList
    Dim xmlTrack As IXMLDOMElement
    Dim xmlTrackPoints As MSXML2.IXMLDOMNodeList
    Dim xmlTrackPoint As IXMLDOMElement
    Dim ele As Double
    Dim denivele As Double
    Dim previousEle As Double
    Dim denivelePositif As Double
    Dim deniveleNegatif As Double
    Dim deniveleTotal As Double
    Dim i As Integer
     
    'Chargement du fichier GPX
    Set xmlDoc = New MSXML2.DOMDocument60
    xmlDoc.Load "E:\Randonnées\-aq6eGppfhM.gpx"
    Set xmlRoot = xmlDoc.DocumentElement
     
    'Vérification de la présence de données altimétriques
    'Set xmlTracks = xmlRoot.selectNodes("trk")-----------ne fonctionne pas
        Set xmlTracks = xmlRoot.selectNodes("//trk")          'ne fonctionne pas
    Debug.Print xml.Tracks.length                      'renvoie toujours 0
    'j'ai rajouté ceci pour essayer de vérifier mais ça ne renvoie toujours aucune valeur
        For Each xmlTrack In xmlTracks
            For i = 0 To xmlTrack.childNodes.length - 1
                Debug.Print xmlTrack.childNodes(i).baseName, xmlTrack.childNodes(i).Text
            Next i
        Next
     
     
    If xmlTracks.length > 0 Then
    For Each xmlTrack In xmlTracks
    'Récupération de la liste des points de trace
    Set xmlTrackPoints = xmlTrack.selectNodes("trkseg/trkpt")
    If xmlTrackPoints.length > 0 Then
    'Initialisation des variables
    previousEle = 0
    denivelePositif = 0
    deniveleNegatif = 0
     
      'Parcours des points de trace
      For Each xmlTrackPoint In xmlTrackPoints
        'Récupération de l'altitude du point de trace courant
        ele = xmlTrackPoint.SelectSingleNode("ele").Text
        ele = CDbl(ele)
     
        'Calcul du dénivelé par rapport au point de trace précédent
        denivele = ele - previousEle
        If denivele > 0 Then
          denivelePositif = denivelePositif + denivele
        Else
          deniveleNegatif = deniveleNegatif + denivele
        End If
        previousEle = ele
      Next
     
      'Calcul du dénivelé total
      deniveleTotal = denivelePositif + deniveleNegatif
     
      'Affichage du dénivelé positif, du dénivelé négatif et du dénivelé total
      MsgBox "Dénivelé positif : " & denivelePositif & " mètres" & vbNewLine & _
             "Dénivelé négatif : " & deniveleNegatif & " mètres" & vbNewLine & _
             "Dénivelé total : " & deniveleTotal & " mètres"
    End If
    Next
    End If
     
    End Sub
    Je ne vois pas pourquoi, le code ne rentre pas dans l'arborescence xml... Avez-vous des suggestions?
    Toutes les extensions utiles sont activées.

    Et dans la foulée, je vous souhaite a toutes et tous de bonnes fêtes et une bonne et heureuse année 2023!

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 604
    Points : 34 277
    Points
    34 277
    Par défaut
    Salut,

    En supprimant la premiere ligne vide de ton fichier, tout devrait rentrer dans l'ordre

    Ensuite, tu peux utiliser le simple trk comme identifiant pour pointer sur ta node.

    ton fichier gpx étant pas mal édulcoré, le passage dans les child nodes par contre poseront quelques difficultés..

    plusieurs petites fautes dans la suite du code font planter, mais si tu utilises un espion, tu verras que tes contenus sont bien récupérés...
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 342
    Points : 231
    Points
    231
    Par défaut
    Citation Envoyé par Jean-Philippe André Voir le message
    Salut,

    En supprimant la premiere ligne vide de ton fichier, tout devrait rentrer dans l'ordre

    Ensuite, tu peux utiliser le simple trk comme identifiant pour pointer sur ta node.

    ton fichier gpx étant pas mal édulcoré, le passage dans les child nodes par contre poseront quelques difficultés..

    plusieurs petites fautes dans la suite du code font planter, mais si tu utilises un espion, tu verras que tes contenus sont bien récupérés...
    Bonsoir Jean-Philippe André,
    Merci pour ta réponse mais ...
    Je ne vois pas de quelle première ligne vide tu parles
    Si c'est la ligne 1 de ce qu'il y après la balise code, c'est moi qui l'ai introduite en y copiant le contenu du fichier gpx. Dans le fichier d'origine, ça commence de suite par <?xml.... Sans rien avant.
    Une fois qu'il sera rentré dans l'arborescence, je ne m'inquiète pas trop pour débuguer le code comme tu le suggères

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 604
    Points : 34 277
    Points
    34 277
    Par défaut
    Ta ligne correcte est la suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set xmlTracks = xmlRoot.selectNodes("trk")
    Reste que tu n'auras pas de passage dans ton foreach, vu la structure du fichier, donc ca te prendra un parser.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 342
    Points : 231
    Points
    231
    Par défaut
    Bonjour Jean-Philippe,

    Suite a ta suggestion, et vu que je ne sais pas à priori quelles seront les structures des fichiers GPX que je devrai analyser, j'ai considéré le fichier GPX comme un simple txt et ai écrit un code qui récupère ce qu'il y a entre certaines balises (préalablement définies). Et ca fonctionne bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Sub PARSEtosearchWPT_TRKPT_Opti()
    Dim strGPX As String
    Dim strStart As String
    Dim strEnd As String
    Dim intStart As Integer
    Dim intEnd As Integer
    Dim strWpt As String
    Dim arrTags As Variant
    Dim i As Integer
     
    'Chargement du contenu du fichier GPX dans une chaîne de caractères
    strGPX = LoadTextFile("E:\Randonnées\-aq6eGppfhM.gpx")
     
    'Définition des chaînes de début et de fin de la balise <wpt> et <trkpt>
    arrTags = Array("<wpt", "</wpt>", "<trkpt", "</trkpt>")
     
    'Boucle de parcours des balises <wpt> et <trkpt>
    For i = 0 To 3 Step 2
    'Initialisation des variables de position
    intStart = 1
    intEnd = 1
     
    'Définition des chaînes de début et de fin de la balise courante
    strStart = arrTags(i)
    strEnd = arrTags(i + 1)
     
    'Boucle de parcours des balises
    Do While intStart > 0
      'Recherche de la position de la prochaine balise
      intStart = InStr(intEnd, strGPX, strStart)
      If intStart > 0 Then
        'Recherche de la position de la fin de la balise
        intEnd = InStr(intStart, strGPX, strEnd)
        If intEnd > 0 Then
          'Extraction de la balise
          strWpt = Mid(strGPX, intStart, intEnd - intStart + Len(strEnd))
          Debug.Print strWpt
        End If
      End If
    Loop
    Next
    End Sub
    Me reste plus qu'à récupérer les infos que je veux (long, lat, ele) dans les chaînes respectives et à stocker cela dans une table.

    Merci pour ton aide !

    (PS: mais dommage de ne pas pouvoir arriver simplement a extraire cela en utilisant le xml)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lire des données a partir d'un fichier txt
    Par walido dans le forum C#
    Réponses: 13
    Dernier message: 30/05/2007, 13h22
  2. [SQL] Comment récupérer des champs a partir d'un fichier de sauvegarde?
    Par baguira dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/03/2007, 18h23
  3. Réponses: 3
    Dernier message: 09/09/2006, 13h24
  4. Lancer des commandes dos à partir d'un fichier texte
    Par tpdm dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 09/08/2005, 16h56
  5. creer des decors a partir d'un fichier
    Par NICKO dans le forum DirectX
    Réponses: 2
    Dernier message: 21/09/2002, 09h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo