Métamorphoser des données en carte... Possible sous Excel ?

Lentillelocale

XLDnaute Nouveau
Bonjour à toutes et tous,
Dans le fichier à récupérer à l'adresse suivante (car taille 130 Ko supérieure à 48 Ko même zippé) http://lionel.le.tallec.free.fr/Carto 06.zip (j'ai mis une maj le vendredi 20 avril à 20 heures), j'ai un onglet DONNEES qui, comme son nom l'indique, contient les données relatives aux divers résultats cumulés à la fin d'une période de 76 agences du département 06 (avec objectif, rang et réalisé). La colonne A est modifiée à chaque fois que l'on sélectionne l'indicateur dans la liste déroulante de la feuille CARTE

Dans l'autre onglet CARTE, une liste déroulante permet donc de choisir l'indicateur que l'on souhaite représenter sur la carte.
Les points des 76 agences restent à positionner précisément sur la carte mais ce n'est pas là le souci. C'est fait avec la version màj ce jour à 20h.

Je souhaite votre aide pour les 4 points suivants :
1) comment associer une info-bulle à un cercle (a priori pas possible sur des objets shape... j'avais penser alors avoir des cellules de 1 sur 1 afin d'associer à la cellule une info-bulle dynamique avec les données relatives à l'agence : nom, objectif indicateur, réalisé, TRO taux réalisé sur obj, rang). Fait.
2) Le cercle doit avoir un rayon proportionnel à son poids d'objectif par rapport à l'ensemble des 76 sites. Reste à faire.
3) La couleur de fond des cercles dépend du classement de l'agence pour l'indicateur choisi. 4 pelotons (1 couleur par peloton : vert, bleu, orange, rouge ou alors 4 couleurs dégradées). Fait.
4) La fonction Rang utilisée dans l'onglet DONNEES ne fait pas de différence pour les ex-aequo. Je ne voudrai pas de doublon.
5) Mettre au centre de chaque cercle son rang. Reste à faire mais est-ce vraiment utile ?
et Mettre dans l'onglet CARTE à droite le classement Rang et Nom du site TErrain. A faire

N'hésitez pas à me donner votre avis et à me faire part de toute idée pour le point 1 notamment (infos-bulles relatif au cercle survolé par la souris)
A bientôt de vous lire
 
Dernière édition:

Lentillelocale

XLDnaute Nouveau
Re : Métamorphoser des données en carte... Possible sous Excel ?

J'ai trouvé comment mettre une info-bulle.
J'ai ajouté au-dessus de chaque cercle une zone de texte sans cadre et transparent avec un lien hypertexte et une info-bulle. Et voilà; Il fallait y penser...

Si vous avez d'autres idées ou une réponse à mes autres questions, je vous lirai avec plaisir.

Je vais remettre mon fichier maj en ligne à l'adresse

http://lionel.le.tallec.free.fr/Carto 06.zip
 
Dernière édition:

Lentillelocale

XLDnaute Nouveau
Re : Métamorphoser des données en carte... Possible sous Excel ?

J'ai ajouté toutes les zones texte et ça marche. youppi...

Cependant, je n'ai pas compris pourquoi Excel n'acceptait plus après coup de me créer les Text Box 196, 184 et 199. J'ai donc dû créer les Text Box 255,254 et 256 en lieu et place, et adapter mon code VBA en conséquence pour les lignes 22,10,25...
Mais Comprenez-vous pourquoi Excel ne veut pas créer ces zones de texte ???? Moi pas.

Comment éviter après avoir choisi dans la liste déroulante l'indicateur le tremblement de l'écran ? Une idée ?

Pensez-vous utile de représenter les aires des cercles en fonction du poids de l'objectif du Terrain ?
 

bof

XLDnaute Occasionnel
Re : Métamorphoser des données en carte... Possible sous Excel ?

Bonjour,
Les objets shapes, text box, ovale, rectangle... se créent selon une numérotation continue Zone de Texte1, Ovale2, Rectangle3, Trait4, WordArt5... Si entre 2 TextBox tu crées un ovale ou autre le N° correspondant devient indisponible (même si tu supprimes la forme crée entre temps).
Le scintillement provient du grand nombre de Select dans la boucle Do while...Il faudrait remplacer tout cela par de l'adressage direct :
Sheets("DONNEES").Range("A" & Ligne).Copy
(Nota : ces lignes ne servent à rien car tu ne te sers pas de la Copy...)
En première approche le code suivant apporte une amélioration significative :
Code:
Sub Macro1()
Dim a As Integer
Application.ScreenUpdating = False
Ligne = 3
Do While Sheets("DONNEES").Range("A" & Ligne).Value <> ""
    Rang = Sheets("DONNEES").Range("A" & Ligne)
    Select Case Rang
        Case 1 To 19

...

L'inconvénient des shapes est que tu seras obligé de les sélecter si tu souhaites les modifier en grand nombre aussi je ne garantis pas la stabilité de l'image (malgré le Application.ScreenUpdating = False)
Personnellement j'aurais essayé d'utiliser une autre technique que l'infobulle mais bon...
A+
 

Lentillelocale

XLDnaute Nouveau
Re : Métamorphoser des données en carte... Possible sous Excel ?

Effectivement, ces lignes ne servaient plus à rien...
Et le scintillement venaient de ce copy inutile.

Merci Bof pour cette très juste remarque.

Tu écris :
"Personnellement j'aurais essayé d'utiliser une autre technique que l'infobulle mais bon... "

laquelle ?
 

bof

XLDnaute Occasionnel
Re : Métamorphoser des données en carte... Possible sous Excel ?

Bonjour,
Je ne sais pas... J'y travaille tout doucement. Il y à plusieurs possibilités... J'explore !

[Edit] En fait après une journée de tests divers, je n'ai pas débouché sur grand chose qui reste dans l'esprit de ta réalisation.
A+
 
Dernière édition:

bof

XLDnaute Occasionnel
Re : Métamorphoser des données en carte... Possible sous Excel ?

Bonjour,
J'ai gratté un peu sur ton os pour optimiser un peu.
J'ai listé sur la carte (en colonne CA) les divers shapes.
0n voit vers la ligne 104 un trou dans la continuité des N° et des renommages bizarres qui correspondent à Tende, Vence et Cannes/palais
Je m'interroge également sur l'absence de Text Box 200 et 201, mais (faute de temps) je n'ai pas tout compris sur la correspondance ligne/Cercle/Text Box. Et comme je ne possède guère la géographie de ton dept c'est pas simple de vérifier. Peut-être y verras tu plus clair que moi.

http://cjoint.com/?eydDuJ0jFB

A+
 

Lentillelocale

XLDnaute Nouveau
Re : Métamorphoser des données en carte... Possible sous Excel ?

Merci de t'être penché sur le problème et pour ta proposition de t'y pencher à nouveau lorsque tes disponibilités le permettront.

Je n'ai pas trouvé mieux pour l'instant que d'utiliser des Shapes.
Je mets ma dernière version sur mon site car le zip fait 439 ko
http://lionel.le.tallec.free.fr/Carto 2006.zip

Je cherche maintenant à optimiser le temps d'affichage de l'onglet CARTE lorsque l'on change d'indicateur. Ce temps est actuellement de 25 secondes.
Il était encore ce matin de 1 minute et après une ballade en montagne près de St Martin Vesubie, c'est mieux. Mais il y a peut être encore moyen de diminuer ce temps d'affichage.


Au plaisir de te lire Bof (et les autres aussi bien évidemment).
 
Dernière édition:

bof

XLDnaute Occasionnel
Re : Métamorphoser des données en carte... Possible sous Excel ?

Ben oui,
On butte rapidement sur ce problème. Difficile de passer en revue tous les contrôles sans les sélectionner. Même en optimisant le changements de couleurs des cercles le gain est invisible. Le problème c'est tous les autres select en boucle qu'on ne peut éviter.
Excel n'est guère un logiciel graphique....
Les rares essais de cartographie sous Excel s'arrêtent tous une visualisation directe des données sur les fonds de shapes (polygones) qui ne nécessitent pas de sélection.
Des que tu t'obliges à sélectionner un grand nombre de contrôles pour les modifier le problème de temps de traitement devient rapidement scatologique.
A+
 

Lentillelocale

XLDnaute Nouveau
Re : Métamorphoser des données en carte... Possible sous Excel ?

Par contre, avec Excel 97, l'info-bulle n'apparaît pas.... Pourquoi ?
C'est le chemin de l'hyperlien associé au point qui apparaît !
ScreenTip ne fonctionne pas avec Excel 97..

Comment faire pour qu'Excel 97 agisse comme Excel 2000 ?

Quelqu'un a-t-il rencontré ce souci ? et résolu ?

La macro utilisée est la suivante pour mettre à jour l'info-bulle :
Sub Ajoute_Info_Bulle(Indic, NomIndicateur, Ligne, MaCouleur)
On Error GoTo Fin_Ajoute_Info_Bulle
'
Application.ScreenUpdating = False ' Pour optimiser

NumCercle = 84 + Ligne ' dans Carto_ex c'était 174 + Ligne
If Ligne = 21 Then NumCercle = 163 ' car je n'ai pas réussi à créer le Text Box 105

col = Indic * 4 ' Colonne de l'indicateur sélectionné

ActiveSheet.Shapes("Text Box " & NumCercle).Select
MonHyperlien = "DONNEES!A" & Ligne
MonInfoBulle = Sheets("DONNEES").Range("C" & Ligne) ' Nom du Terrain
MonInfoBulle = MonInfoBulle & Chr$(10) & Chr$(13)
MonInfoBulle = MonInfoBulle & "=================="
MonInfoBulle = MonInfoBulle & Chr$(10) & Chr$(13)
MonInfoBulle = MonInfoBulle & Sheets("DONNEES").Range("EZ" & Ligne) ' Nom du DET
MonInfoBulle = MonInfoBulle & Chr$(10) & Chr$(13)
MonInfoBulle = MonInfoBulle & "=================="
MonInfoBulle = MonInfoBulle & Chr$(10) & Chr$(13)

MonInfoBulle = MonInfoBulle & " " & NomIndicateur ' Nom indicateur
MonInfoBulle = MonInfoBulle & Chr$(10) & Chr$(13)

Obj = Sheets("DONNEES").Cells(Ligne, col + 1)
MonInfoBulle = MonInfoBulle & " Objectif : " & getRound(Obj, 2)
MonInfoBulle = MonInfoBulle & Chr$(10) & Chr$(13)
Réa = Sheets("DONNEES").Cells(Ligne, col)
MonInfoBulle = MonInfoBulle & " Réalisé : " & getRound(Réa, 2)
MonInfoBulle = MonInfoBulle & Chr$(10) & Chr$(13)
TRO = Sheets("DONNEES").Cells(Ligne, col + 2) * 100
MonInfoBulle = MonInfoBulle & " TRO :" & getRound(TRO, 0) & "%"
MonInfoBulle = MonInfoBulle & Chr$(10) & Chr$(13)
Rang = Sheets("DONNEES").Cells(Ligne, col + 3)
MonInfoBulle = MonInfoBulle & " Rang : " & Rang

Selection.Characters.Text = ""
With Selection.Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
ActiveSheet.Hyperlinks.Add Anchor:=Selection.ShapeRange.Item(1), Address:= _
"", SubAddress:=MonHyperlien, ScreenTip:=MonInfoBulle

Call CumulNbpointsparCouleurparGpt(Gpt, MaCouleur, Ligne)


Fin_Ajoute_Info_Bulle:
Application.Cursor = xlDefault ' Pointeur par défaut
End Sub

----
Idée : Utiliser la position de la souris et en fonction de ces coordonnées (si correspondent à l'un des 76 points avec Text Box n associées) afficher dans une zone de texte les infos (si on n'est pas positionner sur un des 76 points cette zone de texte reste invisible) ?

S'inspirer de mouseover event - embedded chart.xls ?
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 082
Membres
103 457
dernier inscrit
fab2614