Réaliser une carte de la france à partir d'un tableau excel

leakim

XLDnaute Occasionnel
Re : Réaliser une carte de la france à partir d'un tableau excel

Bonjour,
Merci pour ce retour. J'ai fini par trouver moi aussi mais tu me confirme bien, donc c'est bien.
Je me suis permis d'ajouter "Call colorer_dept" pour re coloriser les villes à l'issu du survol sinon elle perd sa coloration.

Leakim
 

tatiak

XLDnaute Barbatruc
Re : Réaliser une carte de la france à partir d'un tableau excel

On peut faire aussi de cette façon, pour prendre en compte le cas où l'utilisateur ne colore pas les "départements" et colore uniquement les villes (ou POI)
:) Pierre
 

Fichiers joints

leakim

XLDnaute Occasionnel
Re : Réaliser une carte de la france à partir d'un tableau excel

Re,
encore une variante intéressante,
Je me suis évertuer à modifier les index des villes afin d'obtenir le camaïeux de gris (Cf version carte de France) mais je pige pas ou cela coince? Lorsque j'efface et relance le dessin rien... toutes villes sont sur le même ton.
Merci d'avance.
Leakim
 

tatiak

XLDnaute Barbatruc
Re : Réaliser une carte de la france à partir d'un tableau excel

Les niveaux de gris sont fonction des valeurs en colonne D de l'onglet "Data".
Pour un département, il suffit de mettre, par exemple, les codes INSEE des communes dans cette colonne pour avoir les différents gris
:) Pierre
 

leakim

XLDnaute Occasionnel
Re : Réaliser une carte de la france à partir d'un tableau excel

Re,
Une fois encore super.
Je vais pouvoir mettre les communautés de communes.
Pendant que j'y suis. Les données des villes (dans l'onglet villes) sont à exprimer en pourcentage? avec un max de deux caractères?
 

tatiak

XLDnaute Barbatruc
Re : Réaliser une carte de la france à partir d'un tableau excel

Pour les valeurs, le système est assez tolérant de 0 à 100 ou 120 ça passe, il me semble. Après il faut toucher au code pour permettre des valeurs plus grandes, si besoin.
Pierre
 

tatiak

XLDnaute Barbatruc
Re : Réaliser une carte de la france à partir d'un tableau excel

Bonjour David! :)

Oui bien sûr!

En fait dans les data publiques utilisées, chaque territoire est défini par une chaine de caractère (genre format json) ressemblant à :
Code:
{"type": "Polygon", "coordinates": [[[-0.086375407425965, 47.45734429950967], [-0.093776786188388, 47.461300760269175], [-0.098206149293833, 47.45979558361205], [-0.112492714411064, 47.47316168020877], [-0.122067084187086, 47.474661977720764], [-0.125679509642231, 47.47235788458616], [-0.125540805412932, 47.47544260655698], [-0.132629887095068, 47.47896366304491], [-0.113077268230284, 47.486406829834664], [-0.112816300155145, 47.49265679523938], [-0.067236221064796, 47.49190247501331], [-0.050320930181204, 47.47006903897236], [-0.069567456810466, 47.471148562830656], [-0.084886723473802, 47.46377990694614], [-0.086375407425965, 47.45734429950967]]]}
Le code de dessin des territoires décompose (parse) cette chaine et la transforme en tableau coordonnées de points exploitables pour un Shapes.BuildFreeform (avec des AddNodes)
(En somme, j'ai réécrit une fonction json.decode en vba pour parser la chaine)

Maintenant, une fois les shapes dessinées, cette chaine initiale n'est pas facilement exploitable pour repérer la position de la souris par rapport aux shapes.
Je transcris donc les coordonnées calculées de chaque shape en T, L, W, H (soit Top, Left, Width et Height) pour les récupérer dans la variable BDD() ce qui permet de tester plus facilement le (x,y) de la souris:
Code:
If BDD(2, i) < x - ghe0 / (ActiveWindow.Zoom / 100) _
    And BDD(2, i) + BDD(3, i) > x - ghe0 / (ActiveWindow.Zoom / 100) _
    And BDD(1, i) < y - top0 / (ActiveWindow.Zoom / 100) _
    And BDD(1, i) + BDD(4, i) > y - top0 / (ActiveWindow.Zoom / 100) Then
                BDD_dept = i
(BDD est initialisée par l'unique requête Sql)

On pourrait probablement faire différemment pour améliorer la précision du repérage de la souris, mais cette méthode fonctionne à peu près et j'ai la flemme de chercher autre chose.
:) Pierre
 

leakim

XLDnaute Occasionnel
Re : Réaliser une carte de la france à partir d'un tableau excel

Bonjour,
Je constate que chacun essaye de s'approprier le fichier selon ses compétences!!!
Moi je cherche à dessiner les villes avec des données qui ont quatre caractères...
En faites, j'ai des valeurs qui vont de 0 à 2000 personnes max par zone. Je suis bien au dessus de 120...
J'ai réussi à utiliser la coloration gris par canton c'est nickel.
Au passage j'ai un bug sur la coloration des zones??
Cordialement,

Leakim

Edit: le fichier ne passe pas...
 
Dernière édition:

tatiak

XLDnaute Barbatruc
Re : Réaliser une carte de la france à partir d'un tableau excel

Hello,
Ben yaka écrire la fonction def_color comme ceci :
Code:
Function def_color(score As Integer) As Byte
    def_color = 0
    If score > 0 And score <= 2000 Then def_color = Int(score / 100) + 2 
End Function
et modifier la légende de l'echelle des couleurs : 0 à 99, 100 à 199, etc ...

Pour le bug dont tu parles, donne plus de détails (qui, quoi, quand, où, ...)
Pierre
 

leakim

XLDnaute Occasionnel
Re : Réaliser une carte de la france à partir d'un tableau excel

Bonjour Tatiak,
Ok j'avais fait le modif des 2000, mais j'avais pas changé le diviseur du score... Quel boulet!
C'est nickel plus de bug, reste que dans les bulles villes je n'ai que deux caractères. Si je renseigne 1500 dans ma ville, il n’apparaît que "15" dans le cercle ville???

Leakim
 

tatiak

XLDnaute Barbatruc
Re : Réaliser une carte de la france à partir d'un tableau excel

Il suffit d'ajuster la taille de la zone de texte contenant le score à 60 ou 100 (dans Sub dessin_ville)
Code:
Set shTxt = Sheets(Graph).Shapes.AddTextbox(1, longitude - 5, latitude - 5, 100, 16)
tu peux aussi un peu diminuer la taille de la police .Font.Size = 10 par exemple
Pierre
 

leakim

XLDnaute Occasionnel
Re : Réaliser une carte de la france à partir d'un tableau excel

Re,
Merci une nouvelle fois, je n'ose pas dire la dernière fois mais je crois bien que je m'approche d'un fichier très propre.

Cordialement,
Leakim
 

Schuchterling

XLDnaute Nouveau
Re : Réaliser une carte de la france à partir d'un tableau excel

Re Marin, Salut Softmama :)

Par ici une solution finalisée
:) tatiak

Bonjour Tatiak,

Tout d'abord un grand bravo et un grand merci pour ces explications et l'ensemble des fichiers mis à dispositions ! je tombe sur tout cela quelques années plus tard mais ca reste d'actualité :)
A tout hasard, est ce que ton fichier France_Clients2.zip serait toujours disponible ? Car il ne l'ai plus sous ton lien.
De plus, aurais tu un tutoriel des étapes à suivre pour créer la macro sur les cercles proportionnels ?

Merci beaucoup !
 

Schuchterling

XLDnaute Nouveau
Bonjour Schuchterling,
Est-ce le fichier joint répond à la demande?
Pierre
Merci ! Ce dernier fichier est au top ! Et merci pour ta rapidité de réponse : )
Mon dernier blocage reste le suivant : je comprends la logique de l'application de la macro mais je n'arrive pas à l'appliquer (je débute depuis peu). Je ne sais pas dans quelle ordre je dois réaliser le process avec mes cercles.
Pour être plus claire, je te joins mon fichier : je souhaite que sur ma carte, mes cercles soient reliés aux données de la colonne N et puissent ainsi devenir proportionnels aux chiffres.
Sophie
 

Fichiers joints

Schuchterling

XLDnaute Nouveau
Merci ! Ce dernier fichier est au top ! Et merci pour ta rapidité de réponse : )
Mon dernier blocage reste le suivant : je comprends la logique de l'application de la macro mais je n'arrive pas à l'appliquer (je débute depuis peu). Je ne sais pas dans quelle ordre je dois réaliser le process avec mes cercles.
Pour être plus claire, je te joins mon fichier : je souhaite que sur ma carte, mes cercles soient reliés aux données de la colonne N et puissent ainsi devenir proportionnels aux chiffres.
Sophie

En continuant de chercher et de tâtonner, j'en suis rendue à ce niveau : mon bouton d'actualisation est crée, j'ai renommé mes cercles, la macro est aussi enregistrée et je l'ai affecté au bouton d'actualisation des données. Mais malgré cela, rien ne se passe. J'ai donc dû rater une étape mais je n'arrive pas à trouver laquelle :(
Merci de ton aide en tous les cas ! J'ai trouvé aussi le fichier exemple avec les départements et c'est cela qui m'a beaucoup dépanné :)
 

Fichiers joints

tatiak

XLDnaute Barbatruc
ok,

Ci-joint une autre carte avec plusieurs possibilités :
* diamètre des cercles selon indicateur choisi
* coloration des régions selon indicateur choisi
* "fiche" région" au clic sur l'une d'elle

C'est fait un peu à l'arrache, il y a surement des amélioration à faire
Pierre
 

Fichiers joints

Schuchterling

XLDnaute Nouveau
Ouah ! C'est exactement ca que j'essaye de faire, c’est même mieux !
Mais comment as tu déterminé les codes pour la colonne Shape ? Suis-je obligée d'avoir cette colonne pour avoir des cercles proportionnels ?
Et du coup, il faut donc créer le bouton, affecter la macro et c'est la macro qui est rattachée ensuite aux cercles et les fait donc évoluer en fonction des données ? (désolée, cela fait beaucoup de questions, mais j'aimerai vraiment être capable de réaliser un travail similaire !).
Sophie
 

Discussions similaires


Haut Bas