Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Origine appel fonction en VBA

mécano41

XLDnaute Accro
Bonjour,

Comment puis-je savoir si une fonction en VBA a été appelée depuis une feuille de calculs ou depuis un autre code VBA?
(au début de ma fonction, j'ai : Set PlgSel=Application.Caller et un traitement utile pour un appel depuis une feuille mais qui met évidemment une erreur si j'appelle la fonction depuis une Sub...)

... rien trouvé par recherche ni dans l'aide ...

Cordialement
 

Phil69970

XLDnaute Barbatruc
Bonjour Mecano41, le forum

Dans ta fonction tu peux mettre ceci :

VB:
Test =1
Msgbox "Coucou j'ai été appelé " & Test & " fois"
Test = Test + 1

Et/ou mettre un point d'arret dans ta fonction et F8 pas à pas pour voir qui la appelé.

@Phil69970
 

mécano41

XLDnaute Accro
Bonjour Phil,

Merci pour ta réponse mais ce que je cherche une instruction qui, mise au début de ma fonction, m'indiquera par ex. 1, si l'appel vient d'une feuille et 2 si l'appel vient d'une sub.

Cordialement
 

eriiic

XLDnaute Barbatruc
Bonjour à tous,

Comment puis-je savoir si une fonction en VBA a été appelée depuis une feuille de calculs ou depuis un autre code VBA?
tu peux utiliser THIScell :
VB:
Function test() As String
    Dim ori As Range
    On Error Resume Next
    Set ori = Application.ThisCell
    On Error GoTo 0
    If ori Is Nothing Then
        ' appel depuis vba
    Else
        ' appel depuis excel
        Debug.Print ori.Address 'ref d'appel
        Debug.Print ori.Parent.Name 'nom feuille d'appel
        Debug.Print ori.Parent.Parent.Name 'nom classeur d'appel
    End If
    Set ori = Nothing
End Function
eric
 

Discussions similaires

Réponses
19
Affichages
634
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…