CSV pour google earth

Bonjour,

je suis confronté à un problème : Google earth sait gérer l'importation de fichier CSV avec 3 colonnes (latitude, longitude, nom) et placer les points correspondants sur la map.

Cependant, si on veut rajouter à ce CSV les informations nécessaires pour que GE trace un trajet entre le 1er et le 2ème point, puis entre le 3ème et 4ème point et ainsi de suite, ainsi que des couleurs différentes de lignes et de placemark en fonction de certains critères, cela ne fonctionne pas.

Bien évidement je voudrais éviter de passer par les outils en ligne de conversion de fichier xls2kml...

J'ai le code source xml pour une liaison entre 2 points avec les styles de marqueurs et de tracés

L'idée serait donc de créer une macro qui va compiler et exporter en *.kml toutes les lignes de ma feuille avec les contraintes de couleur correspondant à chaque ligne

Comment donc intégrer ce code xml sous VBA et lui donner la redondance pour traiter ligne après ligne et générer le *.kml correspondant

exemple de ma feuille de calcul :

latitude longitude name LineStringColor Icon IconColor

X.XXX X.XXX A yellow 111 red liaison

X.XXX X.XXX B 111 lime n°1

X.XXX X.XXX C blue 111 red liaison

X.XXX X.XXX D 111 red n°2

X.XXX X.XXX E red 111 lime liaison

X.XXX X.XXX F 111 lime n°3

merci pour vos idées et réponses

cordialement

Bonjour,

voici ce que j'avais fait en septembre 2009 !

il n'y a plus qu'à adapter à ton fichier !

Sub tracer()

    On Error GoTo ErreurEcriture  

    Open Application.ActiveWorkbook.Path & "\trace.kml" For Output As #1
        ' en-tete
        Print #1, "<?xml version=""1.0"" encoding=""UTF-8""?><kml xmlns=""http://www.opengis.net/kml/2.2""><Document>"
        Print #1, "<name><![CDATA[" + Range("nomprojet").Value + "]]></name><open>1</open><description><![CDATA[" + Range("descriptionprojet").Value + "]]></description>"
        Print #1, "<Style id=""lignerouge""><LineStyle><color>ff0000ff</color><width>4</width></LineStyle></Style>"

        ' depart
        Print #1, "<Placemark><name><![CDATA[" + Range("nomdepart").Value + "]]></name><description><![CDATA[" + Range("descriptiondepart").Value + "]]></description><Point><coordinates>"
        Print #1, Sheets("Histo_alt").Range("AC2").Value
        Print #1, "</coordinates></Point></Placemark>"

        ' parcours
        Print #1, "<Placemark><name><![CDATA[" + Range("nomparcours").Value + "]]></name><visibility>1</visibility><description><![CDATA[" + Range("descriptionparcours").Value + "]]></description><styleUrl>#lignerouge</styleUrl><LineString><tessellate>1</tessellate><altitudeMode>absolute</altitudeMode><coordinates>"
        For Each coordGPS In Sheets("Histo_alt").Range("AC2:" & Sheets("Histo_alt").Range("AC2").End(xlDown).Address)
            Print #1, coordGPS.Value
        Next coordGPS
        Print #1, "</coordinates></LineString></Placemark>"

        ' arrivee
        Print #1, "<Placemark><name><![CDATA[" + Range("nomarrivee").Value + "]]></name><description><![CDATA[" + Range("descriptionarrivee").Value + "]]></description><Point><coordinates>"
        Print #1, Sheets("Histo_alt").Range("AC2").End(xlDown).Value
        Print #1, "</coordinates></Point></Placemark>"

        ' fin
        Print #1, "</Document></kml>"
    Close #1

' lancement

    On Error GoTo ErreurLancement
    ShellExecute 0, "open", Application.ActiveWorkbook.Path & "\trace.kml", vbNullString, Application.ActiveWorkbook.Path, SW_SHOWNORMAL

Exit Sub

ErreurLancement:
    MsgBox Err.Description & " (" & Str(Err.Number) & ")"

Exit Sub

ErreurEcriture:
    MsgBox Err.Description & " (" & Str(Err.Number) & ")", vbOKOnly, "Erreur écriture"
    Close #1

Exit Sub

End Sub

Bonjour Steelson,

merci pour ton retour,

sans divulguer d'information, pourrais tu me joindre ton xls correspondant en supprimant les valeurs confidentielles pour que je puisse voir comment est construit ton code et l'adapter en fonction de mon tableau de données

par avance merci

cdt

Le fichier excel en question permettait aussi de capter les coordonnées GPS avec un SIRF3 branché en usb.

Le voici ... enfin c'est un xls et donc trop volumineux, je vais le simplifier et le transformer en xlsm !

Voici, simplifié ...

503excel-to-kml.xlsm (613.43 Ko)

Merci pour le temps accordé

Je comprend mieux, en fait tu as compilé une série de coordonnés en un seul parcours.

Ce que je cherche à faire , c'est compiler :

ligne 1 (statut 1 ; point A1 / lat A1 / long A1 / statut A1 ; point B1 / lat B1 / long B1 / statut B1 => tracer entre ces 2 points)

ligne 2 (statut 2 ; point A2 / lat A2 / long A2 / statut A2 ; point B2 / lat B2 / long B2 / statut B2 => tracer entre ces 2 points)

ligne 3 (statut 3 ; point A3 / lat A3 / long A3 / statut A3 ; point B3 / lat B3 / long B3 / statut B3 => tracer entre ces 2 points)

ligne xx.... ainsi de suite

(2000 lignes )

une idée? sans vouloir abuser de ton temps

Il faut alors répéter 3 fois (ou XX fois) la partie se situant entre ce que j'appelais le départ et l'arrivée, dans le même fichier, en définissant aussi dans le style plusieurs couleurs différentes.

As-tu un fichier excel avec les coordonnées GPS ?

c'est justement ce que je voudrais éviter, de répéter 2000 fois l'opération, car mon tableau compte près de 2000 lignes..

Oui, pour chaque lieu, j'ai les coordonnées correspondantes en décimales.

Si tu vas sur ce site https://www.earthpoint.us/ExcelToKml.aspx, en fait il te convertit directement ton fichier excel en KML, il doit forcement passer par une macro pour générer le fichier aussi rapidement, c'est ce que je cherche à faire

c'est justement ce que je voudrais éviter, de répéter 2000 fois l'opération, car mon tableau compte près de 2000 lignes..

Oui, pour chaque lieu, j'ai les coordonnées correspondantes en décimales.

Si tu vas sur ce site https://www.earthpoint.us/ExcelToKml.aspx, en fait il te convertit directement ton fichier excel en KML, il doit forcement passer par une macro pour générer le fichier aussi rapidement, c'est ce que je cherche à faire

justement, le programme que je propose peut le faire automatiquement moyennant une légère modification (ajout d'une boucle)

envoie un morceau de ton fichier excel ...

bonjour,

ci joint le fichier sous cette forme :

description A-B ; point B / lat B / long B ; point A / lat A / long A ; statut A-B ; statut B; statut A => tracer entre ces 2 points

en fait, je pense remplacer les codes couleur par les "statuts" en description, çà sera plus simple

81classeur1.xlsm (99.60 Ko)

A adapter si nécessaire

110classeur1.xlsm (163.54 Ko)

ah ouiiiiiiii !!!!

super merci énormément!!

dernières choses,

  • si je souhaite rajouter des infos sur un tracé, en info-bulle, je l'intègre dans quelle partie du code
  • comment faire apparaître les repères correspondants aux CG avec leurs noms (lieux B / A)

merci

Quelles infos, où se trouvent-elles dans le fichier excel ?

De toute façon, il suffit de se plonger dans la structure "Keyhole Markup Language"

Un lien utile : https://www.sigterritoires.fr/index.php/kml-pour-bien-commencer/

la colonnes H par exemple, j'essaye de rajouter dans cette partie :

' parcours

Print #1, "<Placemark><name><![CDATA[" + Cells(i, "A").Value + "]]></name><visibility>1</visibility><description><![CDATA[" + Cells(i, "A").Value + "]]></description><styleUrl>#lignerouge</styleUrl><LineString><tessellate>1</tessellate><altitudeMode>relative</altitudeMode><coordinates>"

Print #1, Cells(i, "K").Value

Print #1, Cells(i, "L").Value

Print #1, "</coordinates></LineString></Placemark>"

mais je ne peux mettre qu'une colonne (A)

+ Cells(i, "A").Value + "]]

J'ai mis la même chose (colonne A) car je ne savais pas à quoi correspondaient les valeurs

mais tu peux mettre différentes valeurs entre les balises name et description

<name><![CDATA[" + Cells(i, "X").Value + "]]></name>

et

<description><![CDATA[" + Cells(i, "Y").Value + "]]></description>

bonsoir,

c'est bon, j'ai résolu mon problème, j'ai concaténé mes valeurs et modifié les références CG.

GE est tatillon sur les données acceptées

je peux donc intégrer à loisir les valeurs que je souhaite, merci pour ton aide, elle m'a été d'un immense secours

milles merci!! et à bientôt j’espère

hello,

saurais tu comment faire pour exécuter la macro sur une feuille spécifique?

Sub tracer()
Dim i

    Open Application.Workbook.Path & "\adrien83000.kml" For Output As #1

merci

cdt

Hé bien, tu fais précéder tous les Cells(i, "X").Value par la feuille en question Sheets("mafeuille").Cells(i, "X").Value

super, merci beaucoup

Rechercher des sujets similaires à "csv google earth"