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 :

Création d'un bouton de commande et d'un Event Procedure par le code


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 47
    Points : 29
    Points
    29
    Par défaut Création d'un bouton de commande et d'un Event Procedure par le code
    Bonjour,

    j'ai réalisé une procédure qui crée un certains nombres de boutons de commandes sur un état en fonction d'une période choisi.

    Exemple :
    la période est 2006 - 2008, la procédure va donc créer trois boutons de commandes : 2006, 2007 et 2008

    Une partie du code se présente de la sorte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With ctrl
        .Name = "cmd" & Me.txt_annee1 + j
        .Caption = Me.txt_annee1 + j
        .OnClick = "[Event Procedure]"
    End With
    Ce que je cherche à savoir c'est comment faire pour ajouter à ces boutons une procédure que j'aurais au préalable créer et qui s'adapterait en fonction du bouton. Voici l'exemple du code pour le bouton "2006" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        SQL = SQL & " AND Year(Jour)=2006" 
        If mois <> 0 Then
            SQL = SQL & " AND Month(Jour)=" & mois & ";"
        End If
        Report_RPT_depense.RecordSource = SQL
        annee = 2006
    Je souhaite donc que cela s'adapte en fonction de l'année.
    Je suppose que je dois remplacer "[Event Procedure]" par quelque chose d'autre mais je ne vois pas quoi.

    Merci d'avance pour vos réponses

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Je remplacerai le "Event procedure" par le nom d'une fonction public avec un paramêtre pour éviter d'écrire autant de fonction que d'année.

    Un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =MaFonctionAppelee(2006)
    Je viens de faire un test et cela marche.
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

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

    Citation Envoyé par kebab666 Voir le message
    Bonjour,

    j'ai réalisé une procédure qui crée un certains nombres de boutons de commandes sur un état en fonction d'une période choisi.
    Es-tu sûr que c'est sur un état, car cela ne servira à rien, un bouton de commande sur un état n'a aucun effet, un état n'a pas vocation a être interactif.

    Starec

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    Merci pour vos réponses,

    marot_r, je voulais savoir quel type de données doit renvoyer la fonction ?

    Starec
    un bouton de commande sur un état n'a aucun effet
    Et bien moi ca marche pourtant, j'ai par exemple rajouter des boutons de commande sur cet état correspondant aux mois du calendrier et quand je clique dessus j'obtiens bien les lignes correspondant au mois choisi.
    Je travaille sur Access 2007, peut-être est-ce nouveau depuis cette version.

    Merci encore

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par kebab666 Voir le message
    Je travaille sur Access 2007, peut-être est-ce nouveau depuis cette version.
    C'est possible, je n'ai pas Access 2007

    Starec

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Citation Envoyé par kebab666 Voir le message
    Merci pour vos réponses,

    marot_r, je voulais savoir quel type de données doit renvoyer la fonction ?
    Il n'est pas nécessaire que ta fonction renvoie quoique ce soit mais cela doit être une fonction public tout de même, on ne peut pas utiliser une Sub après un =.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    Ca ne fonctionne toujours pas...

    Voici mon code de création du bouton de commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With ctrl
      .Name = "cmd" & Me.txt_annee1 + j
      .Caption = Me.txt_annee1 + j
      an = Me.txt_annee1 + j
      .OnClick = choix_annee(an)
    End With
    et celui de la fonction choix_annee, censé être associé au nouveau bouton de commande crée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Function choix_annee(an As Integer)
     
        SQL = SQL & " AND Year(Jour)=" & an
        If mois <> 0 Then
            SQL = SQL & " AND Month(Jour)=" & mois & ";"
        End If
        Report_RPT_depense.RecordSource = SQL
    Seul le premier bouton de commande est crée et la fonction ne lui est pas associé.
    Quelqu'un voit-il l'erreur ?

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Essaye cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    .OnClick = "=choix_annee(" & an & ")"
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    On doit être que la bonne voie, tous les boutons sont crées, cependant lors du click sur le bouton 2006 par exemple j'ai ceci :

    Microsoft Office Access ne peut pas trouver l'objet <<choix_annee(2006)>>.
    Si <<choix_annee(2006)>> est une nouvelle macro ou un nouveau groupe de macros, vérifiez qu'il (elle) est enregistré(e) et que vous avez correctement tapé son nom
    Je fais plusieurs test pour résoudre le problème

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Ok, le plus simple est que tu crées bouton qui fonctionne à la main.

    Cela devrait être un bouton dont le OnClick vaut Un fois que tu as trouvé la bonne façon tu ne devrais plus qu'à avoir à écrire le code qui génère ton bouton avec le bon paramêtre.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    Euréka

    voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .OnClick = "=choix_annee(" & an & ")"
    Bizarre on l'avait déjà utilisé avant mais j'avais du oublier le =

    Merci pour votre aide

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

Discussions similaires

  1. création d'un bouton de commande au niveau du workbook
    Par volubiliss dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/03/2011, 18h25
  2. Création d'un bouton de commande sur formulaire
    Par larangel dans le forum IHM
    Réponses: 4
    Dernier message: 13/09/2008, 18h15
  3. bouton de commande iutilisable en mode création
    Par titeZ dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 21/08/2007, 14h54
  4. Création d'un bouton de commande dans un formulaire
    Par annelaure dans le forum Access
    Réponses: 5
    Dernier message: 30/05/2006, 11h48
  5. Ajout de bouton de commandes dans la barre de menus
    Par vanessaf22 dans le forum IHM
    Réponses: 9
    Dernier message: 21/07/2003, 11h38

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