Tester l’existence d’un objet sur un formulaire

Je voudrais savoir si une zone de texte (ou n’importe quel autre objet, en fait) existe bien sur un formulaire. Je connais le nom du formulaire, ainsi que le nom de l’objet dont je veux vérifier l’existence. Comment faire ?

Le code

Recopiez la fonction ci-dessous dans un module standard de votre base de données :

La fonction reçoit 2 paramètres (le nom du formulaire et le nom de l’objet dont on veut vérifier l’existence). Elle renvoie True si l’objet existe, et False sinon.

Pour tester…

  1. Ouvrez un formulaire (en mode Formulaire, ou éventuellement en mode Création ; l’important est que le formulaire soit ouvert :-)).
  2. Ouvrez la fenêtre Exécution (CTRL + G), par exemple.
  3. Tapez-y :
    ? ControlExists("Nom du formulaire", "Nom de l'objet")
  4. Vous obtenez True en cas de succès, False sinon.

Vous pouvez bien sûr réutiliser la fonction dans votre propre code VB. Un exemple :

Vous aimerez aussi...

6 réponses

  1. Hervé Inisan dit :

    jeromehej > A priori, je dirais que non. Mais en général, je me dis que les scénarios où on a besoin de connaître les champs d’un formulaire sont ceux où le formulaire est ouvert (que ce soit en mode Formulaire ou en mode Design). Dans les autres cas, on peut travailler sur les niveaux inférieurs (tables). A moins que tu penses à un cas particulier ?

  2. jeromehej dit :

    Bonjour,

    Attention : sauf erreur de ma part, ce code ne permet pas de vérifier l’existence d’un contrôle d’un formulaire fermé. En effet, il renvoie FALSE si le formulaire est fermé, même si le contrôle existe dans ce formulaire.

    Y a t’il un moyen de vérifier l’existence d’un contrôle d’un formulaire fermé SVP (sans utiliser la méthode de l’ouvrir temporairement et le refermer juste après la vérification) ?

  3. Hervé Inisan dit :

    Aime > Il faudrait écrire :

    RS.FindFirst "[Nom] = '" & Me.RechercheNom & "' AND [Prénom] = '" & Me.RecherchePrenom & "'"

    où RechercheNom et RecherchePrenom sont 2 zones de saisie (zones de texte).

    … mais je ne sais pas si ça va être si pratique que ça. 😉

  4. AIME dit :

    Slt , pour effectuer une recherche dans un formulaire (recherche basée sur un seul champ) , j’ai tapé le code suivant :

    Private Sub RECHERCHE_Click()

    DoCmd.ShowAllRecords
    Dim RS As DAO.Recordset
    If IsNull(Me.Matricule) Then
    MsgBox « Veuillez entrez un matricule. »,vbInformation, « RECHERCHE DOSSIER CNS »
    Else
    Set RS = Me.RecordsetClone
    RS.FindFirst « Matricule=  » & Chr$(34) & Me.Matricule & Chr$(34)
    If RS.NoMatch Then
    MsgBox « Matricule non retrouvé dans la base. », vbInformation, « RECHERCHE MATRICULE »
    Else
    Me.Bookmark = RS.Bookmark
    End If
    End If

    End Sub

    et ça marche .

    Mais le problème c’est que j’amerais effectuer une recherche en me basant sur deux champs (Nom et Prénoms ). comment faire ? comment manipuler cette partie :
    RS.FindFirst « Matricule=  » & Chr$(34) & Me.Matricule & Chr$(34)

    MERCI

  5. Hervé Inisan dit :

    Christ > Si le champ est de type Texte, il faut l’entourer d’apostrophes. Du style :

    Voir cette page pour plus d’infos.

  6. CHRIST dit :

    Pour ouvrir le formulaire sur l’enregistrement contenant un champ donné , j’ai tapez ce code :
    Docmd.OpenForm « Nom_du_Formulaire « , acNormal ,, » [Matricule]= » &.Me.valeur

    [Matricule]: champ
    valeur : champ matricule recherché

    Le problème est que si le champ matricule a pour propriété Numérique ça passe . Mais quant il s’ agit de Texte ça ne passe pas .
    j’aimerais aussi ouvrir le formulaire sur un enregistrement en me basant sur deux champs (par exemple les champs NOM et PRENOMS ) . Comment faire ?

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *