|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre à l'essai
![]() Inscription : août 2011 Messages : 43 ![]() |
Bonjour,
Ce sujet fait suite aux divers messages que j'ai postés dans le but de créer et rendre interactive sous Excel une carte d'une région de France initiallement au format SVG (cf. 1, 2 et 3). Je me suis servi pour cela du tuto Dessiner une carte de France avec les fonctions de dessins de formes libres. La carte créée, baptisée "CarteBasRhin", est composée de nombreuses formes libres (les villes) regroupées ensembles. Chaque forme se rapporte à une ligne d'un tableau composé de 500 lignes (une ligne par ville) environ et de 3 colonnes : l'identifiant (le code postal à peu de choses près), le nom de la ville, et une valeur associée. Ma carte est correctement créée et je peux colorier presque chacune des formes libres en fonction de cette valeur associée grâce à une macro. Je dispose également d'une macro nommée "Carte_Click" me permettant, lorsque l'utilisateur clique sur une ville particulière, de colorer la forme libre d'une autre couleur pour mieux la repérer par la suite et d'afficher les infos relatives à cette ville dans une zone de texte "info", du style : Vous avez cliqué sur la ville : Ville N (ID XXXX) Le CA de cette ville est : 568753 k€ Comme il n'est pas toujours aisé de connaître la position précise d'une ville sur ma carte, je souhaiterai ajouter une zone de liste baptisée "Select_Commune" listant le nom des villes et me permettant également de repérer la ville en la colorant sur la carte et d'afficher les infos relatives à cette ville dans "info". Pour faire bien, il faudrait que en cliquant sur la carte, la zone de liste "Select_Commune" affiche aussi le nom de la ville correspondante. J'ai tenté plusieurs techniques que j'ai trouvées au cours de mes recherches sur le web, mais rien n'a fonctionné jusqu'à présent. Une idée pour faire cette zone de liste ? Pour information : * Ma carte et mes données sont sur la seule feuille de mon fichier : "CA" * Voici la macro Carte_Click du module "Carte_Click" utilisée lorsque je clique sur la carte : Code :
Code :
|
||||
|
|
10
|
|
|
#2 | ||||||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
Citation:
J'ai positionné la listbox sur la feuille CA, il faudra modifier le code. Pour synchroniser la listbox avec le clic, ajoute : Code :
Si sélection par listbox, j'ai juste récupéré le nom et le code de la commune. Tu n'as plus qu'à recopier une partie de ton code (à mettre dans le module de la feuille qui contient le listbox) : Code :
__________________
Cordialement. Daniel Citation:
|
||||||
|
10
|
|
|
#3 | |||||
|
Membre à l'essai
![]() Inscription : août 2011 Messages : 43 ![]() |
Bonjour,
Tout d'abord, merci Daniel pour ton aide. Citation:
Code :
ThisWorkbook.Sheets("CA").Select_Commune.ListFillRange = "B2:B529" J'avais essayé ça : Code :
Mis à part ce problème, j'ai placé ton premier code qui synchronise la listbox avec le clic sur ma carte et tout marche bien. Par contre, le second code n'a pas fonctionné. Tout ce que je peux faire est sélectionner une ville dans ma liste, mais cela n'agit ni sur ma carte, ni dans ma zone de texte. Je l'ai placé dans la feuille CA, sans succès. J'ai également essayé un module distinct, mais je n'ai pas réussi à l'associer à ma zone de liste déroulante (je n'ai pas l'option "Affecter une macro..."). Je précise que la zone de liste est un contrôle ActiveX. J'ai également essayé via un contrôle de formulaire à la place mais il faudrait sans doute modifier le code ailleurs dans ce cas. Au passage, cliquer sur "Visualiser le code" dans le menu contextuel de ma zone de liste ajoute automatiquement Code :
|
|||||
|
|
10
|
|
|
#4 | ||||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
1. remplissage de la listbox :
Code :
Citation:
__________________
Cordialement. Daniel Citation:
|
||||
|
10
|
|
|
#5 | |
|
Membre à l'essai
![]() Inscription : août 2011 Messages : 43 ![]() |
Je vois ce que tu veux dire.
Mais je veux bien un coup de main. N'étant pas encore très à l'aise avec VBA, j'essaie de reprendre des parties de code de ma macro "Carte_Click" mais je suis en train de me mélanger les pinceaux. Pour le remplissage de la listbox, ça ne fonctionne pas encore. Excel m'affiche "Erreur d'exécution '2147467259 (80004005)': Erreur non répertoriée.". Le débogueur pointe alors sur la ligne .Select_Commune.Clear. En lisant le site de microsoft (lien) m'indique : Citation:
Par ailleurs, je ne vois pas trop l'utilité du Dim c As Range |
|
|
|
00
|
|
|
#6 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Est-ce que la feuille "CA" est protégée, et si oui, l'est-elle avec un mot de passe ?
__________________
Cordialement. Daniel Citation:
|
|
|
10
|
|
|
#7 |
|
Membre à l'essai
![]() Inscription : août 2011 Messages : 43 ![]() |
Non, rien n'est protégé.
|
|
|
00
|
|
|
#8 | |||||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
OK, j'ai aussi cette erreur et je ne comprends pas pourquoi; le code suivant fonctionne :
Code :
Je n'ai pas la possibilité de tester. Essaie ceci : Code :
__________________
Cordialement. Daniel Citation:
|
|||||
|
20
|
|
|
#9 | ||||
|
Membre à l'essai
![]() Inscription : août 2011 Messages : 43 ![]() |
C'est bon, le remplissage de la listbox fonctionne bien à présent
Merci ![]() Par contre, le second code pour la synchronisation de la carte en fonction de la listbox ne fonctionne pas. Plus exactement, lorsque je sélectionne une ville dans la listbox, la forme associée ne change pas de couleur. Tout ce que j'arrive à faire, c'est mettre à jour la zone de texte en fonction de la listbox. J'ai un peu corrigé le code aussi pour corriger les erreurs détectés. Le voici : Code :
Code :
J'ai fait quelques tentatives, mais ça n'a rien donné. J'avais identifié à un moment un site qui permet de télécharger un fichier Excel avec le même effet que celui que je souhaite mettre en place, dans ce cas sur une carte de France, mais je n'ai pas réussi à l'adapter à mon cas. Bref, je suis un peu perdu. Personne n'a d'idée pour cette synchro ? |
||||
|
|
00
|
|
|
#10 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Je vais essayer de reconstituer un classeur.
__________________
Cordialement. Daniel Citation:
|
|
|
12
|
|
|
#11 |
|
Membre à l'essai
![]() Inscription : août 2011 Messages : 43 ![]() |
Si besoin, je peux aussi mettre mon fichier ici en pièce jointe dès que serai rentré chez moi.
|
|
|
00
|
|
|
#12 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Je ne comprends pas; j'ai repris ma dernière macro telle quelle avec un groupe de trois formes. Elle s'exécute bien (sauf la légende qui ne s'efface pas).
Ton fichier doit être beaucoup gros pour le mettre en PJ ?
__________________
Cordialement. Daniel Citation:
|
|
|
10
|
|
|
#13 |
|
Membre à l'essai
![]() Inscription : août 2011 Messages : 43 ![]() |
Ca va aller
Pour info, la listbox se trouve sur la droite de la page "CA" |
|
|
10
|
|
|
#14 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Ca m'a l'air correct comme ça (en fait, j'avais cru que les formes portaient le nom des communes alors qu'elles portaient le code) :
Code :
__________________
Cordialement. Daniel Citation:
|
|||
|
20
|
|
|
#15 |
|
Membre à l'essai
![]() Inscription : août 2011 Messages : 43 ![]() |
Ca marche impec
J'ai juste supprimé l'avant-dernière ligne (shpInfo.DrawingObject.Text = strInfo) qui semblait un peu redondante avec la ligne suivante mais qui me mettait du texte sur ma carte. Me reste plus qu'à finaliser mon fichier en permettant l'utilisation d'une échelle personnalisée et ça sera parfait. Mais il s'agit d'un autre sujet et je posterai mes autres questions sur un nouveau post si j'en ai. En tout cas, merci pour tout Daniel
|
|
|
10
|
Copyright © 2000-2012 - www.developpez.com