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 :

Accéder à un control d'un sous formulaire dont le nom est une variable


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 41
    Points : 30
    Points
    30
    Par défaut Accéder à un control d'un sous formulaire dont le nom est une variable
    Bonjour tout le monde,

    Je viens vers vous car je bloque sur une pauvre ligne de code :

    Je dispose de 3 variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim str_form_source As String 'nom du formulaire source
    Dim str_lst_source As String    'nom de la listbox
    Dim str_sousForm_source As String 'nom du sous formulaire source
    L'architecture est la suivante le formulaire (dont le nom est dans str_form_source) contient un sous-formulaire (dont le nom est dans str_sousForme_source) qui lui même contient une listbox (dont le nom est dans str_lst_source)

    Dans une fonction, je souhaite modifier la propriété rowsource de ma listbox "str_lst_source".

    Ce que j'arrive à faire :

    En mettant directement le nom de mon sous-formulaire "en dur", ce que je souhaite faire fonctionne (le sous formulaire se nomme SF_RULE_DETAIL) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Form_SF_RULE_DETAIL.Controls(str_lst_source).RowSource = "ma source"
    Form_SF_RULE_DETAIL.Controls(str_lst_source).Requery

    Par contre, je ne parviens pas à faire la même chose avec mes variable str_form_source ou/et str_sousForm_source. j'ai tenté avec la collection, Forms, mais je ne doit pas trouver la bonne syntaxe.

    Quelqu'un peut-il m'aider ??

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 641
    Points : 34 352
    Points
    34 352
    Par défaut
    Salut,
    si je comprends bien ta question, essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Forms(str_form_source ).Controls(str_lst_source).RowSource = "masource"
    Forms(str_form_source ).Controls(str_lst_source).Requery

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    Non, cela ne fonctionne pas, car la listbox se trouve dans le sous formulaire (str_sousForm_source)

    Donc, au début, j'avais fait quelquechose dans le même style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Forms(str_sousForm_source).Controls(str_lst_source).RowSource = "ma source "
       Forms(str_sousForm_source).Controls(str_lst_source).Requery
    mais ca ne lui plait pas :

    Impossible de trouver le formulaire 'SF_RULE_DETAIL' auquel il est fait référence dans une expression de macro ou un code Visual Basic.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    So ?

    Personne n'a déjà été confronté à ce problème ?

  5. #5
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 902
    Points : 4 796
    Points
    4 796
    Par défaut
    Ajoute l'encapsulation du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    forms("leFormulaire")!Forms(str_sousForm_source).Controls(str_lst_source).RowSource = "ma source"
       forms("leFormulaire")!Forms(str_sousForm_source).Controls(str_lst_source).Requery

  6. #6
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,

    un Excellent article : http://loufab.developpez.com/appelformulaire


  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    Je viens d'essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       Forms(str_form_source)!Forms(str_sousForm_source).Controls(str_lst_source).RowSource = "ma source"
       Forms(str_form_source)!Forms(str_sousForm_source).Controls(str_lst_source).Requery
    Mais ca ne marche pas :

    Impossible de trouver le champ 'Forms' auquel il est fait référence dans votre expression.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par Lou Pitchoun Voir le message
    Salut,

    un Excellent article : http://loufab.developpez.com/appelformulaire


    Je l'ai déjà lu. Et effectivement il est très bien. Mais malheureusement il ne traite pas le cas le nom des formulaires et sous formulaires ne sont pas connus (car stockés dans des variables)...

    J'ai fait beaucoup de recherches avant de poster ici (Je ne viens ici qu'en dernier recours )

  9. #9
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Là, c'est de l'apprentissage et de la réflexion !!

    Exemple où fRecherche est le formulaire principal, sfRecherche un sous formulaire et sPK est une variable contenant le nom d'un champ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms.fRecherche.sfRecherche.Form(sPK)
    Je testerais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms(variable).Form(variable).Form(NomChamp)...

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    J'ai besoin de vacances...

    En fait l'ERREUR, c'était d'avoir mis dans la variable str_sousform le nom du formulaire qui était la source du sous-formulaire, et non le controle sous-formulaire lui même...

    Merci d'avoir perdu votre temps avec moi Je vais me pendre

  11. #11
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 128
    Points : 495
    Points
    495
    Par défaut
    Citation Envoyé par micniv Voir le message
    Ajoute l'encapsulation du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    forms("leFormulaire")!Forms(str_sousForm_source).Controls(str_lst_source).RowSource = "ma source"
       forms("leFormulaire")!Forms(str_sousForm_source).Controls(str_lst_source).Requery
    Bonsoir micniv,
    l'encapsulation du formulaire
    Pourriez vous m'expliquer comment programme t on une zone de liste attachée à un sous formulaire encapsulé dans
    un formulaire principal ?
    Cordialement.

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

Discussions similaires

  1. Module dont le nom est une variable
    Par Mr Hyde dans le forum Général Python
    Réponses: 11
    Dernier message: 26/02/2023, 20h39
  2. Appel de procédure dont le nom est une variable
    Par TOF1414 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 29/08/2012, 16h36
  3. [AC-2003] Propriétés d'un champ dont le nom est une variable
    Par AndréPe dans le forum VBA Access
    Réponses: 3
    Dernier message: 05/02/2012, 09h36
  4. [PowerShell] Acces variable dont le nom est une variable
    Par marion782 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 12/09/2011, 11h16
  5. Instancier une classe dont le nom est une variable
    Par bendev dans le forum Langage
    Réponses: 1
    Dernier message: 06/11/2006, 06h01

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