Application.Caller ne fonctionne plus

Troudz

XLDnaute Occasionnel
Bonjour à tous,

J'ai un problème certainement tout bête mais pour lequel je n'arrive pas à trouver de solution.
J'ai relié un bouton (contrôle ActiveX, pas un bouton de formulaire) à la macro suivante :
Code:
Private Sub Bouton1_Click()
    MsgBox application.Caller
End Sub
Malheureusement, application.Caller me renvoi désormais l'erreur 2023.
A noter que, depuis quelques jours, le mot "application" ne semble plus reconnu et l'éditeur Vba ne lui met plus automatiquement de majuscule. Est - ce lié ?

Je vous remercie par avance pour votre aide,

Troudz
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : Application.Caller ne fonctionne plus

Bonjour,
regarde dans l'aide d'Excel la façon dont Application.Caller doit être utilisée :
Cette propriété renvoie des informations relatives à la manière dont Visual Basic a été appelé (voir tableau ci-dessous).

Demandeur Valeur renvoyée
Fonction personnalisée tapée dans une cellule unique Objet Range spécifiant cette cellule
Fonction personnalisée appartenant à une formule matricielle dans une plage de cellules Objet Range spécifiant cette plage de cellules
Macro Auto_Open, Auto_Close, Auto_Activate, ou Auto_Deactivate Nom du document sous forme de texte
Macro activée par la propriété OnDoubleClick ou OnEntry Nom de l'identificateur de l'objet graphique ou, le cas échéant, de la référence de cellule auquel la macro s'applique
Boîte de dialogue Macro (menu Outils), ou tout autre demandeur non décrit ci-dessus Erreur #REF!


Exemple


Cet exemple montre comment afficher des informations relatives à la manière dont Visual Basic a été appelé.

Visual Basic pour Applications
Select Case TypeName(Application.Caller)
Case "Range"
v = Application.Caller.Address
Case "String"
v = Application.Caller
Case "Error"
v = "Error"
Case Else
v = "unknown"
End Select
MsgBox "caller = " & v
Malheureusement, application.Caller me renvoi désormais l'erreur 2023.
Peut-être pourrais-tu nous dire ce que tu voudrais qu'elle te renvoie parce que sans fichier exemple exposant clairement ta demande, nous n'avons pas les informations permettant de te répondre...
A+
 

job75

XLDnaute Barbatruc
Re : Application.Caller ne fonctionne plus

Bonjour Troudz,

Quand la macro est appelée par un objet, Application.Caller renvoie le nom de l'objet.

Mais uniquement quand cet objet a été créé par Formulaires.

Avec les objets ActiveX il faut une autre méthode, par exemple un Module de classe.

Edit : bonjour David :)

A+
 

Modeste geedee

XLDnaute Barbatruc
Re : Application.Caller ne fonctionne plus

Bonsour®

les 2 choses sont indépendantes !!!

application.caller n'est pas une propriété d'un activeX

l'activeX posséde ses propres événements dont Click !!!


:confused: sauf à fermer les yeux (mal-voyance, handicap etc...) en général on sait sur quel bouton on appuie ....
VB:
Private Sub Bouton_1_Click()
Application.Speech.Speak "L'appui a été effectué sur : " & Bouton_1.Name & "  le texte du bouton est : " & Bouton_1.Caption
MsgBox "appui effectué sur " & Bouton_1.Name & Chr(10), vbInformation, Bouton_1.Caption
End Sub
:rolleyes:
 

job75

XLDnaute Barbatruc
Re : Application.Caller ne fonctionne plus

Re,

Voyez ce que donne le fichier joint avec un module de classe.

Les macros sont dans ThisWorkbook, Module1 et Classe1 (Alt+F11).

A+
 

Pièces jointes

  • Boutons ActiveX(1).xls
    38.5 KB · Affichages: 170

Troudz

XLDnaute Occasionnel
Re : Application.Caller ne fonctionne plus

Bonjour David, Job et Modeste et merci pour vos réponses

@David : Merci pour ce copier coller de l'aide. J'ai un soucis sur mon poste depuis de longs mois, l'ouverture de l'aide fait planter Excel. Malgré mes demandes répétées, l'informatique n'a toujours pas résolu le problème.
Je voudrais simplement récupérer le nom du bouton ayant déclenché la macro afin d'en modifier le comportement et de factoriser au maximum mon code.

@Job : J'étais persuadé de l'avoir déjà utilisé avec des contrôles ActiveX d'où mon entêtement. Merci pour l'info et pour ton fichier, je vais essayer de voir ce que je peux faire via un module de classe.

@Modeste : Ce n'est pas une question d'handicap (laissons les handicapés tranquilles, ils n'ont rien demandé), c'est une question de simplifier et factoriser au maximum mon code.
 

Modeste geedee

XLDnaute Barbatruc
Re : Application.Caller ne fonctionne plus

Bonsour®
Ce n'est pas une question d'handicap (laissons les handicapés tranquilles, ils n'ont rien demandé), c'est une question de simplifier et factoriser au maximum mon code.

:rolleyes:
si tu travailles dans une entreprise de moyenne importance (soumise à quotas concernés), la prise en compte des handicaps doit être intégrée dés la conception des applications.
Windows permet justement une approche possible permettant un accès à un plus large éventail de personnes...

:cool:
une application est un juste milieu entre l'adéquation aux besoins et la mise en œuvre raisonnée du cahier des charges
(pas de fioritures, mais une ouverture vers évolutivité et maintenance, le confort du programmeur n'est qu'un facteur minime)
 

david84

XLDnaute Barbatruc
Re : Application.Caller ne fonctionne plus

Bonjour Gérard, Modeste geedee,
Je voudrais simplement récupérer le nom du bouton ayant déclenché la macro afin d'en modifier le comportement et de factoriser au maximum mon code.
Avant d'envisager d'autres solutions est-ce que simplement
Code:
Private Sub CommandButton1_Click()
MsgBox CommandButton1.Name
End Sub
ne suffit pas ?
Si tu ne modifies pas le nom du bouton après avoir créé le code tu peux récupérer simplement ce nom et le stocker dans une variable.
A+
 

Statistiques des forums

Discussions
312 276
Messages
2 086 711
Membres
103 377
dernier inscrit
fredy45