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

JCGL

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

Bonjour à tous,

Il manquait une formule en I (colonne masquée)

A+ à tous
 

Fichiers joints

hicks007

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

ho punaise !

merci, voila comment se prendre la tête pour rien lorsqu'on cherche pas au bon endroit.

ca fonctionne du coup ^^

merci et bonne soirée
 

tatiak

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

Bonjour les amis :)

Un grand merci à Jean-Claude (que je salue au passage) qui assure l'après-vente avec brio!
C'est vrai que je ne viens pas ici trop souvent.

Suite la lecture des post de ce fil (et pour répondre à hicks007),
la carte utiliser pour la carte de France n'est pas faite de forme réunies pour ne faire qu'une carte.
je vous propose une p'tite macro pour dessiner un département, une région, voire la France entière selon ses contours GPS, ville par ville!

Tout ceci grâce à l'excellente base (publique): OpenDataSoft — Correspondance Code INSEE - Code Postal qui propose l'ensemble des coordonnées GPS des contours de chaque commune de France.
Sur ce site, en sélectionnant son département ou sa région, on peut obtenir un fichier CSV contenant l'ensemble des info nécessaires au dessin.

Sur le fichier joint, il suffit de coller les coordonnées obtenues (feuille "Data"), de les trier par départements, de préciser les références d'un point "zéro" (feuille "Carte") (qui fait correspondre un point le plus au nord et à l'ouest de votre région au coin supérieur gauche de l'écran d'Xl), et de cliquer sur le bouton "dessin".
Pour la Bretagne-la-plus-belle-région-du-monde! (donc chez moi :cool:), un point 49 latitude nord et 5,2 longitude ouest convient.

Pour une région plus à l'est, vous indiquerez, par exemple pour la Franche-Comté, une longitude (ouest) à -5 environ (valeur négative car à l'est du méridien de Greenwich)
(Pour se repérer voir google-map ou alors par exemple : La latitude et la longitude de la France)
Pour une région plus au nord (les malchanceux!) une latitude à 51 devrait aller (Nord-Pas-de-Calais, par exemple)

Une fois le dessin réalisé, chaque shape est référencée par le nom de la commune. A vous d'en faire l'usage que vous voudrez.

:) tatiak
 

Fichiers joints

hicks007

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

merci beaucoup,

je vais me pencher dessus et essayer d'utiliser au mieux les conseils d'utilisation que vous m'apportez.

bonne semaine à tous.
 

nabuco

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

Bonjour à tous,

Super c'est exactement ce que je recherchais pour le transposer à une carte monde.
Par contre y aurait-il une astuce pour intégrer la valeur des données à l'intérieur des cercles proportionnés?
Au départ j'ai pensé faire un collage spécial par image liées des données mais ce n'est pas top au niveau présentation.

J'ai rencontré également un souci lorsque j'ai tenté de renommer dans la macro le "dept" par "zone", à chaque fois la macro devenait inopérante. De même impossible de renommer les objets cercles (Dept01, etc...) en faisant Ctrl + clic sur le cercle puis en renommant et entrée à chaque fois le nom précédent réapparaît.

Pouvez vous m'éclairer de vos lumières?

Merci d'avance

Ci-joint ma maquette
 

Fichiers joints

tatiak

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

Hello et Bienvenue,
classiquement pour écrire dans un shape, il suffit de dire un truc du genre:
Code:
With sh.TextFrame2.TextRange.Characters
    .Text = "COUCOU"
    .Font.Size = 9
End With
sh étant un truc genre set sh=activesheet.shapes.trucmachin
:) Pierre
 

nabuco

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

Merci tatiak, mais je suis plutôt perdu pour le coup, car il s'agit ici de récupérer une valeur qui est présente dans le tableau des données et ce pour chaque cercle proportionnel (shape?) présent sur la carte. Or il me semble qu'avec cette proposition de ligne de code on vient donc inscrire un texte en l'occurrence "COUCOU" dans un shape mais sans faire référence à la valeur d'une cellule du tableau (désolé je ne suis pas très doué en la matière, plutôt un bidouilleur atardé).
nabuco
 
Dernière édition:

tatiak

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

Ah ok,
Tu peux écrire par exemple :
Code:
        With Shapes("Zone" & Cells(i + 1, "D"))
            .Height = Cells(i + 1, "C").Value * 60
            .Width = Cells(i + 1, "C").Value * 60
            With .TextFrame2.TextRange.Characters
                .Text = Cells(i + 1, "F").Text
                .Font.Size = 12
                .Font.Bold = True
            End With
        End With
voir exemple joint

:) Pierre
 

Fichiers joints

tatiak

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

Pour le fun, version avec taille de police proportionnelle
:) Pierre
 

Fichiers joints

nabuco

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

Waouh, super! c'est exactement çà.
Merci beaucoup et chapeau bas.

Bonne soirée.
:) François
 

PBO229

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

Bonjour à tous,
Géniales vos cartes!
J'ai un peu le même problème que Nabuco et je souhaite afficher sur la carte de France des cercles avec les valeurs dedans.
J'ai donc pris la carte du monde de Tatiak (map(3)) et j'ai collé dans la macro Dept.xls la partie qui me semblait écrire dans les ronds:
With .TextFrame2.TextRange.Characters
.Text = Cells(i + 1, "F").Text
.Font.Size = Int(11 * coef * 1.2)
.Font.Bold = True
End With

J'ai juste changé le "F" par un "L". Mais ça ne marche pas...
Quelqu'un a une idée?

EDIT: Bon j'ai réussi en fait mais ça écrit de haut en bas, une idée pour que ça écrive de gauche à droite?
 
Dernière édition:

tatiak

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

Salut,
Ajoute juste un truc genre
Code:
.TextFrame2.WordWrap = msoFalse
à la suite, sous le end with
:) Pierre
 

PBO229

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

Merci Tatiak, ça fonctionne parfaitement!
Le choix des couleurs de remplissage se fait dans quelle partie de la macro?

Bonne journée
 

tatiak

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

couleur non prévu, il me semble. Tu peux écrire un truc genre :
Code:
Sub dessin()
Dim i As Integer, coef As Single
Dim couleur, indexcouleur As Byte

    couleur = Array(RGB(204, 255, 255), RGB(204, 255, 204), RGB(204, 204, 255), _
                RGB(255, 204, 204), RGB(255, 204, 255), RGB(255, 255, 204))
    indexcouleur = 0
    
    On Error Resume Next
    For i = 1 To 9
        coef = Cells(i + 1, "C").Value
        indexcouleur = indexcouleur + 1
        If indexcouleur = UBound(couleur) Then indexcouleur = 0
        With Shapes("Zone" & Cells(i + 1, "D"))
            .Height = coef * 60
            .Width = coef * 60
            With .TextFrame2.TextRange.Characters
                .Text = Cells(i + 1, "F").Text
                .Font.Size = Int(11 * coef * 1.2)
                .Font.Bold = True
            End With
            .TextFrame2.WordWrap = msoFalse
            .Fill.ForeColor.RGB = couleur(indexcouleur)
        End With
    Next i
End Sub
et tu choisis le jeu de couleur que tu veux en modifiant le tableau des RGB
:) Pierre
 
Dernière édition:

PBO229

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

Merci pour le code.
Il y a néanmoins plusieurs choses que je ne comprends pas.
Pourquoi i va de 1 à 9, à quoi est-ce que ça correspond?
Si je veux mettre une condition sur les couleurs: Si la valeur est entre 0 et 10 alors remplir en bleu (par exemple), où est-ce que je peux l'insérer? Il faut que j'affecte une nouvelle valeur à indexcouleur en fonction de la valeur?

Bonne soirée :)
 

tatiak

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

Ah oui, 9 correspond au nombre de lignes de données dans l'exemple, si tu veux tu peux faire un derligne= range(machin).end.truc ... pour être plus dynamique.
Pour les couleur selon les valeurs, tu peux faire un simple select case du genre :
Code:
For i = 1 To 9
    Select Case Cells(i + 1, "F").Value
        Case 10 To 19: indexcouleur = 1
        Case 20 To 29: indexcouleur = 2
        Case 30 To 39: indexcouleur = 3
        Case 40 To 49: indexcouleur = 4
        Case 50 To 59: indexcouleur = 5
        Case Else: indexcouleur = 6
    End Select
etc ...
en choisissant les gammes de valeurs que tu veux (ici les valeurs à objectiver sont en colonne F et sont coloriées de 10 en 10).
(Le select case vient à la place de
Code:
 indexcouleur = indexcouleur + 1
If indexcouleur = UBound(couleur) Then indexcouleur = 0
)

Pour les triplets couleurs RGB, tu peux en ajouter autant que tu veux dans l'array pour élargir la gamme des indexcouleur disponibles
:) Pierre

PS : pour les couleurs, j'utilise "La boite à couleur" utilitaire gratuit et léger. Un bleu s'obtient avec le triplet RGB(50,150,250) par exemple.
 
Dernière édition:

PBO229

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

Bonjour à tous,
Merci Tatiak pour ton aide.
J'ai adapté le code grâce à tes explications.
DERLIG ne fonctionne pas, n'est-ce pas comme cela que l'on sélectionne la dernière ligne?
Si je remplace DERLIG par une valeur rien ne se passe, à quoi cela peut-être dû?
Je précise que mes données en L sont des pourcentages.
Code:
Option Explicit

Sub dessin()
Dim i As Integer, coef As Single, DERLIG  As Single

Dim couleur, indexcouleur As Byte

    couleur = Array(RGB(255, 255, 255), RGB(255, 253, 0), RGB(255, 160, 0), _
                RGB(255, 86, 0), RGB(255, 0, 0), RGB(255, 255, 255))
    indexcouleur = 0
   
    On Error Resume Next
DERLIG = .Range("J" & .Rows.Count).End(xlUp).Row
For i = 1 To DERLIG
    Select Case Cells(i + 1, "L").Value
        Case 0 To 0.005: indexcouleur = 1
        Case 0.005 To 0.2: indexcouleur = 2
        Case 0.2 To 0.4: indexcouleur = 3
        Case 0.4 To 0.6: indexcouleur = 4
        Case 0.6 To 1: indexcouleur = 5
        Case Else: indexcouleur = 6
    End Select
        With Shapes("Zone" & Cells(i + 1, "D"))
            .Height = coef * 60
            .Width = coef * 60
            With .TextFrame2.TextRange.Characters
                .Text = Cells(i + 1, "L").Text
                .Font.Size = Int(11 * coef * 1.2)
                .Font.Bold = True
            End With
            .TextFrame2.WordWrap = msoFalse
            .Fill.ForeColor.RGB = couleur(indexcouleur)
        End With
    Next i
End Sub
 
Dernière édition:

tatiak

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

Bonjour,

Vu que le sujet semble intéresser du monde, j'ai mis une démo complète à télécharger SUR CE LIEN
La démo à prendre est le fichier : France_Clients2.zip du 27 mai 2015 (trop gros pour être posté ici)
* Un clic pour générer la carte (départements en 6 nuances de grey), dessinée selon coordonnées GPS.
* Un autre clic pour placer les villes (diamètre des ronds proportionnel au "score" de la ville)
* Une échelle colorimétrique de 25 nuances (à adapter suivant le besoin)

:) Pierre

PS: ton derlig doit être DERLIG = Range("J" & .Rows.Count).End(xlUp).Row (sans le point avant "Range")
 
Dernière édition:

PBO229

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

Wahou beau boulot!
J'ai ajouté tous les départements avec leurs préfectures ainsi que les coordonnées GPS.
Je veux bien le partager avec vous mais le fichier est trop volumineux.
Vous pouvez m'envoyer un MP si vous le voulez.
 
Dernière édition:

tatiak

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

Ok, parfait,
De mon côté, j'ai ajouté SUR CE LIEN une version qui permet de coloriser les départements et/ou les villes selon leurs scores.
Tu pourrais peut être extraire la liste des villes+coordonnées GPS de ton fichier pour la mettre à disposition ici
:) Pierre
 

Discussions similaires


Haut Bas