IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Fonction non définie depuis sous formulaire


Sujet :

VBA Access

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 106
    Points : 271
    Points
    271
    Par défaut Fonction non définie depuis sous formulaire
    Bonjour à tous,

    Je tente d'appeler cette fonction depuis un sous-formulaire en mode continu sur action current () mais Access 2010 me dit "fonction non définie" et "la méthode value de l'objet textbox a échoué"...

    Si je mets un msgbox avec le champ comme argument, le msgbox retourne la bonne valeur de champ , donc je n'y comprends rien !
    Le champ du sous formulaire existe pourtant bien.

    Cette fonction est aussi appelée au démarrage du formulaire principal et elle s'éxécute parfaitement, c'est donc bien un problème en rapport avec le sous-formulaire qui me sert de liste ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Function ComptageDocumentsContact()
     
    With Forms![Contacts].CtlTabContact
     
    .Pages(0).Caption = "Factures et avoirs = " & DCount("numclient", "rqfacturesetavoirs", "[numclient]='" & Me.Numclient & "'")
    .Pages(1).Caption = "Devis = " & DCount("numcontact", "rqdevis", "[numcontact]='" & Me.NumContact & "'")
    .Pages(2).Caption = "Attestations fiscales = " & DCount("numcontact", "rqattestationsfiscales", "[numcontact]='" & Me.NumContact & "'")
    .Pages(3).Caption = "Rendez-vous = " & DCount("numcontact", "rendez-vous", "[numcontact]='" & Me.NumContact & "'")
     
     
    End With
     
    End Function
    Merci d'avance pour vos suggestions avisées

  2. #2
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Salut clickandgo,

    Je ne situe pas l'erreur mais d'après tes explications je pencherais sur le fait que le traitement se fait au moment où les objets ne sont pas encore instanciés.
    Solution éventuellement possible: changer l'ordre des controles (ordre de tabulation) du formulaire principale en mettant le sous form en dernier.
    Sinon vu que Current() est appelé plusieurs fois lors d'une ouverture : désactiver la gestion d'erreur: "On error Resume Next" dans ta fonction.


  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour

    D'abord ce n'est pas une fonction, mais une routine (Sub), alors qu'une fonction doit retourner une valeur.

    Ici tu affectes des valeurs à des pages d'un contrôle Onglet.

    Donc transforme les Function en Sub.

    Ensuite comment, quand et où appelles-tu celle-ci.

    Philippe

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 106
    Points : 271
    Points
    271
    Par défaut
    Alors, j'ai transformé la function en sub, rien ne change...

    Cette sub est appelée à l'ouverture d'un formulaire principal, tout va bien et les Dcount sont corrects.

    Dans ce formulaire principal est incrusté un sous-formulaire simulant une listbox qui présente la liste des contacts.

    Je désire actualiser les Dcount à chaque clic sur une ligne de la liste représentant un contact, ce qui devrait donc rafraichir les onglets du ControlTab.

    Je mets donc un call à cette sub dans l'événement current du sous-formulaire et c'est là que ça bloque malgré que le champ servant de filtre existe bien ...

    Voir plus haut pour les détails de l'erreur.

    Merci

  5. #5
    Invité
    Invité(e)
    Par défaut
    Re

    Pas facile de tout comprendre.

    Tu parles de sous-formulaires, de liste, de contrôle d'onglet, etc... mais je pense que ton problème peut venir des positions des différents formulaires et sous formulaires.

    Ton code signifie que tout est dans le même formulaire.

    Un tuto à lire qui t'indiquera le code en fonction de la position des contrôles dans les formulaires et sous formulaires.

    http://loufab.developpez.com/tutorie...pelformulaire/

    Philippe

  6. #6
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 106
    Points : 271
    Points
    271
    Par défaut
    Je te remercie pour cette réponse, je garde le PDF de coté ...

    Le design de mon formulaire principal est simple :

    - Un Sous-formulaire continu incrusté en guise de listbox améliorée, le dit SF vient d'une requête contenant les données d'une table "contacts"

    - Un CtlTab à plusieurs onglets contenant plusieurs SF.

    A l'appui sur le sélecteur d'enregistrement d'une des lignes du SF , appel à la sub qui injecte dans les titres d'onglets du CtlTab les différents titres d'onglets + Dcount correspondant pour donner par ex: "Factures et avoirs = 5".

    Apparement cette sub n'arrive pas à lire le champ [numclient] dans le SF servant de listbox, le champ étant pourtant bien présent et non null...

    Serait-ce qu'en cliquant sur le sélecteur d'enregistrement Access n'a pas le temps de prendre cette valeur dans le champ du SF avant d'éxécuter les Dcount contenus dans la Sub ?

    Je réitère que la Sub (aussi appelée à l'ouverture du formulaire principal) attribue bien le résultat des Dcount dans chaque onglet en se plaçant sur la première ligne du SF (Premier contact dans la liste) ... Deplus, un test avec Msgbox sur le champ [numClient] renvoie bien la valeur du champ correcte selon la ligne sélectionnée .

    C'est donc bien le SF et l'action current() qui sont en cause, mais , pourquoi ?

Discussions similaires

  1. Appel d'une fonction depuis sous formulaire
    Par El_Manu dans le forum VBA Access
    Réponses: 7
    Dernier message: 02/11/2007, 17h21
  2. [Wamp] Appel de fonction non défini
    Par morphine63 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 29/10/2006, 10h02
  3. Fonction non définie (alors qu'elle l'est) - Cocher toutes les cases
    Par navis84 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 22/09/2006, 12h02
  4. Réponses: 2
    Dernier message: 01/06/2006, 14h54
  5. fonction non définie
    Par ston dans le forum Access
    Réponses: 11
    Dernier message: 12/12/2005, 16h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo