Comment savoir si une variable objet a été associée ?

[Résolu]
Signaler
Messages postés
550
Date d'inscription
jeudi 12 octobre 2006
Statut
Membre
Dernière intervention
6 juin 2015
-
Messages postés
550
Date d'inscription
jeudi 12 octobre 2006
Statut
Membre
Dernière intervention
6 juin 2015
-
Coucou,

ça fait assez longtemps que je cherche une solution pour ce problème.
Que j'associe l'objet ou non, les IsNull, IsObject, IsMissing... ne me renseigne pas correctement
sur l'état de l'objet. C'est égale a Empty ou Nothing mais impossible de faire une comparaison !
Genre: Si MonObjetForm est égale à Nothing alors... Sinon...
Voici un bout de code

Dim oForm as Form

  'Je l'associe pas: Set oForm = frmMain
 'Je souhaite récupérer le nothing

        If IsEmpty(oForm) = False Then
            MsgBox "Un parametre obligatoire est absent !", vbCritical + vbOKOnly, "Erreur"
            Exit Sub
        Else
            Msgbox "Objet ok: " & oForm.Hwnd
        End If
A voir également:

5 réponses

Messages postés
219
Date d'inscription
lundi 21 novembre 2005
Statut
Membre
Dernière intervention
20 décembre 2010

Salut
Peut-être cela:

If Not tzTest.oForm Is Nothing Then
     ici on continue le code
Else
    ici on sort
End If

CNTJC
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
79
Salut
En effet, ce n'est pas toujours facile.
En fait, il te suffit de regarder dans la collection parent "Forms" :
   Dim bTrouvé As Boolean
   Dim xx As Object
   For Each xx In Forms
      If xx.Name = "frmMain" Then
         bTrouvé = True
         Exit For
      End If
   Next
   If bTrouvé Then MsgBox "Twingo !"

Je n'ai pas trop compris le lien que tu fais entre cette forme et un paramètre ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
550
Date d'inscription
jeudi 12 octobre 2006
Statut
Membre
Dernière intervention
6 juin 2015
4
Je suis pas assez clair... désolé.
Je ne connait pas le nom de la form, j'en ai d'ailleur pas besoin.

Je explique avec un code de la situation:
(je peux pas mettre mon code sa va être confus et trop grand a lire)

'BOUTON
Dim myTest as typTest

    Set myTest = frmConfig
    Call MaFonction(myTest)

-------------------------------------

'MODULE
Public Type typTest
    oForm as Form
End Type

Public Sub MaFonction(ByRef tzTest As typTest)
    If tzTest.oForm = Nothing then
        Msgbox "Erreur Objet !"
        exit sub
    End If

    'On a notre pointeur sur cette feuille inconnue
    'Donc je peux par exemple...
    With tzTest.oForm
        .Background = vbBlack
        .Caption = "Coucou"
        FonctionApi1(.Hwnd)
        FonctionApi2(.Hdc)
    End With
End sub
Messages postés
550
Date d'inscription
jeudi 12 octobre 2006
Statut
Membre
Dernière intervention
6 juin 2015
4
Correction:

Set myTest.oForm = frmConfig
Messages postés
550
Date d'inscription
jeudi 12 octobre 2006
Statut
Membre
Dernière intervention
6 juin 2015
4
Excellent !!!

Merci CNT.