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

Macros Access Discussion :

Assigner un vba à un bouton


Sujet :

Macros Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur à la retraite
    Inscrit en
    Avril 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur à la retraite

    Informations forums :
    Inscription : Avril 2015
    Messages : 54
    Points : 28
    Points
    28
    Par défaut Assigner un vba à un bouton
    Bonjour,
    Une question de débutant qui vous fera peut-être sourire.

    Nom : Annotation 2020-06-23 180009.jpg
Affichages : 658
Taille : 24,8 Ko

    J'ai créé une macro dans le module 1
    Sub RechIndiv()
    ..........
    End Sub

    Je voulais le lier à un bouton. Mais dans les propriétés de ce bouton je ne trouve pas la macro RechIndiv à l'évènement simple clic. Par contre je vois bien la macro1

    Nom : Sans titre.png
Affichages : 658
Taille : 48,0 Ko

    Que faire ?
    Merci

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

    En fait tu n'as pas créer une macro telle que définie par Access.

    Une macro en Access est une autre sorte de programmation (qui n'a rien à voir avec VBA) et c'est une spécificité de Access. Autant que je sache c'est le seul produit Office où c'est le cas.

    Ce que tu as créé est une procédure VBA qui en effet ne peut pas directement être assignée à l'événement d'un bouton.

    Tu as 2 solutions (si on excepte créer une "vraie" macro).
    1. Dans la procédure événementielle associée à l'événement Sur Clic.
      Tu mets :

      ou simplement :

    2. Changer ta procédure en fonction.

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      public function Sub RechIndiv()
       ..........
      End function
      Et là je pense que tu vas la voir (ça fait un bout que je ne l'ai pas utilisé) dans la liste ou tu peux simplement taper

      La différence entre une fonction (function) et une procédure (sub) c'est que la fonction peut retourner un résultat à l'appellant mais que la procédure ne retourne jamais de résultat. On ne peut pas écrire uneVariable=MaSub(). Note que la fonction peut mais n'est pas obligée de retourner un résultat.

      En nuançant mon jamais, une procédure (ou une fonction) peut communiquer avec son appellant via les paramètres passés. C'est un mécanisme à utiliser avec précaution et que je recommande d'indiquer clairement en début de procédure (fonction). Personnellement quand je m'en sers je mets toujours comme 1ère ligne 'Attention cette procédure modifie ses paramètres pour que le programmeur qui vient après moi soit averti.


    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.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur à la retraite
    Inscrit en
    Avril 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur à la retraite

    Informations forums :
    Inscription : Avril 2015
    Messages : 54
    Points : 28
    Points
    28
    Par défaut
    Merci pour cette réponse très clair, j'ai réglé mon problème ... ou presque.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Function RechIndiv()
        'Bouton recherche sur saisie individu
        Dim indivar As Variant
        indivar = InputBox("Saisir le numéro d'enregistrement: ")
        DoCmd.OpenForm "F01_T_Individu", acNormal
        DoCmd.FindRecord indivar
    End Function
    Si j'exécute cette macro depuis l'éditeur vba, elle fonctionne correctement. Par contre si je la lance via

    Nom : Annotation 2020-06-23 185440.jpg
Affichages : 609
Taille : 16,5 Ko

    J'ai cette réponse

    Nom : Annotation 2020-06-23 185631.jpg
Affichages : 605
Taille : 35,5 Ko

    Je comprends que j'ai un problème avec findrecord mais je ne comprends pas lequel et pourquoi cela fonctionne dans un cas et pas dans l'autre.
    Un peu d'aide me serait utile
    Merci

  4. #4
    Membre à l'essai Avatar de BAL_pro_18
    Homme Profil pro
    Ingénieur Indépendant
    Inscrit en
    Juin 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur Indépendant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2020
    Messages : 7
    Points : 12
    Points
    12
    Par défaut 4 yeux valent mieux que 2
    Bonjour françois,

    As tu regarder sur la doc microsoft?

    Je pense que tu vas avoir ta réponse dedans.

    cordialement,

  5. #5
    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 ne me sers pas de FindRecord mais je soupçonne que c'est parce qu'elle est "contextuelle" et que quand tu exécutes ton code il doit essayer de l'appliquer sur le formulaire appellant et pas sur l'appelé.

    Je te propose de remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.FindRecord indivar
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call forms![F01_T_Individu].Recordset.FindFirst("[indivar]=" & indivar)
    Là j'ai supposé que ton champ dans le formulaire s'appelle indivar, si ce n'est pas le cas il faut modifier "[indivar]=".

    Forms est la liste des formulaires ouverts présentement.

    Si tu ne souhaites afficher qu'une seule personne tu peux aussi faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "F01_T_Individu", acNormal, , "[indivar]=" & indivar
    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.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur à la retraite
    Inscrit en
    Avril 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur à la retraite

    Informations forums :
    Inscription : Avril 2015
    Messages : 54
    Points : 28
    Points
    28
    Par défaut
    Génial, super sympa, ça fonctionne à merveille
    Bonne journée
    François

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

Discussions similaires

  1. [VBA-E]Bouton useform pour impression
    Par LeSqual dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/04/2006, 21h26
  2. [VBA-E] Bouton fermer d'un userform
    Par alex_95 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/04/2006, 14h15
  3. [VBA-E]Bouton fermer inactif
    Par alex_95 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/03/2006, 13h19
  4. [VBA-E] bouton dynamique avec fonction
    Par ogenki dans le forum Macros et VBA Excel
    Réponses: 38
    Dernier message: 06/02/2006, 12h43
  5. [VBA-E]Bouton et différents workbooks
    Par mirascheat dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/09/2005, 21h51

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