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 :

Ajout multiple Event Procedure [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre chevronné Avatar de robyseb
    Homme Profil pro
    Programmeur-Analyste
    Inscrit en
    Juillet 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur-Analyste
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2011
    Messages : 305
    Par défaut Ajout multiple Event Procedure
    Bonjour !

    j'ai créer un formulaire avec 70 rectangle sur lequel je voudrait insérer une procédure sur le On_Click.

    j'ai ne sait pas trop comment m'y prendre pour affecter les procédure à un évènement par exemple ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private sub Form_Load()
        ' parcours l'entete de formulaire
        For Each ctrl In Form.Section(acDetail).Controls
            If TypeOf ctrl Is Rectangle Then
                ' on active l'événement
                ctrl.OnClick = "[Event Procedure]"
    j'aurait public sub Couleur1_Click() à Public Sub Couleur70_Click()

    Mon Évènement serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Couleur1_Click()
    GetDcColor 'Une Fonction dans un module externe !
    End Sub
    Je suis un peu perdu j'espère avoir de l'aide merci

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bonjour,

    J'ai compris que tu voulais éviter de devoir coder septante* fois la même chose.

    Tu pourrais y arriver simplement comme ceci :

    - créer une macro qui exécute ton code ;
    - affecter cette macro à l'événement clic de tes rectangles : il suffit de les sélectionner tous et de saisir le nom de la macro dans la propriété "Sur clic".



    * pas pu résister à exprimer ma belgitude.

  3. #3
    Membre chevronné Avatar de robyseb
    Homme Profil pro
    Programmeur-Analyste
    Inscrit en
    Juillet 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur-Analyste
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2011
    Messages : 305
    Par défaut
    Bonjour Claude !

    Exactement Mais le principale est que si je fait des changement ils seront répercuté à chaque ouverture !!

    Si on reprend l'exemple que j'ai mit : Le fait de mettre seulement Dans l'Évenement ne reviendrait pas au même que de créer une macro et de l'affecter à la procédure Click().

    Si tu a une idée comment rajouter ce qu'il me manque à mon code je suis preneur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private sub Form_Load()
        ' parcours l'entete de formulaire
        For Each ctrl In Form.Section(acDetail).Controls
            If TypeOf ctrl Is Rectangle Then
                ' on active l'événement
                ctrl.OnClick = "[Event Procedure]"
    End Sub

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Je ne comprends pas le résultat que tu veux obtenir.

    Explique avec des mots (pas avec du code !) ce que tu veux faire.

    Poste le code de la fonction "GetDcColor".

  5. #5
    Membre chevronné Avatar de robyseb
    Homme Profil pro
    Programmeur-Analyste
    Inscrit en
    Juillet 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur-Analyste
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2011
    Messages : 305
    Par défaut
    Bonjour !

    J'ai créer un formulaire que j'ai appeller ColorPicker.

    donc j'ai 70 rectangle de couleur, donc lorsque je clique sur l'un d'eux la fonction GetDcColor récupère la couleur sous le pointeur au moment de l'appel de la fonction !!

    Donc je désire à l'ouverture du formulaire créer une routine qui va affecter à chaque rectangle sur le rectangle_Click() l'Appel de GetDcColor. À moin qu'il y est une autre méthode, je pensait que se serait la façon de faire.

    Peu importe le contenu de la fonction moi tous ce que je désirerai faire c'est de l’appeler au moment du clic !!

    cordialement,

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Pour l'instant, j'ai cru comprendre que tu as 70 rectangles.
    Ces rectanges ont chacun une couleur différente.
    La code de cette couleur se trouve dans la propriété "Couleur fond" de chaque rectangle.
    Par exemple 255 pour rouge, 65535 pour jaune, 16777215 pour blanc.

    Que veux-tu faire avec ce formulaire ?

  7. #7
    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
    Bonjour,

    Si j'ai bien compris, je ne me casserais pas la tête et je ferais comme le dit Claude.

    En mode modification de ton formulaire, tu sélectionnes tes septante* rectangles et dans l'événement Sur clic, tu mets simplement =GetDcColor().

    Et dans le module du formulaire, ta fonction GetDcColor :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function GetDcColor()
     
        MsgBox Me.ActiveControl.BackColor
     
    End Function
    Domi2

    *Moi, c'est ma suissitude

  8. #8
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Salut Domi2,

    Moi, c'est ma suissitude
    "suissitude" ne figure pas dans le dictionnaire. Par contre, le LaRousse 2013 mentionne "belgitude"...

    Mais cela nous écarte du sujet...

  9. #9
    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
    "Belgitude", ça qualifie un pays sans gouvernement ?

    Oui, bon effectivement, on s'écarte du sujet

  10. #10
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    @Domi2

    J'ignore si c'est propre à Access2000 que j'utilise mais :
    dans l'événement Sur clic, tu mets simplement =GetDcColor().
    C'est refusé : Access attend un nom de macro ou une procédure.

    Et un rectangle cliqué n'est pas le contrôle actif !

    Pour ce deuxième point, il suffit de remplacer les rectangles par des zones de texte et le tour est joué.

  11. #11
    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
    Tu as bien créé une fonction et pas une procédure ?

    Pour le rectangle, effectivement, j'ai aussi testé avec une zone de texte.

    Domi2

  12. #12
    Membre chevronné Avatar de robyseb
    Homme Profil pro
    Programmeur-Analyste
    Inscrit en
    Juillet 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur-Analyste
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2011
    Messages : 305
    Par défaut
    Bonjour à vous 2 !

    j'ai tenté vos solutions mais ca ne fonctionne pas ...

    Donc pour résumé, ma solution qui est d'affecté à chaque rectangle soit "sur Click" une procédure possèdant mon sub à appeller soit GetDcColor comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Couleur1_Click()
    GetDcColor
    End Sub
    je tente de créer une routine avec une boucle qui à l'ouverture de mon formulaire créera celle-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private sub Form_Load()
    dim I as integer
        ' parcours l'entete de formulaire
        For Each ctrl In Form.Section(acDetail).Controls
            If TypeOf ctrl Is Rectangle Then
                ' on active l'événement
                for I = 1 to 70
                 ctrl = Couleur & I
                ctrl.OnClick = "[Event Procedure]"
                next
    End Sub

  13. #13
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    @Domi2

    Mea culpa : avec une fonction dans le module du formulaire, c'est OK.


    @robyseb

    Toujours pas compris ce que tu veux faire. Explique avec des mots ton but au lieu de nous montrer ton code qui ne fonctionne pas !

  14. #14
    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
    Je ne comprend pas bien non plus le but.

    Bien sûr, on peut affecter dynamiquement la fonction à l'événement Sur clic :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ctrl.OnClick = "=GetDcColor()"
    Mais après ? Tu n'es pas plus avancé que si tu saisis en dur dans les propriétés du contrôle. Il te faut encore récupérer la couleur de fond du rectangle actif. Et si c'est simple avec une zone de texte...

    Domi2

  15. #15
    Membre chevronné Avatar de robyseb
    Homme Profil pro
    Programmeur-Analyste
    Inscrit en
    Juillet 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur-Analyste
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2011
    Messages : 305
    Par défaut
    Bonjour et merci Justement j'ai remarqué ne pas vous avoir montré que la fonction récupère la couleur de fond .. la voici :

    dans un module à part j'ai ceci :

    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
    Option Compare Database
    Option Explicit
    'GetCursorPos: renvoie la position de la souris sur l'écran.
    Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    'GetDC: Renvoie le Handle d'un Contexte d'Affichage hDC (Handle of Device Context)
    Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    'GetPixel: renvoie la couleur du pixel en fonction des coordonnées spécifiées (X et Y)
    Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, _
                        ByVal Y As Long) As Long
     
     
    'Coordonnées d'un point de l'écran.
    Type POINTAPI
            X As Long
            Y As Long
    End Type
     
    Public Function GetDcColor() As Double
    Dim DeskHdc As Long
    Dim Pxy As POINTAPI
     
        'GetDC(0): Pour récupérer le hDC de l'écran
        DeskHdc = GetDC(0)
        'Récupére la position du curseur de la souris
        GetCursorPos Pxy
        'La fonction renvoie la couleur à l'emplacement spécifié
        GetDcColor = GetPixel(DeskHdc, Pxy.X, Pxy.Y)
    End Function
    et dans le module du formulaire j'ai ceci :

    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
    Public Sub ColorPicker()
     
    Dim Rouge As Integer, Vert As Integer, Bleu As Integer
        Dim Couleur As Long
     
        'affiche la couleur correspondant à l'emplacement du curseur de la souris
        Me.RectangleCouleur.BackColor = "&H" & Hex(GetDcColor)
        Couleur = Me.RectangleCouleur.BackColor
     
        '--- Convertit la couleur au format RGB -------
        Rouge = Int(Couleur Mod 256)
        Vert = Int((Couleur Mod 65536) / 256)
        Bleu = Int(Couleur / 65536)
        '------------------------------------------------
     
     
        '--- Affiche les codes RGB dans les TextBox -----
        Me.RGB1 = Rouge
        Me.RGB2 = Vert
        Me.RGB3 = Bleu
        '------------------------------------------------
    End Sub
    Premièrement je me suis trompé dans la retranscritpion ici .. donc la procédure à récupérer est "ColorPicker" et le but n'est pas seulement de capturer la couleur de fond mais aussi de spécifier le Code RGB de cette couleur affiché dans 3 textbox !!

    j'ai récupéré cette fonction dans le Post ICI

  16. #16
    Membre chevronné Avatar de robyseb
    Homme Profil pro
    Programmeur-Analyste
    Inscrit en
    Juillet 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur-Analyste
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2011
    Messages : 305
    Par défaut
    Re-Bonjour ! j'ai réussi !!

    Pour y arriver j'ai créer une Macro comme tu m'avait dit dès le début

    j'ai transformé mon Private sub en Fonction puis au Form_Load j’affecte le nom de ma macro à tous les rectangles sur le Click()

    merci mille fois

  17. #17
    Membre chevronné Avatar de robyseb
    Homme Profil pro
    Programmeur-Analyste
    Inscrit en
    Juillet 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur-Analyste
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2011
    Messages : 305
    Par défaut
    J'ai trouvé un code encore mieux pour ceux à qui sa peut être utile !!

    je vais créer un post Contribuez ICI

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

Discussions similaires

  1. ajouter multiples datalabel pour un meme point sur un chart
    Par leon1983 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 02/01/2008, 19h13
  2. if Event = Procedure then
    Par Yvan_F1 dans le forum Langage
    Réponses: 6
    Dernier message: 29/11/2007, 09h33
  3. [DOM] Ajouter un event à une class
    Par Nulenprogra dans le forum Général JavaScript
    Réponses: 23
    Dernier message: 30/04/2007, 12h19
  4. Réponses: 2
    Dernier message: 20/04/2007, 02h09
  5. Problème d'ajout multiples dans un BDD Access
    Par arnaud_verlaine dans le forum Langage SQL
    Réponses: 3
    Dernier message: 31/05/2004, 14h34

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