Cartographie

A1B2C3

XLDnaute Nouveau
Bonjour,

Je souhaiterais avoir une représentation cartographique ou schématique dynamique me permettant de voir le nombre de train sur une région entre deux points. En gros si j'ai 5 trains par jour j'ai un trait plus épais que si je n'ai qu'un train par jour. Savez-vous si ce genre de carto existe sur excel?
 

tatiak

XLDnaute Barbatruc
Bonjour,

Je ne sais pas si ça existe déjà, mais on peut le créer facilement.
Il faudrait d'abord avoir une liste des trains avec leurs trajets (et les jours de passage?).
Après, plutôt que de régler l'épaisseur du trait, il serait peut être plus visuel de colorer les traits en fonction du nb de passages.

Et de quelle région il est question ici?

Pierre
 

A1B2C3

XLDnaute Nouveau
Non je cherche vraiment a faire des flèches d'épaisseur différentes selon les couples Origine Destination mais je pars absolument de 0 avec peu de connaissances en la matière.
 

tatiak

XLDnaute Barbatruc
Ok, si tu veux c'est facile à créer aussi.

Un exemple ici avec ma région et des données fictives :
* Une carte de Bretagne (pourquoi habiter ailleurs??)
* Une liste de gares et de trajets avec un nb de trajets (données fictives)
* Un bouton pour tracer les trajets, et ici le trait est plus ou moins épais selon le nb de trajet indiqué, et la flèche va du départ vers l'arrivée.
* Un bouton pour remise à zéro.

Quelle région et quelles gares pour ton besoin?
Pierre
 

Fichiers joints

tatiak

XLDnaute Barbatruc
Ok, trop facile.

Voici donc la carte des Hauts-de-France avec quelques villes.

Pour ajouter les coordonnées GPS d'une ville, c'est simple :
* Rechercher la ville sur GoogleMap
* Dans la barre d'adresse on obtient un truc genre (pour Boulogne) :
...google.fr/maps/place/62200+Boulogne-sur-Mer/@50.7303007,1.5711142,13z/data=...
* le point GPS est après le @ et avant la valeur du z (le zoom),
* soit pour Boulogne : 50.7303007,1.5711142

Reste à copier/coller cette valeur vers la liste dans l'onglet "Base" et à remplacer :
* la virgule par | (Alt_Gr + 6)
* puis les 2 points par 2 virgules

Ensuite, on remplis la liste des trajets dans l'onglet "Carte" (attention à l'orthographe des villes)
On peut même faire figurer des villes proches hors région et hors France (ex Rouen ou Gand )

Bonne soirée
Pierre
 

Fichiers joints

Dernière édition:

A1B2C3

XLDnaute Nouveau
C'est absolument génial. J'ai un bug en la faisant tourner ça me met ça : Pt = Split(T0(idx, 2), "|") en jaune dans le code suivant:

Sub Dessin_Traits(Optional x As Byte)
Dim Crd1 As Coord, Crd2 As Coord, Pt As Variant
Dim idx As Integer, i As Integer

For i = 2 To UBound(T1)
idx = Idx_T2D(T0, CStr(T1(i, 1)), 1)
Debug.Print idx
Pt = Split(T0(idx, 2), "|")
Crd1 = XY(CSng(Pt(0)), CSng(Pt(1)))

idx = Idx_T2D(T0, CStr(T1(i, 2)), 1)
Pt = Split(T0(idx, 2), "|")
Crd2 = XY(CSng(Pt(0)), CSng(Pt(1)))

Trait Crd1.x, Crd1.y, Crd2.x, Crd2.y, CSng(T1(i, 3)), T1(i, 1) & T1(i, 2)
Next i
End Sub

Ca doit etre un probleme avec les barres verticales

Merci!!
 

A1B2C3

XLDnaute Nouveau
En fait c'est bon j'ai compris ça marche parfaitement. Comment je peux régler la taille des traits en revanche?? (ils sont trop gros sur mes valeurs max).
 

tatiak

XLDnaute Barbatruc
Les points GPS doivent être au format "latitude|longitude" en colonne B, soit par exemple pour Boulogne-sur-Mer : 50,7303007|1,5711142
Valeurs séparées par le signe | (Alt gr + 6)
Les 2 valeurs étant avec un séparateur décimal identique à celui de la configuration de votre Windows (vérifiez vos paramètres régionaux Windows), pour mon PC c'est une virgule.

Pour l'épaisseur du trait :
Dans la procédure "sub Trait", il suffit de diviser l'épaisseur, par exemple :
.Line.Weight = Wght / 2
ici divisée par 2, mais on peut mettre tout autre valeur, 1.5 par exemple (dans le code le séparateur décimal est obligatoirement un point) ou 2.5, ...

Pierre
 
Dernière édition:

A1B2C3

XLDnaute Nouveau
Si j'ai une question, comment rendre dynamique l'épaisseur des traits (partie de code si dessous) pour que je puisse la taper directement dans la case M1 par exemple ?

.Line.Weight = Wght / 8
 

tatiak

XLDnaute Barbatruc
On peut effectivement rendre dynamique l'épaisseur des traits avec une simple règle de 3.
Voir ici dans l'exemple : la valeur maxi correspondra toujours à une épaisseur de 6 et les autre seront proportionnées en conséquence.
Sans aucune autre intervention.

Pierre
 

Fichiers joints

A1B2C3

XLDnaute Nouveau
Bonjour,

Me revoilà. Comment faire pour rendre dynamique la taille du point ? Je souhaite que la taille du point d'une ville, ex : Lille, soit proportionnelle à une valeur, ex : nombre de voyageurs ou nombre de trains. Est-il possible de rendre ceci dynamique ?

Bien à vous,

A1B2C3
 

tatiak

XLDnaute Barbatruc
Facile, en fonction du chiffre inscrit en colonne C (onglet "Base"), on prend le maxi et on ajuste tous les points en fonction de ce maxi avec le code suivant :
VB:
Sub Place_GPS(Optional x As Byte)
Dim Crd As Coord, Pt As Variant, i As Integer, Diam As Single, Mx As Single

    Mx = Application.Max(Sheets("Base").Range("C:C"))
    For i = 2 To UBound(T0)
        Pt = Split(T0(i, 2), "|")
        Diam = T0(i, 3) / Mx * 50
        If Diam < 4 Then Diam = 4
        Crd = XY(CSng(Pt(0)), CSng(Pt(1)))
        Cercle Crd.x - Diam / 2, Crd.y - Diam / 2, Diam, Diam, CStr(T0(i, 2))
        Txtbx Crd.x, Crd.y, CStr(T0(i, 1))
        Txtbx Crd.x, Crd.y - 9.18, CStr(T0(i, 3))
    Next i
End Sub
Et si on veut que le plus gros point soit plus gros, il suffit de modifier la valeur 50 (ligne Diam = T0(i, 3) / Mx * 50)
Voir fichier joint
Pierre
 

Fichiers joints

Discussions similaires


Haut Bas