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

tatiak

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

Oops, en effet!

Alors il vaut mieux dire plutôt :
Code:
.Application.ActiveSheet.Hyperlinks.Add Anchor:=Selection.ShapeRange.Item(1), _
Address:="", SubAddress:=Sheets("Carte").Name & "!A" & Sheets("Data").Cells(j, 6), _
ScreenTip:=Sheets("Data").Cells(j, 4) & vbCrLf & Sheets("Data").Cells(j, 3)
et :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim derlig As Integer, lig As Integer
    With Sheets("Dept")
        derlig = .Range("A" & Rows.Count).End(xlUp).Row
        If Not Intersect(Target, Range("A2:A" & derlig)) Is Nothing And Target.Count = 1 Then
            lig = Application.Match(Target.Row, .Columns(1), 0)
            Application.EnableEvents = False
            Range("A1").Select
            MsgBox .Cells(1, 5) & vbCrLf & .Cells(lig, 5), , .Cells(lig, 2)
            Application.EnableEvents = True
        End If
    End With
End Sub
:) Pierre

Edit de 11h46 : la version 4(3) corrige un défaut pour la corse et colorie en vert le département cliqué pour une meilleure visualisation
Capture.PNG
PS : Et merci Bruno! :) Tu peux aussi féliciter David pour ses bonnes idées!
 

Fichiers joints

Dernière édition:

david84

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

Bonjour à tous,

J'ai testé le France_Clients4(3) :
La couleur ne s'affiche lors du clic sur certains départements comme la Marne , la Haute Marne, la Meuse, etc.
Le fait de rajouter un 2ème
Code:
Range("A1").Select
juste après
Code:
 If Not Intersect(Target, Range("A2:A" & derlig)) Is Nothing And Target.Count = 1 Then
semble régler le problème.

Veiller à ce que toute la carte soit visible sinon lorsque l'on clique sur la Corse on ne la voit plus.

Il faudra peut-être veiller dans la version finale à cacher la colonne A car sinon cela déclenche la procédure événementielle en cliquant dedans et cela plante lorsque la carte est effacée et que l'on clique dedans.
A+
 

Efgé

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

Bonjour à tous :)

Bravo Tatiak :)

Juste une petite modif
Si l'on est sur l'onglet "Carte" et que l'on selectionne tout (Ctrl+A), il y a plantage (sous 2007 en tous cas).
Pour éviter cela il faut remplacer tous les Target.Count par Target.CountLarge.

Cordialement
 

tatiak

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

Bonjour les amis, :)

Pour ce matin, changement de stratégie : je laisse de côté les hyperliens pour tester une autre méthode.
Cette fois-ci aux mouvements de la souris, je repère sa position par rapport aux "contours" des départements pour :
* colorer en jaune pâle le département survolé (style carte du BonCoin)
* et afficher son nom (mais on pourrait facilement afficher d'autres info)
Le clic sur un département affiche un msgbox avec de l'info (qu'on pourrait aussi enrichir)

Dans cette version, le problème du scrolling, signalé par David, est réglé mais il reste des défauts.
Le temps de traitement est un peu trop long à mon goût, et il faut placer la souris bien au centre du département (c'est encore pas très précis)... et attendre un peu ...
Bref, ok, c'est pas super-fonctionnel, mais pour l'instant il faut voir ça davantage comme un "exercice de style".

Alors je vais devoir retravailler dessus.
A suivre ...
:) Pierre
 
Dernière édition:

tatiak

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

Hello les amis,

Pour cet aprèm, voici une version dont le code est optimisé :
* diminution des délais de traitement,
* meilleure gestion des erreurs (donc plus stable),
* un peu de cosmétique (couleur, ...).

Qu'en pensez-vous?
:) Pierre

PS : j'ai ôté la version du post précédent car trop buguée
 

Fichiers joints

david84

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

Bonsoir Pierre,

j'ai testé vite fait et je trouve que c'est moins performant en l'état que le fait de passer par les hyperliens.

En plus j'ai un bug lorsque je clique dans le label100 à cette ligne
Code:
lig = Application.Match(Depart, Sheets("Dept").Columns(2), 0)
alors que la carte n'est pas encore affichée ou qu'elle l'est mais que je clique en dehors.

J'ai également un message de requête SQL non aboutie qui apparaît à certains moment et suite à cela il ne me reste plus qu'à fermer le fichier.

Tout cela peut bien sûr être amélioré mais juste pour comprendre : quel intérêt vois-tu à passer par ce procédé plutôt que par des hyperliens ? Qu'obtiendrais-tu au bout du compte de plus que tu ne puisses obtenir avec des hyperliens ?

A+
 

tatiak

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

Hello les amis :)

En effet, des petits défauts vite corrigés.
Comme indiqué (#65), il s'agit de tester des méthodes, car pour tout dire le rollover ne me semble pas un élément déterminant pour l'affichage d'info.
Par exemple on peut simplement utiliser les codes couleurs (fonction déjà présente) ou éventuellement écrire une info sur les départements (comme pour les villes).
Et si tu as pu comparer des méthodes, c'est bien parce qu'elles sont mises en œuvre ici.

Bonne journée à tous
:) Pierre
 

Fichiers joints

tatiak

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

Bonjour les amis :)

Pour continuer à jouer, et pour rendre la présentation de vos résultats encore plus percutante, voici une version avec "effet loupe" des départements au passage de la souris. L'échelle du grossissement peut se régler au début du module "Graphe", constante "Loupe".

:) Pierre
 

Fichiers joints

david84

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

Bonjour Pierre,

message Microsoft Excel à l'ouverture du fichier : "Erreur générale impossible d'ouvrir la clé de registre "Temporary (volatile) Ace DNS for process 0x186c thread 0x1bc8 BDC0x8cdef84 Excel".
Vérifier la requête (ou son appel):
SELECT NOM_DEPT, T, L, W, H Index from [Data$].

A+
 

BrunoM45

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

Salut Tatiak ;-)

C'est absolument génial, quel travail d'artiste ;)

Au plaisir
 

david84

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

Bonjour à tous,

Salut Pierre, j'ai testé sur le portable où j'avais ce message les solutions préconisées dans le message 71 mais sans succès.

De retour de vacances j'ai donc testé le fichier sur mon ordinateur et je n'ai pas l'alerte du message 70.
Ceci dit et si j'ai bien suivi la procédure que tu emploies il me semble que tu pourrais te passer d'utiliser une requête pour arriver à tes fins (à moins que je sois passé à côté de quelque chose) mais c'est bien sûr à toi de voir.

Suite aux quelques tests effectués sur le dernier fichier, ci-joint quelques remarques concernant l'effet de loupe recherché (à toi de voir ce que tu veux en faire bien entendu) :

- cela ne fonctionne pas sur le Bas Rhin car la condition
Code:
If lig > 0 Then
semble l'exclure vu qu'il correspond à la ligne 0
- pour la Moselle, Paris, etc. cela fonctionne mais avec difficulté car la loupe n'apparaît pas lorsque l'on cible le département (le curseur doit être décalé par rapport au département pour que cela fonctionne).
- la modification du zoom de la page entraîne un décalage du département soumis à l'effet de loupe
- il serait peut-être intéressant que les autres shapes placés dans le département ciblé (les villes en l'occurrence dans ton fichier mais cela pourrait être des lieux géolocalisés par exemple) apparaissent aussi dans la loupe.

Voilà pour l'instant !

A+
 

tatiak

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

Hello David,
En effet, il faut écrire : if lig>=0 then ...
et initialiser la variable : BDD_dept = -1 dans la fonction du même nom.
Par ailleurs,il est à noter que chaque shape est inscrite dans un rectangle plutôt large. Dans certaines zones et pour les "petits" départements (typiquement région parisienne) il y a superposition de plusieurs de ces rectangles, d'où le fonctionnement imprécis.
Pour les villes, pourquoi pas. Il suffit d'ajouter le code qui va bien pour le faire, yapuka...
:) Pierre
 
Dernière édition:

david84

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

Pour que la modification du zoom soit mieux pris en compte j'ai testé cela :
Dans la Sub Label100_MouseMove remplacer
Code:
ptX = Mouse.x * 3 / 4
ptY = Mouse.y * 3 / 4
par
Code:
ptX = Mouse.x * 3 / 4 / (ActiveWindow.Zoom / 100)
ptY = Mouse.y * 3 / 4 / (ActiveWindow.Zoom / 100)
et dans Function BDD_dept remplacer
Code:
        If BDD(2, i) < x - ghe0 - coef And BDD(2, i) + BDD(3, i) > x - ghe0 - coef _
           And BDD(1, i) < y - top0 - coef And BDD(1, i) + BDD(4, i) > y - top0 - coef Then
                BDD_dept = i
                Exit For
        End If
par
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
                Exit For
        End If
Testé vite fait chez moi dans une fourchette de zoom de 50% à 150% et cela semble fonctionner (au-delà il faut voir).

Certainement à modifier/améliorer, etc. mais bon je te livre l'idée au cas où.

A+
 

leakim

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

Bonjour à vous,
Je trouve ce travail remarquable. J'aimerai savoir comment l'adapter pour créer une carte départementale ou régionale. Je travail dans une association et je dois rendre à l'ARS des chiffres par zones géographiques. Actuellement je fais avec powerpoint et des vignettes en veux-tu en voilà...
J'ai vu sur le blog de Tatiak que une version avec la région Bretagne je suis pas très loin, en Maine et Loire.
Cordialement,
Leakim
 

tatiak

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

Bonjour les amis, hello David, salut Leakim,

Bien sûr chacun est libre d'adapter le code à ses besoins et envies, c'est pour cela que j'ai mis cet outil à disposition sur ce forum.

Néanmoins, je voudrais apporter une précision, il y a échelle et échelle et il ne faudrait pas qu'il y ait de confusion.

Reprécisons d'abord l'objet initial de l'outil. Il est destiné à :
* dessiner un fond de carte (zone quelconque) à partir de coordonnées GPS issues de données publiques, gratuites et libre d'utilisation
(j'utilise le site Opendatasoft pour l'essentiel, mais il y en a d'autres, wiki-brest par exemple)
* colorer la carte en fonction de "scores" (chiffre d'affaire, résultat d'élections, pluviométrie, ...)
* faire figurer sur cette carte des sites en fonction des coordonnées GPS
Le tout pour communiquer sur les "scores" obtenus par votre service, votre entreprise, ou autre ...

En l'état, il me semble que cet outil puisse répondre à nombre de questions sur ce forum :
il suffit de faire une recherche sur le forum avec le mot-clé "carte" pour obtenir 30 pages de résultats

Pour répondre par exemple à la demande de Sinopless en 2011 "Carte du morbihan avec donné chiffré" :
* on se rend sur Opendatasoft
* on choisit le jeux de données correspondant au Morbihan
* on fait des copier/coller de colonnes de données vers les colonnes qui vont bien de l'outil
* on rentre ses données à afficher
* et yapuka cliquer sur les boutons pour afficher une carte colorée selon ses besoins!

/!\ SAUF QUE /!\ L'échelle du graphique n'est pas bonne! (Ni les coordonnées du point en haut à gauche)
Si pour la France entière la déclaration : "Public Const Echelle = 1.2" (début du module Graphe) semble correcte,
pour un département seul (ici le Morbihan), il vaut mieux fixer la valeur de cette constante aux alentours de 8 (avec latitude0=48.4 et longitude0=4.2 par exemple)

Pour le reste, échelle d'affichage de la feuille, grossissement de la "loupe", ça me parait plus de l'ordre du détail, mais chacun fait ce qu'il veut.

Autre exemple, pour le Maine et Loire, département de Leakim :
Les données sont dispo sur =>http://public.opendatasoft.com/explore/dataset/correspondance-code-insee-code-postal/?tab=export&refine.nom_dept=MAINE-ET-LOIRE
Et il me semble qu'on obtient une carte lisible avec une échelle du graphique "Public Const Echelle = 9" (et latitude0 = 48 longitude0 = 1.8)

Souhaitant que ça serve au plus grand nombre
:) Pierre
 

Fichiers joints

leakim

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

Bonjour,
Une telle réactivité ce relève du don de soi ;-)
J'étais reparti depuis ton blog sur le maine et loire et je suis parvenu avec tes instructions didactiques à faire le nécessaire pour dessiner le département, sans trop de soucis (trois essais).
Mais là, tu me donnes la totale avec le zoom de zone, la coloration par valeurs, c'est top un grand merci.

Cordialement,
Leakim
 

leakim

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

Re,
Juste pour pousser le bouchon. Lorsque l'on survole une ville il y a bien une reprise des données. Reste que serait-il possible de reprendre la couleur de la ville selon le code couleur de celle-ci et sur lorsqu'il il y a un survol la couleur de la ville est réinitialisée?
est-il possible d'y remédier?
Je cherche de mon coté.

Leakim
 

Discussions similaires


Haut Bas