Comment identifier une forme ?

Bonjour aux braves aidants !

Je suis avec Excel 2000 et j'essaie d'identifier une forme (shape) ovale parmi cents lors de l'exécution d'une macro déclenché par TOUTES les formes !

J'ai donc 99 formes ovales, nommées "Oval x" (x de 1 à 99) et chacune d'elles déclenche la même macro à l'intérieur de laquelle j'aimerais savoir quelle forme l'a appelée afin d'effectuer une mise en forme sur ladite "forme" (pléonasme ici ) !

Afin d'effectuer un ActiveSheet.Shapes("Oval x").Select, je dois donc savoir quel est le nom de la forme appelante et connaître son index "x" ou son nom ! Est-ce faisable ?

Tout ceci afin d'éviter à devoir écrire 99 macro (une par forme) renvoyant à la macro de mise en forme !

Merci de vos lumières,

iBenny

Bonsoir,

Sub MiseEnFormeOval()
    Dim shp$
    shp = Application.Caller
    With ActiveSheet.Shapes(shp)
        'ici instructions de mise en forme (pas besoin de sélectionner !)
    End With
End Sub

Cordialement.

Bonsoir Benny, bonsoir le forum,

Application.Caller va te renvoyer le nom de ta Shape...


Bonsoir le fil, bonsoir le forum,

Ha non ! Ça n'est plus possible ! Je demande instamment aux instances modératrices de ce forum des contrôles inopinés anti dopage !...

WOW !!! Quelle efficacité ! Ça marche...

Merci infiniment les experts...

iBenny

Bonjour MFerrand,

MFerrand a écrit :
Sub MiseEnFormeOval()
    Dim shp$
    shp = Application.Caller
    With ActiveSheet.Shapes(shp)
        'ici instructions de mise en forme (pas besoin de sélectionner !)
    End With
End Sub

'ici instructions de mise en forme (pas besoin de sélectionner !)?

Pas sûr de ça : pour mettre un texte dans la forme, VBA refuse l'assignation directe sans avoir sélectionné la forme au préalable ! :

ActiveSheet.Shapes(Application.Caller).Characters.Text = Format(C)

impossible

ActiveSheet.Shapes(Application.Caller).select
Selection.Characters.Text = Format(C)

ça passe !

iBenny

Bonsoir,

Sub MiseEnFormeOval()
    Dim shp$
    shp = Application.Caller
    With ActiveSheet.Shapes(shp)
         .Textframe.Characters.Text = Format(C)
    End With
End Sub

Cordialement.

Merci MFerrand ! Ça marche...

iBenny

Rechercher des sujets similaires à "comment identifier forme"