Macro sur liste déroulante

Bonjour,

J'ai besoin d'aide pour écrire une macro qui me permettra de mettre en surbrillance une commune sur une carte.

D'un côté, j'ai une carte avec des polygones (les communes) comportant chacun un nom

De l'autre, j'ai la liste des communes

J'ai une liste déroulante qui permet la sélection d'une commune en particulier

Que faut-il écrire comme macro pour que la commune sélectionnée dans la liste soit mise en couleur?

Merci de votre aide

FP

Bonjour,

et

Plutôt qu'une image, je pense que tu auras plus de chances d'avoir de l'aide en joignant ton fichier....

Si tu n'y arrives pas avec les moyens de ce site, essaie avec cjoint

Bon w-e

Voici le fichier excel en pièce jointe...

mais qu'est-ce que cjoint ?

Cdt

FP

Re-,

cjoint est un site gratuit de partage de fichier. Sur xlpratique tu es limité à 300 Ko par dossier.

Pour en revenir à ton fichier, ce serait jouable, si les "forms" étaient nommés.

Cependant, certains ont effectivement le nom qui va bien ("Aizenay", "Beauvoir-sur-mer", ...), mais tous les autres ont un nom comme ça : "Freeform 71", "Freeform 245", et pas dans l'ordre des communes...

Donc, à moins de nommer tous les objets avec le nom des communes, je crains que ce ne soit pas possible...

Bon courage

Ah mais toutes mes communes vont être nommées, je suis en train de le faire.

Je sais mettre en couleur une commune si je clique sur un nom de la liste

Sub Commune()
Worksheets("carte").Shapes("SAINT-GERVAIS").Fill.ForeColor.RGB = RGB(0, 0, 255)
End Sub

Mais je ne sais pas quoi écrire pour remplacer "SAINT-GERVAIS", afin de prendre en compte le nom de la commune sélectionnée dans la liste déroulante.

j'imagine qu'il faut une boucle ou la définition d'une variable??

Mais là, ça dépasse mes compétences

Re-,

Pour colorer une commune, dans la cellule G31, par exemple, tu peux mettre cette formule :

=INDEX(com!B:B;F31+1)

Tu auras ainsi le nom de la commune sélectionnée dans le menu déroulant.

Afin de remettre l'ancienne commune sélectionnée d'une couleur neutre, j'utilise le "Gestionnaire de noms"

J'insère un "nom", dans ce gestionnaire, et donne comme valeur la cellule sélectionnée.

Lorsque je change de commune, en premier lieu, l'ancienne commune repasse en blanc, puis le nom prend la valeur de la nouvelle commune sélectionnée, et se colorie en bleu

Avec ce code :

Sub Commune()
On Error Resume Next    'ligne à supprimer dès lors que tu auras
                        'renommé tous les objets
With Worksheets("carte")
    If Not IsError([nom_commune]) Then .Shapes([nom_commune]).Fill.ForeColor.RGB = 16777215
    ActiveWorkbook.Names.Add Name:="nom_commune", RefersTo:=.Range("G31").Value
    .Shapes([nom_commune]).Fill.ForeColor.RGB = RGB(0, 0, 255)
End With
End Sub

Note bien qu'il faudra supprimer la 2ème ligne ("On Error Resume Next"), dès que tu auras renommé tous les objets.

Fichier :

Ah, un grand merci!

je veux bien à l'occasion une explication de la commande

=INDEX(com!B:B;F31+1)

ça me fera progresser

et je vais regarder comment éviter que le fond en gris (derrière la carte) devienne blanc après déselection

Merci encore

Re-,

La formule Index te renvoie une valeur d'une matrice, en fonction du numéro de ligne et d'un numéro de colonne.

Dans cette formule, la matrice est donc la colonne B de l'onglet "com"

Et le numéro de ligne est la valeur retournée par la liste déroulante (si tu choisis la première valeur, la cellule F31 prend la valeur "1")

Et en rajoutant +1 à cette valeur, on obtient donc la deuxième ligne de la matrice, soit la valeur de la cellule B2 de l'onglet "com"

Regarde l'aide, ce sera sûrement mieux expliqué....

Bonne soirée

C'est très clair! Merci infiniment

Bonne soirée

Bonjour

Juste pour le fun

A tester

franckexcel Communes de Vendée V001.zip

Super! Merci

Rechercher des sujets similaires à "macro liste deroulante"