Microsoft 365 Résolu - Carte interactive personnalisée

Angus HEYERDAHL

XLDnaute Junior
Bonjour à tous,

Je suis en train de suivre un tuto afin de créer une carte personnalisée (désolé pour le thème, mais c'est pour un cimetière)

Seulement il me met en débogage à la partie NomCadre = Application.caller
Personnellement, je n'ai jamais travaillé avec cette propriété.

Quelqu'un aurait-il une idée svp

En vous remerciant par avance


Code:
Sub CimetiereInteractive()
' Procédure permettant de renbdre interactive un cimetière

' Déclaration des variables
Dim NomCadre As String
Dim Shape


' Propriété caller : permettre d'afficher la manière dont VB est appelé
NomCadre = Application.Caller

' Mise en couleur par défaut de la carte
For Each Shape In ActiveSheet.Shapes ' pour chacune des formes de la feuille active
    Shape.Fill.ForeColor.RGB = RGB(0, 0, 200) ' On applique une couleur bleue à la forme
Next Shape

' On affecte une couleur lorsque la forme est sélectionnée
ActiveSheet.Shapes(NomCadre).Fill.ForeColor.RGB = RGB(0, 200, 0)


End Sub
 

Pièces jointes

  • Cimetière test.xlsm
    16.3 KB · Affichages: 12

Cousinhub

XLDnaute Barbatruc
Bonjour,
Application.Caller te donne le nom de l'objet ayant déclenché la macro.
Dans ton fichier, si tu sélectionnes tous les objets nommés "Tombe xx", et que tu leur affectes une macro (clic droit sur la forme, "Affecter une macro", sélectionne la macro nommée "CimetiereInteractive"), en cliquant sur une forme, tu verras le fonctionnement...
Bon courage
 

Pièces jointes

  • Copie de Cimetière test.xlsm
    16.8 KB · Affichages: 11

Angus HEYERDAHL

XLDnaute Junior
Ok, merci pour ta réponse rapide,

Je viens de le faire sur mon fichier original, effectivement ça fonctionne très bien.

Un autre point, du coup, y aurait-il un moyen de faire ce processus directement sans devoir sélectionner la forme et de lui affecter la macro car là c'est un exemple avec 5 formes, mais par la suite il y en aurait des centaines.
 

Cousinhub

XLDnaute Barbatruc
Re-,
Dès que tu as terminé ton plan, et supposant que tous les noms des objets concernés commencent par "Tombe", tu peux affecter le code kivabien à chaque shape par ce code :
VB:
Sub affect_macro()
Dim Shp As Shape
For Each Shp In ActiveSheet.Shapes
    If Shp.Name Like "Tombe*" Then Shp.OnAction = "CimetiereInteractive"
Next Shp
End Sub
Bon journée
 

Statistiques des forums

Discussions
312 215
Messages
2 086 320
Membres
103 178
dernier inscrit
BERSEB50