Cartographie

bonjour,

je voulais une fichier excel pouvant placer des point sur une carte.

j'ai trouver une merveille sur le net (bravo et merci mr F. ), mais l'auteur ne souhaite pas que l'on modifie son fichier, je comprend bien.

cependant je ne peux utiliser celui ci , j'ai besoin de mon acces visual basic.

il a laisser une autre code en libre acces pour l'exploiter et je ne vais pas demander de tout refaire pour arriver au meme résultat que son fichier ce serait ridicule...

je veux juste placer dans une feuille des coordonnés GPS ( exemple en colone A ) et placer des "épingles" sur cette carte dans l' userform

je ne joint pas de fichier car dans cette version il faut créer un fichier d'initialisation HTML qui permet d'afficher les cartes dans le WebBrowser, ces vrai qu'il est préférable d'en créer par macro a l'ouverture du fichier et l'effacer a la fermture , mais je n'ai pas le niveau.....

je joint le code, je pense que c'est sur cette partie qu'il faut le faire.

merci à tous

Private Sub btnAjout_Click()

Dim T As String

'Ajouter un point repère (Pushpin) au centre de la carte

T = "var shape = new VEShape(VEShapeType.Pushpin, map.GetCenter());" _

& "shape.SetTitle('Exemple de point repère');" _

& "shape.SetDescription('Ceci est le symbole de point repère par défaut fourni par Virtual Earth');" _

& "map.AddShape(shape);"

EnvoiScript T

End Sub

Private Sub btnRAZ_Click()

'Supprime tous les repères "épinglés" sur la carte

EnvoiScript "map.DeleteAllShapes();"

End Sub

Private Sub btnAdr_Click()

Dim T As String

'Rechercher et afficher un lieu en fonction de l'adresse saisie dans une InputBox

T = "Saisissez une adresse complète pour optimiser les chances de résultat. Les éléments " _

& vbLf & "[Numéro et nom de rue] , [Code Postal et Ville] , [Pays]" _

& vbLf & "doivent être saisis dans l'ordre et séparés par une virgule." _

& vbLf & vbLf & "Exemple :" _

& vbLf & "7 rue de la liberté,21000 dijon,france"

T = InputBox(T, "Atteindre un lieu...")

If T <> "" Then

'Attention, l'apostrophe remplace les guillemets dans les instructions Javascript.

'Aussi, si l'adresse saisie contient une apostrophe, il convient de faire précéder cette

'dernière par un caractère \ pour éviter un plantage du script. Et pour assurer une

'compatibilité avec Excel97, j'utilise la fonction de feuille de calcul Substitute()

'au lieu de la fonction Replace()

T = Application.Substitute(T, "'", "\'")

'On emploie la méthode "Find()" pour rechercher l'adresse.

'Syntaxe :

'VEMap.Find(what, where, findType, shapeLayer, startIndex, numberOfResults, showResults, createResults, useDefaultDisambiguation, setBestMapView, callback);

EnvoiScript "map.Find(null, '" & T & "');"

End If

End Sub

Bonjour Yoda,

Pour avoir étudié un peu le fichier cartographie de myDearFriend!, tu peux combiner ce code :

Private Sub btnCentrer_Click()
'Permet de re-centrer l'affichage de la carte dans le WebBrowser sur
'des coordonnées Latitude/Longitude prédéterminées et de définir un zoom (valeur de 1 à 19)
    EnvoiScript "map.SetCenterAndZoom(new VELatLong(47.010225655683485, 2.3291015625000036), 6);"
End Sub

avec celui-ci

Private Sub btnAjout_Click()
Dim T As String
'Ajouter un point repère (Pushpin) au centre de la carte
T = "var shape = new VEShape(VEShapeType.Pushpin, map.GetCenter());" _
& "shape.SetTitle('Exemple de point repère');" _
& "shape.SetDescription('Ceci est le symbole de point repère par défaut fourni par Virtual Earth');" _
& "map.AddShape(shape);"
EnvoiScript T
End Sub

En résumé, tu pointes d'abord vers le point dont les coordonnées GPS sont connues puis tu places un repère.

bonsoir,

dans le principe c'est bon, mais j'ai un fichier client que je doit mettre a jour tous les mois avec pres de 140 ref .

c'est pour cela que j'ai récupérer un fichier avec toutes les coordonnée gps des communes de France.

je voulais opter pour une feuille avec le nom de la commune et ses coordonnées gps sous le format qui est présent dans le code exemple : en A Compiègne en B 49.416667, 2.833333

ainsi rien qu'en mettant a jour cette feuille tous mes repères serais a jour.

merci de votre aide

Crée un bouton intitulé Mise_a_jour et teste ce code (n'oublie pas d'adapter le nom de l'onglet contenant les infos sur les communes) :

Private Sub btnMise_a_jour_Click()
    ongletBase = "ongletListeCommunes"    'nom de l'onglet contenant la liste des communes
    tbl = Sheets(ongletBase).Range("A1").CurrentRegion.Value    'plage de valeurs contenant les informations sur les communes
    For i = LBound(tbl) To UBound(tbl)    'on boucle sur chaque commune
        commune = tbl(i, 1): lat = tbl(i, 2): lon = tbl(i, 3)
        EnvoiScript "map.SetCenterAndZoom(new VELatLong(lat, lon), 6);"    'on centre sur la commune
        Call ajoutRepere(commune)    'puis on ajoute un repère au centre
    Next i
End Sub

Sub ajoutRepere(commune As String)
    Dim T As String
    'Ajouter un point repère (Pushpin) au centre de la carte
    commune = Application.Substitute(commune, "'", " ")
    T = "var shape = new VEShape(VEShapeType.Pushpin, map.GetCenter());" _
        & "shape.SetTitle('" & commune & "');" _
        & "shape.SetDescription('" & commune & "');" _
        & "map.AddShape(shape);"
    EnvoiScript T
End Sub

bonjour

probleme de variable je te met l'exemple

par contre si tu veux voir l'appli fonctionner il faut créer un fichier d'initialisation HTMl ( tu en as peut etre déjà un )

merci pour ton aide

cordialement


ps j'avais également ajouté dans le module 1 ajoutRepere

j'ai oublier de le remettre dans l'exemple que je t'es envoyé!!

merci

399exemple.zip (15.66 Ko)

Essaie avec cette procédure :

Private Sub btnMise_a_jour_Click()
Dim ongletBase As String, commune As String
Dim derlign As Long, i As Long

    ongletBase = "ongletListeCommunes"    'nom de l'onglet contenant la liste des communes
    With Sheets(ongletBase)
        derlign = .Range("A" & Rows.Count).End(xlUp).Row
        For i = 2 To derlign    'on boucle sur chaque commune
            a = Split(Cells(i, 1), ", ")
            commune = .Cells(i, 2): lat = Replace(a(0), ".", ",") * 1: lon = Replace(a(1), ".", ",") * 1
            EnvoiScript "map.SetCenterAndZoom(new VELatLong(lat, lon), 6);"    'on centre sur la commune
            Call ajoutRepere(commune)    'puis on ajoute un repère au centre
        Next i
    End With
End Sub

bonsoir

un pb sur cette ligne

a = Split(Cells(i, 1), ", ")

as tu une idee

merci encore de ton implication

c'est bon , j'ai trouvé ce qu'il me fallait , pour info

merci encore pour ton aide

Dim s As Long

Dim Java1 As String

s = 2

While Sheets("ongletListeCommunes").Range("A" & s).Value <> ""

Java1 = "Var Mark = new VEShape (VEShapeType.Pushpin, new VELatLong(" & Sheets("ongletListeCommunes").Cells(s, 6).Value & "));" _

& "Mark.SetCustomIcon('pushpinb.gif');('" & Sheets("ongletListeCommunes").Cells(s, 1).Value & "');" _

& "Mark.SetDescription('" & Sheets("ongletListeCommune").Cells(s, 7).Value & "');" _

& "map.AddShape(Mark);"

EnvoiScript Java1

Rechercher des sujets similaires à "cartographie"