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

IHM Discussion :

zone de liste et appel de module [AC-2007]


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 50
    Points : 49
    Points
    49
    Par défaut zone de liste et appel de module
    Bonjour à tous !

    J'ai une zone de liste alimentée par un query où l'on sélectionne le nom du client en tapant quelques lettres...

    J'aimerais associer cette zone de liste à un code VBA en passant le contenu de cette zone de liste (ou son nom ?) en paramètre à un module qui édite la fiche de ce client...

    Est-ce que c'est possible , et quelle peut être la syntaxe :

    call [module].Procédure (zone de liste) ?

    Merci d'avance pour vos lumières !

    Fbourdon

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    Peut de précision sur ta procédure.

    Si elle est extérieure au formulaire contenant la liste tu peux passer ton idclient par paramètre.

    La procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Sub OuvreClient(vIdClient as long)
    docmd.openform "Client",,,"IdClient=" & vIdClient
    end sub
    Et l'appel depuis le formulaire (événement Après MAJ de la liste):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OuvreClient me.ZlClient
    Si la procédure est dans le formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docmd.openform "Client",,,"IdClient=" & me.ZlClient
    Tout simplement !

    zlclient est le nom de la liste déroulante contenant l'idclient.
    Client est le nom du formulaire.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 50
    Points : 49
    Points
    49
    Par défaut
    Bonjour Loufab !

    Je te joins le code de la procédure (interne au formulaire) appelée après que la zone de la liste (Nomclient) soit renseignée ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Nomclient_AfterUdpate()
     
    Call [Synthèse client].calcul (Nomclient)  
     
    End Sub
    Lors de la compilation VBA me dit : Syntaxe incorrecte ou Paramètres incorrects...J'ai essayé avec ByVal , même problème

    Qu'est-ce qui se passe...C'est le fait de passer le nom du client en paramètre avec cette syntaxe qui est peut-être le noeud du problème

    Merci pour ton aide ..

    Fbourdon

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 50
    Points : 49
    Points
    49
    Par défaut Compléments...
    Avec cette syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub Nomclient_AfterUpdate()
    Dim Nomclient As String
     
    Debug.Print Nomclient    'fonctionne OK  !
     
    Call [[Synthèse client].Calcul(Nomclient)]
     
    End Sub
    le début de la procédure Calcul :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim db As DAO.Database, rst1 As DAO.Recordset
    Dim Nomclient As String
    Public strSQL As String
     
    Sub Calculsituationglobale(Nomclient)
     
    Set db = CurrentDb
    Set rst1 = db.OpenRecordset("Factures")
    strSQL = "SELECT * FROM Factures WHERE [Factures].[Nom du client]= " & Nomclient & ";"
    A la compilation j'ai le message :

    Erreur 2465 Access ne trouve pas le champ 'I' auquel il est fait référence dans votre expression....

    Le paramètre est transmis , c'est déjà ça ....

    Merci d'avance ,

    Fbourdon

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Le call est facultatif, perso je ne l'utilise jamais. C'est un détail.

    Concernant ton problème.

    Le paramètre est bien passé puisqu'il est global !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim nomclient as string
    tu peux l'appeler dans n'importe quelle procédure il existera. Peut-être sans contenu mais il existera !

    Je t'ai fourni la manière de créer une fonction ou procédure et d'y faire appel. Pourquoi utilises-tu cette syntaxe. Qui au demeurant ne veut rien dire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call [[Synthèse client].Calcul(Nomclient)]
    Les crochets à profusion, les paranthèses !?! tout cela n'a pas trop de sens.


    Une procédure ou fonction avec paramètre est au minimum construite comme ceci :
    Pour une procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sub MaProcedure(monparamètre as untypevalide)
    ...
    end sub
    Pour une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function MaFonction(monparametre as Untypevalide)
    ...
    end function
    et l'appel se fait comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Maprocedure monparametre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mafunction monparametre
    ou encore pour une fonction qui renvoi une valeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    variable=Mafunction(monparametre)
    Par contre si tu utilise le call avec des paranthèses tu risques d'avoir quelques problèmes sur le paramètre transmis (une modification de celui-ci par exemple).

    Donc il ne te reste plus qu'à appliquer ces directives...
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 29/01/2024, 15h32
  2. [Toutes versions] [Astuce VBA] Ordre, zone liste et appels
    Par loufab dans le forum Contribuez
    Réponses: 2
    Dernier message: 04/08/2010, 17h50
  3. Zone de liste modifiable
    Par SAUVEUR Serge dans le forum IHM
    Réponses: 3
    Dernier message: 19/09/2004, 17h58
  4. [VB6] largeur d'une zone de liste d'une combobox
    Par Nick13 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 28/08/2004, 12h30
  5. [VB6] Zone de liste modifiable basée sur un champ
    Par pepper dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 27/11/2002, 13h41

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