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

Access Discussion :

[VBA][DEB] capter un evenement d'un control passe en var


Sujet :

Access

  1. #1
    Membre du Club Avatar de ip203
    Inscrit en
    Mars 2002
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 132
    Points : 59
    Points
    59
    Par défaut [VBA][DEB] capter un evenement d'un control passe en var
    Bonjour,

    Mon titre est un peu flou mais le manque de place le justifie. Voici ma question, j'ai dans un formulaire une longue liste de zone de texte groupées par 3 sur 15 lignes. En fait on demande le sexe, l'age et un code pour chaque personne (jusqu'à 15 au max). Mon formulaire commence par rendre tous les controles Enabled = False sauf le premier.
    Le GotFocus du premier entrainant Enabled = True du deuxième etc...
    Arrivé à ma zone des Controles texte je fais ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    max = (Me.Nbr_total_pers.Value + 1) * 6
     
        For i = 14 To max Step 2
            strControl = "Texte" & i
            Me.Controls(strControl).Enabled = True
            strControl = ""
        Next i
    Qui fonctionne parfaitement. Ce que j'aimerai faire maintenant c'est quand l'utilisateur fait un GotFocus sur le dernier controle rendu accessible (Me.Controls(Texte56)) par exemple, je puisse faire tourner du code. Le problème c'est que je ne sais pas:

    - Parametrer cet évènement, puisque le nom de ce controle est une variable et je ne sais pas si on peut fabriquer une Sub avec comme nom le nom d'une variable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     private Sub Me.Controls(maVar)_GotFocus()
    Cela me parait un peu tiré par les cheveux, non ?!

    Merci de vos conseils

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut [VBA][DEB] capter un evenement d'un control passe en var
    Bonjour,

    Si tu ne veux absolument pas créer une procédure événementielle pour chacun de tes contrôles, alors tu peux créer une procédure de type Function qui utilisera le contrôle actif (Me.ActiveControl), dans le module de code de ton form ou dans un module de code général.
    Et pour chaque événement ciblé des contrôles concernés, tu renseignes la propriété avec une expression qui commence par le signe égal (sinon Access recherche une Macro).

    Exemple de fonction dans le module du Form:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Function MaFonctionEvent()
        MsgBox "Contrôle actif: " & Me.ActiveControl.Name
    End Function
    Exemple de fonction (la même) dans un module de code général:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Public Function MaFonctionEvent()
        MsgBox "Contrôle actif: " & Screen.ActiveControl.Name
    End Function
    Exemple d'expression à utiliser:
    Citation Envoyé par ip203
    [...] je ne sais pas si on peut fabriquer une Sub avec comme nom le nom d'une variable:
    VBA ne sait pas faire ça

  3. #3
    Membre du Club Avatar de ip203
    Inscrit en
    Mars 2002
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 132
    Points : 59
    Points
    59
    Par défaut
    Bonjour,

    Ca m'a l'air pas mal. Je vais essayer ca ce week end...Je te tiens au jus

    @+++

    Merci pour tes conseils

  4. #4
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    il y a aussi ce type de méthode

    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
    Option Explicit
     
    Private Sub Form_Load()
        Dim ctl As Control
     
        For Each ctl In Me.Controls
            If ctl.ControlType = acCommandButton Then
                ctl.Properties("onclick") = "=GotAClick('" & ctl.name & "')"
            End If
        Next ctl
     
        Set ctl = Nothing
     
    End Sub
     
    Private Function GotAClick(ByVal NomCmd As String)
        MsgBox ("l'utilisateur a cliqué sur le bouton : " & NomCmd)
    End Function
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  5. #5
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut Re: [VBA][DEB] capter un evenement d'un control passe en var
    Citation Envoyé par =JBO=
    Citation Envoyé par ip203
    [...] je ne sais pas si on peut fabriquer une Sub avec comme nom le nom d'une variable:
    VBA ne sait pas faire ça
    Sinon, on peut malgré tout faire ça en VBA ... grâce à Eval() qui d'ailleurs n'existe pas dans VB 6

    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
    Function Getit01(var)
        Getit01 = var + 1
    End Function
     
    Function Getit02(var)
        Getit02 = var * 2
    End Function
     
    Sub TestEval()
        Dim i As Integer
        Dim maVar
     
        maVar = 100
        For i = 1 To 2
            Debug.Print Eval("Getit" & Format(i, "00") & "(""" & maVar & """)")
        Next i
    End Sub
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  6. #6
    Membre du Club Avatar de ip203
    Inscrit en
    Mars 2002
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 132
    Points : 59
    Points
    59
    Par défaut
    Salut,

    Bon et bien avec tout cela j'ai à manger pour tout le week end !!!
    Je vais décortiquer ca et à Lundi...

    Merci

Discussions similaires

  1. Réponses: 7
    Dernier message: 23/03/2006, 12h12
  2. [PictureBox][VB.net ]Capter l'evenement MouseUp
    Par zitoun dans le forum VB.NET
    Réponses: 2
    Dernier message: 30/12/2005, 16h48
  3. Réponses: 6
    Dernier message: 18/04/2005, 21h12
  4. Capter un evenement de souris pour toute l'appli
    Par tmorel dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 02/12/2004, 00h12
  5. capter l'evenement clic sur une cellule d'un string grid
    Par lasconic dans le forum Composants VCL
    Réponses: 3
    Dernier message: 25/06/2003, 10h51

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