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 :

Manipulation de l'objet Form


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 34
    Points : 31
    Points
    31
    Par défaut Manipulation de l'objet Form
    Bonjour,

    j'utilise Access 2000. J'ai une fonction qui manipule un formulaire (ouverture, changement du titre et des contrôles en fonction d'un argument passé à la fonction). Pour simplifier la maintenance du code j'ai cru intelligent de passer le formulaire dans une variable, comme ça quand si je change le nom du formulaire il n'y a qu'une ligne à modifier... Mais je n'y comprends rien, ça a marché une fois ou 2 et puis maintenant plus du tout.. donc après une matinée de tests et de recherches je sollicite vos lumières !

    Voici les résultats de mes tests :
    le code de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Function test1()
    Dim frm As Form
    Set frm = Form_test
    DoCmd.OpenForm frm.Name
    frm.Caption = "toto"
    Set frm = Nothing
    End Function
    
    si je place ce code sur l'événement OnClick d'un bouton placé sur le formulaire Form_test, ça marche (Caption change). Si je place ce code sur un bouton d'un autre formulaire, le formulaire Form_test est bien ouvert mais sa propriété Caption ne change pas !!!

    Merci d'avance pour votre aide

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 34
    Points : 31
    Points
    31
    Par défaut
    Bon une avancée :
    si j'écris le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Function test1()
    DoCmd.OpenForm test
    Dim frm As Form
    Set frm = Form_test
    frm.Caption = "toto"
    Set frm = Nothing
    End Function
    j'ouvre le formulaire avant de le passer dans une variable : ça marche. Mais je préfèrerais le déclarer puis faire toute sorte de manipulations !! Comment ?

  3. #3
    Membre actif
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Points : 222
    Points
    222
    Par défaut
    Salut, çà ne te suffirait pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Function test()
    DoCmd.OpenForm test
    forms("Test").Caption = "toto"
    End Function

  4. #4
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 404
    Points : 1 683
    Points
    1 683
    Par défaut
    Bonsoir,

    Une solution à tester : tu ouvres ton formulaire avec en argument le caption que tu veux afficher.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "Test", , , , , , "toto"
    et sur l'évènement Sur ouverture de ton formulaire Test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Caption = Me.OpenArgs
    Gabout

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 34
    Points : 31
    Points
    31
    Par défaut
    Merci pour vos réponses. La modification du Caption n'était qu'un exemple, ma fonction devrait également me permettre, en fonction du paramètre mode passé dans les arguments (qui prend la valeur "consult" ou "insert" selon que je veux afficher le formulaire avec des données ou sur un nouvel enregistrement), d'afficher ou pas certains boutons, de permettre ou pas la modification de certains champs...
    Faute de mieux, j'ai fait comme ça (un petit extrait exemple quand le paramètre mode="consult") :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    With Form_F_evalEFE
            .titre_form.Caption = "Evaluations"
            .Caption = "Consultation des évaluations"
            .CmdSuiv.Visible = True
            .CmdPrec.Visible = True
            .CmdRechercheevaluation.Visible = True
            .CmdNouv.Visible = True
            .CmdCR.Visible = True
            .mode_formulaire = "consult"
        End With
    C'est juste que je trouvais plus rationnel de déclarer mon formulaire au début de la fonction dans une variable et d'écrire ensuite MonForm.caption etc... car dans ma fonction j'écris un grand nombre de fois "Form_F_evalEFE" et du coup si je décide de changer le nom du formulaire (ce n'est pas une situation hypothétique, j'ai justement eu besoin d'en renommer plein car les noms n'étaient plus cohérents avec les données manipulées et ça devenait compliqué à comprendre), il faut que je modifie plein de lignes dans ma fonction...
    Mais ça ne marche pas, je ne comprends pas comment fonctionne l'objet form et ça m'agace !!!

    Effectivement je peux faire autrement mais je voulais savoir ce qui est possible et ce qui ne l'est pas, histoire d'apprendre... ça me semble assez logique qu'on puisse stocker un objet formulaire dans une variable et accéder à ses propriétés, controles et méthodes mais je n'y arrive pas.

  6. #6
    Membre actif
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Points : 222
    Points
    222
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Function test()
    Dim frm As object
    DoCmd.OpenForm "frmTest"
    Set frm = forms("frmTest")
    frm.Caption = "toto"
    End Function
    la collections forms englobe toutes les feuilles ouvertes ==> cette syntaxe fonctionne et te permet de piloter une (ou x) feuille(s) depuis une autre

Discussions similaires

  1. Dll ActiveX renvoyant un objet Form
    Par nnj dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/05/2007, 19h28
  2. [C#] Instancier un objet Form depuis un Thread
    Par Philipili dans le forum Windows Forms
    Réponses: 10
    Dernier message: 13/05/2006, 14h40
  3. [VBA] Passage objet Form : err 13 incompatibilité de type.
    Par Caroline1 dans le forum Contribuez
    Réponses: 6
    Dernier message: 12/04/2006, 15h39
  4. VB6 - connaître si un objet Form est chargé en mode MODAL
    Par CBleu dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 04/01/2006, 22h16
  5. Manipulation d'un Objet OLE Excel ?
    Par NiKro75 dans le forum VBA Access
    Réponses: 10
    Dernier message: 05/07/2004, 18h43

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