Lancer une macro en fonction du texte d'une cellule

Bonjour !

Débutante sur VBA, j'ai un projet à faire mais mon niveau est très faible et j'aurais donc besoin d'un peu d'aide pour me lancer..

L'idée est simple : j'ai une carte de la France découpée par départements ; chaque forme correspond donc à un département.

J'ai créé une liste déroulante comportant tous les départements. Lorsque je sélectionne un département dans la liste, j'aimerais que le département concerné se colorie en bleu par exemple.

Dans un premier temps, j'ai commencé uniquement avec le département "Ain (01)" et "-" qui réinitialise la carte (tout en blanc). Là je bloque ; mes macros n'ont pas l'air de fonctionner alors j'aurais besoin d'un peu d'aide. Je vous joins le fichier, merci d'avance aux personnes qui prendront du temps pour se pencher sur mon sujet !

18carte-vba.xlsm (144.33 Ko)

Bonjour toutes et tous

@Trappedmind2

j'ai vu un post de MFerrand qui m'a maintes fois aidé et en qui je remercie énormément

Voir ici, j'ai testé cela fonctionne, juste rajouter un onglet Communes et des petits détails à compléter

le lien << https://forum.excel-pratique.com/excel/coloriser-une-forme-selon-la-liste-deroulante-67856 >>

crdlt,

André

Bonjour @Andre13 et merci pour la réponse !

J'ai utilisé le code du post indiqué en modifiant avec mes propres données. Cependant, au moment du lancement du code, il y a une erreur 424 Objet requis et on m'indique que la ligne concernée est : "For i = 1 To .Rows.Count"

Je vous mets le code :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i%, sh$
    If Target.Address = "$L$11" Then
        sh = Target.Value
        With [Data]
            For i = 1 To .Rows.Count
                If sh = .Cells(i, 1).Value Then
                    sh = .Cells(i, 2).Value
                    Exit For
                End If
            Next i
        End With
        For i = 1 To Shapes.Count
            Shapes(i).Fill.ForeColor.RGB = RGB(0, 0, 0)
        Next i
        If sh <> "" Then Shapes(sh).Fill.ForeColor.RGB = RGB(255, 0, 0)
    End If
End Sub

Auriez-vous une idée d'où cela pourrait provenir ?

Encore merci d'avance et bonne journée !

Bonjour toutes et tous

les 2-3 petites erreurs trouvées sur le classeur :

  • erreur01: la zone de nom étant dans la feuille data , il fallait créer une zone de nom pour DEPARTEMENT et, non le nom de la feuille Data (pour le code [DATA) il fallait créer une plage)
  • erreur02: les noms des Shapes il faut renommer impérativement ses shapes et de plus elles doivent correspondre au tableau de la feuille data (même nom du shape)
  • erreur 03: il faut obligatoirement une colonne dans data pour les noms des Shapes de la feuille
  • note01: les couleurs de toutes les shapes fond blanc au début pour se repérer (facultatif)

j'avais effectué un essai auparavant sur un nouveau classeur ci-joint, toujours en reprenant le même modèle, en reprenant au mieux suivant le modèle de M Ferrand, il n'est pas fini

crdlt,

André

Bonjour @Andre13 et merci pour ton retour !

J'ai suivi tes conseils, fait attention aux différents détails, j'ai bien renommé toutes les shapes.. Mais ça me met encore un message d'erreur : "L'élément portant ce nom est introuvable".

Ton fichier excel ne marche pas non plus quand je l'ouvre, peut-être y-a-t-il un problème avec ma version d'Excel (16.43) ?

Si tu as un peu de temps, je remets mon fichier corrigé.. Désolé, je suis vraiment débutante sur VBA donc je suis encore loin de maîtriser le langage !

6carte-vba.xlsm (165.22 Ko)

Re

merci de ton retour

il manquait juste de nommé 'Communes dans la feuille ' Communes' (voir zone de Nom sur la feuille Commune)

ci-joint rectifié

12carte-vba.xlsm (169.30 Ko)

crdlt,

André

Rechercher des sujets similaires à "lancer macro fonction texte"