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 :

creation dynamique de control avec code


Sujet :

VBA Access

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut creation dynamique de control avec code
    bonjour,

    voilà je me suis inspiré de l'exemple de la FAQ pour créer dans un formulaire un bouton avec du code derriere.


    voici le code (le code en commentaire etait le code initial dans l'exemple de la faq)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    Public Sub CreerBoutonCode(NombrePartie As Integer, NomForm As String)
     
    Dim ctl As Control
     
    'Ouvrir le formulaire en mode création
    DoCmd.OpenForm NomForm, acDesign
     
    'Crée un contrôle "Groupe d'options" :
    Set ctl = CreateControl(NomForm, acCommandButton, , "", "", 2500, 800 + NombrePartie * 500, 1500, 300)
    With ctl
      'Définit un nom pour le contrôle
      .Name = "Test"
      'Déclare l'événement "Après mise à jour" du contrôle
      .OnClick = "[Event Procedure]"
    End With
     
     
    'Normalement il ne nous reste plus qu'à écrire la procédure
    'événementielle avec Module.CreateEventProc
     
    'Mais étant donné que nous avons créé un groupe d'option
    'il faut maintenant créer à l'intérieur,
    'un contrôle pour chaque option (nous allons pour cela nous servir
    'de l'argument "Parent" de la méthode CreateControl).
    'Créons par exemple un bouton d'option :
     
     
     
    'Set ctl = CreateControl(NomForm, acOptionButton, , ctl.Name, , 1500, 4000)
    'With ctl
    '  .Name = "option1"
    '  .OptionValue = 1
    'End With
     
     
     
    'Et maintenant, création du code à éxécuter sur AfterUpdate de Options :
     
    Dim mdl As Module
    Dim lng As Long 'Sert à récupérer le numéro de la ligne d'insertion de la procédure
     
    Set mdl = Forms![NomForm].Module
    lng = mdl.CreateEventProc("OnClick", "Test")
    mdl.InsertLines lng + 1, _
      vbTab & _
      "MsgBox " & Chr(34) & "Vous avez choisi 1." & Chr(34)
      '"If(option1.value = 2) then MsgBox " & Chr(34) & "Vous avez choisi 1." & Chr(34)
     
     
    'On libère mémoire allouées aux variables.
    Set ctl = Nothing
    Set mdl = Nothing
     
    End Sub
    j'ai une erreur lors de l'execution sur la ligne :

    Set mdl = Forms![NomForm].Module

    erreur : "impossible de trouver le formulaire nomform....."

    je comprend vraiment pas l'erreur car le bouton a bien été créé sur mon formulaire (donc il l'a bien trouvé avant! pourquoi il le trouve plus à cette ligne? )

    A la fin (lors de l'erreur) le bouton a été créé et le formulaire est toujours ouvert.

    une idée?


    petites questions supplémentaires (peut etre que le pb vient de là car je ne comprend pas ces lignes).

    1) que fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Déclare l'événement "Après mise à jour" du contrôle
      .OnClick = "[Event Procedure]"
    j'ai changé le afterupdate par onclick car au final je voudrais que mon code s'execute lors d'un clique sur mon commandbutton.

    2) et ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lng = mdl.CreateEventProc("OnClick", "Test")
    mon "onclick" est pour cette procédure un eventname mais je comprend pas d'où ca vient, ce que ca fait....

    c'est en lien avec cette ligne?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Déclare l'événement "Après mise à jour" du contrôle
      .OnClick = "[Event Procedure]"
    voilà ce sera tout
    merci d'avance

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

    Comment s'appelle ton formulaire où tu crées ton contrôle ?

    Starec

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    euh,

    il s'appelle F_AFFICHAGE (le nom vient d'une autre faq... mais il peut changer s'il faut )


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call CreerBoutonCode(Me.Texte5.Value, "F_AFFICHAGE")

    et voilà mon appel... mais je trouve toujours pas

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    En attendant de vérifier,
    essai de remplacer
    Set mdl = Forms![NomForm].Module
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set mdl = Forms(NomForm).Module
    Amicalement

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    bah,

    ca à l'air pas mal... je pense que le problème sur cette ligne est passé mais y'en a un nouveau (sinon c'est pas drole )


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lng = mdl.CreateEventProc("OnClick", "Test")
    => "gestionnaire d'evenements non valide"

    là non plus je comprend pas...comme je l'avais dit plus haut je comprend pas cette ligne... alors corriger une faute dessus...

    voilà.... , idée??

  6. #6
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 898
    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 898
    Points : 4 787
    Points
    4 787
    Par défaut
    Encore une petite modif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lng = mdl.CreateEventProc("Click", ctl.Name)
    ... à la place de OnClic

    A+
    "Always look at the bright side of life." Monty Python.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    Super

    ca y'est cette fois tout va bien


    merci a tous !

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

Discussions similaires

  1. creation dynamique d'objets avec souris
    Par guitariste dans le forum JavaFX
    Réponses: 4
    Dernier message: 04/04/2009, 17h11
  2. Creation dynamique de control dans un tabPage
    Par skunkies dans le forum Windows Forms
    Réponses: 2
    Dernier message: 03/03/2009, 13h51
  3. Réponses: 13
    Dernier message: 25/01/2008, 10h23
  4. Creation dynamique de controls : gerer les events ?
    Par clinic dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/08/2007, 10h42
  5. [VB6] Création dynamique de controles dans un SSTab
    Par Txomin dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/12/2004, 11h13

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