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 :

Appeler une Private Sub "AfterUpdate" [AC-2007]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Consultant finance
    Inscrit en
    Mars 2009
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant finance

    Informations forums :
    Inscription : Mars 2009
    Messages : 168
    Par défaut Appeler une Private Sub "AfterUpdate"
    Bonsoir,

    J'arrive à appeler une procédure évenementielle après mise à jour de TEXTE1grace à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call TEXTE1_AfterUpdate
    Mon souci est que j'aimerais ne pas limiter cet appel à mon seul contrôle TEXTE1 mais à tous les contrôles (previous) concernés par le code ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim ctl As Control
    Set ctl = Screen.PreviousControl
    ...
    ...
    Call ctl_AfterUpdate
    Merci beaucoup pour votre aide.

  2. #2
    Expert confirmé
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Par défaut
    Bonsoir,

    Pas très clair...

    Tu peux développer un peu ce que tu voudrais faire et éventuellement poster le code de ta procédure...

    Domi2

    P.-S. N'oublie pas les balises de code (# au dessus de la fenêtre de saisie).

  3. #3
    Membre confirmé
    Profil pro
    Consultant finance
    Inscrit en
    Mars 2009
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant finance

    Informations forums :
    Inscription : Mars 2009
    Messages : 168
    Par défaut
    Bonsoir,

    J'ai le code suivant derrière un bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub BT1_Click()
    Dim ctl As Control
    Set ctl = Screen.PreviousControl
    'ici ctl = Texte1
    ctl = 5
     
    'exécute la procédure évenementielle "Après mise à jour" de Texte1
    'c'est là que j'aimerais exécuter la procédure évenementielle "Après mise
    ' à jour" de ctl (quelqu'il soit)
    Call Texte1_AfterUpdate
    End sub
    Je cherche quelque chose du style Call Ctl_AfterUpdate.


    J'espère avoir été plus clair et merci pour ton aide sur les balises, je me demandais comment on faisait.

    Bonne soirée.

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

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 406
    Par défaut
    Bonjour,

    J'avoue être dans le cirage comme Domi2

    Ne voudrais-tu pas affecter des opérations (en l'occurrence de ce fait Texte1_AfterUpdate mais dont tu ne nous dis rien) à chaque contrôle de ton formulaire ?

    Du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim ctl As Control
    For Each ctl In Controls
      'Opérations à exécuter
      '...
    Loop
    A+

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Par défaut
    Bonjour,
    JPG je ne comprends pas bien non plus; d'autant plus qu'en utilisant le PreviousControl, soit le contrôle qui avait le focus avant le click sur le bouton; l'événement AfterUpdate s'est déjà produit.

  6. #6
    Membre confirmé
    Profil pro
    Consultant finance
    Inscrit en
    Mars 2009
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant finance

    Informations forums :
    Inscription : Mars 2009
    Messages : 168
    Par défaut
    Bonjour tout le monde et merci pour l'intérêt que vous portez à ma question. Je vais tenter de tout vous expliquer plus clairement mais tout d'abord :
    Gabout : l'opération à exécuter n'est pas forcément la même pour chaque ctl,
    Ilank : l'événement AfterUpdate ne s'est pas produit sur Texte1 avant le click sur BT1.

    J'ai en fait 10 boutons avec des légendes différentes qui me permettent de simuler un clavier numérique. J'utilise le Caption de chaque bouton pour affecter une valeur au précédent contrôle qui a eu le focus.

    La légende de BT5 est 5, la légende de BT6 est 6 etc...

    Derrière chacun des boutons, j'affecte la fonction TAPCHIFFRES suivante :

    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
     
    Public Function TAPCHIFFRES ()
    Dim ctl As Control
    Set ctl = Screen.PreviousControl
     
    ' il faut que le contrôle soit une zone de texte
    If ctl.ControlType <> acTextBox Then
    ctl.SetFocus
    Exit Function
    End If
     
    ctl = Me.ActiveControl.Caption
     
     
    'ici je souhaiterais lancer l'évenement AfterUpdate de ctl
     
    End sub
    On imagine que ctl soit Texte1 ou Texte 4 qui n'ont pas les mêmes événements AfterUpdate :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Texte1_AfterUpdate()
    Me.Texte3= Me.Texte1* Me.Texte2
    End sub
     
    Private Sub Texte4_AfterUpdate()
    Me.Texte6= Me.Texte4 + Me.Texte5
    End sub

    L'événement AfterUpdate me paraît être le plus judicieux car il n'est pas interdit que la zone Texte1 ou Texte4 soit saisie au clavier normalement.
    Mais je suis ouvert à toute autre proposition.

    Merci encore pour votre aide.

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

Discussions similaires

  1. [AC-2003] Paramètres d'une Private Sub à une autre
    Par Arola78 dans le forum VBA Access
    Réponses: 4
    Dernier message: 12/05/2009, 23h50
  2. Réponses: 4
    Dernier message: 28/08/2006, 13h04

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