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 :

Recuperer une variable d'un autre formulaire [AC-2003]


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2011
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 53
    Points : 28
    Points
    28
    Par défaut Recuperer une variable d'un autre formulaire
    Bonjour a tous,
    Voila j'ai un formulaire dans lequel je crée un tableau de structure (appelons ce tableau "monTabStruct"). C'est une variable globale.
    Et j'aimerais savoir si il est possible de récupérer cette variable dans un autre formulaire, et si c'est faisable pourriez-vous me donner le code ?

    Pour plus de précision, monTabStruct est dans un sous formulaire, et j'aimerais le recuperer dans le formulaire englobant.

    Merci d'avance de votre aide

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Bonjour,

    Il y a moyen de récupérer la valeur contenue dans un champ d'un formulaire ouvert, dans un champ d'un autre formulaire.
    Vous parler de variable ce qui me perturbe un peu, car je ne comprend pas bien ce que vous chercher à faire.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2011
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 53
    Points : 28
    Points
    28
    Par défaut
    Alors je vais développer un peu dans ce cas :
    En faite j'ai un formulaire dans lequel je saisie des infos sur une Activite. J'enregistre ensuite ces infos dans une structure de données (appelée "activité"). Je mets ensuite l'instance de ma structure dans un tableau, tableau que j'ai declaré en Public dans mon formulaire.
    Et ce formulaire est comprit dans un autre formulaire, dans lequel je voudrais recuperer toutes les donnees des activités que j'ai entré dans le sous formulaire.
    C'estdonc pour cela que je voulais savoir comment faire pour acceder a une variable Public a partir d'un autre formulaire.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Tu peux essayer Forms("NomTonForm").NomTaVariable ça devrait marcher.

    Sinon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim f as form_NomTonForm
    set f=forms("NomTonForm")
    'exemple d'usage de ta variable 
    debug.print f.NomTaVariable
    set f=nothing
    Note que les pratiques recommandées déconseillent l'usage de variables globales qui sont une source de bugs difficiles à trouver. Quand tu déclares une variable public ou global, tous les objets de ta base peuvent la manipuler.

    Si tu veux faire cela de manière plus sécuritaire tu pourrais déclarer une propriété Get sur ton formulaire qui te permettrai de rendre mettre ta variable en mode 'Lecture-Seule'. Ainsi tout le monde peut la lire mais seul ton formulaire peut la modifier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public property Get TaVariable() as TonType
       TaVariable=NomTaVariableInterne
    end property
    Tu pourrais aussi regarder si tu ne peux pas passer ta variable en paramêtre.

    Enfin une alternative à ta structure est une table temporaire mais c'est une variable globale déguisée :-). Le seul intéret de la table c'est sa persistance. Elle reste disponible même si ton formulaire est fermé.

    Attention : VBA n'est pas un VRAI langage objet comme Java ou VB.Net, c'est un langage procédural avec des objets atrophiés.

    A+

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2011
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 53
    Points : 28
    Points
    28
    Par défaut
    Merci
    Au sujet de ta 2èeme solution, si je mets un get dans mon formulaire, je suppose qu'il ne faudra pas que je declare mon tableau dans un module, puisque seul mon formulaire doit y avoir acces (en lecture du moins).
    Donc ou dois je declarer mon tableau si je fais cette solution ?

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Si ton tableau "appartient" au formulaire il suffit que tu le déclares dans le module associé au formulaire. Celui qui s'ouvre quand tu veux ajouter un événement à un formulaire.

    Tu mets ta déclaration sous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option Compare Database
    Option Explicit
    A+

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mai 2011
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 53
    Points : 28
    Points
    28
    Par défaut
    Encore merci,
    et j'ai une derniere question,
    comment je fais pour appeler la fonction Get dans mon formulaire dans lequel je vais me servir du tableau ?

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    les propriétés sont 'transparentes'

    Tu as simplement a écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TaVariable=TonObjetForm.TaPropriété
    pour l'appel il n'y a pas de différence avec une variable publique.

    A+

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mai 2011
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 53
    Points : 28
    Points
    28
    Par défaut
    Donc la propriété get que j'ai ecrit dans mon autre formulaire s'appelle actTab : (ma variable interne s'appelle actArray)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Property Get actTab() As Activite()
       actTab = actArray
    End Property
    J'ai crée ma fonction qui recupere le tableau dans mon formualire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Dim activites() As Activite
        activites = SubFormSaisieAct.actTab
    mais quand je veux executer le code j'obtiens : "Method or data member not found", l'erreur est sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     activites = SubFormSaisieAct.actTab
    Y a t'il quelque chose que j'ai mal ecrit ?

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Je ne suis pas sur de qui est l'autre formulaire :-).

    Soit F1 le formulaire qui contient ta variable.

    dans F1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim mMaVariable as Activite 'Variable privée
     
    public property Get MaVariable() as Activite
       MaVariable=mMaVariable
    end property
    dans F2 le formulaire qui veut lire la variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim v as Activite
    dim f1 as Form_F1:set f1=forms("F1")
    v=f1.MaVariable
    set f1=nothing
    Cela devait marcher.

    A+

  11. #11
    Nouveau membre du Club
    Inscrit en
    Mai 2011
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 53
    Points : 28
    Points
    28
    Par défaut
    En faite j'ai oublié de préciser que F1 est en faitre un sous-formulaire inclus dans F2, est-ce que ca change quelque chose dans le code ?

    Parce que avec ce code j'obtiens l'erreur : "Microsoft Access can't find th form 'monSousForm' referred to in a macro expression or in Visual Basic code."

  12. #12
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Oui mais je ne sais pas exactement quoi, essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set f1=f2.NomTonControlSousForm.form
    A+

  13. #13
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Pour info la collection Forms() contient la liste des formulaires actuellement ouverts. Un sous-formulaire étant inclus dans un autre il n'apparaît pas dans la collection Forms.

    A+

  14. #14
    Nouveau membre du Club
    Inscrit en
    Mai 2011
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 53
    Points : 28
    Points
    28
    Par défaut
    Parfait ca marche,
    En tout cas merci pour ton aide ca fait plaisir de pas etre seul dans le marasme du VBA

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/08/2011, 12h16
  2. Recuperer une variable d'un autre fichier
    Par virtuadrack dans le forum Réseau
    Réponses: 7
    Dernier message: 29/10/2007, 11h37
  3. Shell - Récupérer une variable dans un autre fichier
    Par claralavraie dans le forum Linux
    Réponses: 9
    Dernier message: 11/01/2006, 16h25
  4. Réponses: 3
    Dernier message: 07/01/2006, 22h17

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