VBA: Function retournant booléen ou objet

  • Initiateur de la discussion Initiateur de la discussion Guy_M
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Guy_M

XLDnaute Occasionnel
Bonjour,

Je rencontre à l'exécution une erreur "type incompatible" sur la ligne "Set Resultat = Appelee" avec le code exemple suivant (j'ai simplifié le code à l'extrème) :
VB:
Sub Appelante()
Dim Resultat As Variant
Set Resultat = Appelee()
End Sub

Function Appelee() As Variant
Set Appelee = Nothing
Appelee = False
End Function

C'est "normal" puisse que j'essaye de faire un SET avec un variant/booléen.

Dans mon code "Appelee" retourne un variant/booléen quand elle s'est mise en erreur (pour remonter l'erreur au niveau de l'appelant) sinon elle retourne un objet.

Auriez-vous un truc pour réussir à gérer ce genre de situation ?

Par avance, je vous remercie de vos réponses.

A bientôt
Guy
 
Re : VBA: Function retournant booléen ou objet

Bonjour.

À part en mettant On Error Resume Next devant je ne vois pas trop.
Le mieux serait de laisser Nothing l'objet retourné, ça ne plante pas au Set dans l'appelant et ça se teste facilement ensuite.

If Resultat Is Nothing Then MsgBox "Rien"
 
Dernière édition:
Re : VBA: Function retournant booléen ou objet

Merci Draneb,

C'est ce que je me suis résolu à faire, en remontant une erreur puisse que la valeur booléenne correspondait à l'existence d'une erreur dans la procédure appelée

VB:
Sub Appelante()
Dim Resultat As Variant
Set Resultat = Appelee()
if err.number > 512 then
'Traitement du mauvais déroulement de Appelee
end if
End Sub

Function Appelee() As Variant
Set Appelee = Nothing
err.number=512+1
End Function

A bientôt
Guy
 
Re : VBA: Function retournant booléen ou objet

Bonjour Dranreb

J'ai ajouté le test sur err.number car Appelee peut retourner Nothing sans que cela soit la conséquence d'une erreur.

Peut être, devrait-je faire un err.raise dans Appelee ? J'ai encore des progrès à faire sur la gestion des erreurs.

A bientôt
Guy
 
Re : VBA: Function retournant booléen ou objet

Dans ce cas j'écrirais peut être une Function qui retourne un indicateur d'erreur, avec l'objet passé en paramètre ByRef.
VB:
Sub Appelante()
Dim Resultat As Object ' Préférer un type d'objet explicite si possible, pareil pour le paramètre de la Function.
If AppeléeErr(Resultat) Then
   MsgBox "Erreur"
ElseIf Resultat Is Nothing Then
   MsgBox "Pas d'objet assigné"
Else
   ' Utiliser l'objet Resultat
   End If
End Sub

Function AppeléeErr(ByRef Obj As Object) As Boolean
Set Obj = Nothing
AppeléeErr = True
End Function
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

W
Réponses
0
Affichages
858
wasaru
W
Retour