Mettre en surbrillance la carte dans Excel en fonction de la sélection déroulante dans Excel

Table des matières

Voici une astuce intéressante pour les personnes qui utilisent des cartes dans Excel. Dans ce blog, j'expliquerai comment mettre en évidence une carte dans Excel en fonction d'une sélection déroulante.

J'ai pris une carte modifiable des États-Unis. L'idée est de mettre en évidence un état aux États-Unis lorsque son nom est sélectionné dans une liste déroulante.

Quelque chose comme le montre la photo ci-dessous :

Maintenant, avant de vous montrer le code, voici quelques prérequis pour cette astuce.

  1. Obtenez une carte modifiable des États-Unis dans laquelle vous pouvez sélectionner différentes formes que vous souhaitez mettre en évidence
  2. Créez une liste de tous les 50 états dans une colonne, et sur la colonne à sa droite j'ai écrit l'état 1, l'état 2, et ainsi de suite
  3. Nommez chaque forme sur la carte. Par exemple, j'ai ici 50 formes pour 50 états, et j'ai nommé chaque forme comme État 1, État 2, État 3, etc. Pour ce faire, sélectionnez n'importe quelle forme et accédez à la zone Nom, qui est activée à gauche de la barre de formule et entrez son nom dans la colonne Numéro d'état. Par exemple, j'ai sélectionné l'Alabama et l'ai nommé État 1.
  4. Créez une liste déroulante Excel avec les noms de tous les états (2 $B$ dans ce cas)
  5. Utilisez la fonction Vlookup pour extraire le numéro d'état lorsqu'un état est sélectionné dans la liste déroulante. Voici la formule que j'ai utilisée dans la cellule $B$3
    =RECHERCHEV(B2,'Liste d'états'!$B$3:$C$52,2,FAUX)
Code pour mettre en évidence la carte dans Excel
Private Sub Worksheet_Change(ByVal Target As Range) Dim N As Integer Dim ShapeName As String N = ActiveSheet.Shapes.count If Target.Address = "$B$2" Then For i = 1 To N ShapeName = ActiveSheet.Shapes(i). Name If Left(ShapeName, 6) = "State " Then ActiveSheet.Shapes(i).Select With Selection.ShapeRange.Fill .Visible = msoFalse .Transparency = 1 End With End If Next i StateNumber = Range("$B$3" ).Value ActiveSheet.Shapes(StateNumber).Select With Selection.ShapeRange.Fill .Visible = msoTrue .Visible = msoTrue .ForeColor.RGB = RGB(192, 0, 0) .Transparency = 0 .Solid End With ActiveSheet.Range( "$B$2").Sélectionnez End If End Sub

Suivez ces étapes simples tout en collant ce code

  1. Tout d'abord, faites un clic droit sur l'onglet de la feuille contenant la carte et sélectionnez « Afficher le code ». Cela ouvrira l'éditeur VB.
  2. Collez le code.

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave