Bonjour,
J'aimerais savoir comment on exécute un module sur simple clique sur un bouton de contrôle dans un formulaire
J'ai trouvé ce code sur le net mais je sais pas ou il faut le mettre
Merci pour votre aideCode:Call "Nomdelaprocédure"
Version imprimable
Bonjour,
J'aimerais savoir comment on exécute un module sur simple clique sur un bouton de contrôle dans un formulaire
J'ai trouvé ce code sur le net mais je sais pas ou il faut le mettre
Merci pour votre aideCode:Call "Nomdelaprocédure"
celine31190
une petite lecture sur les événements s'impose
http://loufab.developpez.com/tutorie...ss/evenements/
bonne lecture
jimbolion
Merci de ton aide, j'ai compris comment il faut faire
Mais dernière question, si j'ai plusieurs modules et que je veux qu'ils fonctionnent tous sur le même clique, je fais comment ?
Bonjour,
Tu mets :
dans le code du bouton.Code:
1
2
3
4 Call Module1 Call Module2 Call Module3 ....
Cordialement
Bonjour Madefemere,
J'ai essayé mais ça ne marche pas
Code:
1
2
3
4
5
6
7
8
9
10 Private Sub Commande0_Click() Call MAJ_DEVIS Call MAJ_IMPLANTATION Call MAJ_MODIF Call MAJ_RENDEZVOUS Call MAJ_RELANCES Call MAJ_SIGNATURE End Sub
Tes MAJ_XXXX sont bien des procédures ?
Tu as une erreur à l'exécution ou qu'est-ce qui se passe?
Je sais pas si procédure veut dire module mais je te met l'exemple du code MAJ_DEVIS
Le message d'erreur est : Erreur de compilation. Variable ou procédure attendue, et non un module.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Function MAJ_DEVIS() On Error GoTo MAJ_devis_Err DoCmd.OpenQuery "MAJ DEVIS", acViewNormal, acEdit DoCmd.OpenQuery "MAJ DEVIS 2", acViewNormal, acEdit MAJ_devis_Exit: Exit Function MAJ_devis_Err: MsgBox Error$ Resume MAJ_devis_Exit End Function
Je suppose donc que je ne peux pas mettre mes modules, je ne sais pas comment faire du coup
Je te conseille la lecture de ce tutoriel pour approfondir tes connaissances sur VBA
Essaie de modifier ta fonction en procédure par :
Code:
1
2
3
4
5
6
7
8
9
10 Public Sub MAJ_DEVIS() On Error GoTo MAJ_devis_Err DoCmd.OpenQuery "MAJ DEVIS", acViewNormal, acEdit DoCmd.OpenQuery "MAJ DEVIS 2", acViewNormal, acEdit MAJ_devis_Exit: Exit Sub MAJ_devis_Err: MsgBox Error$ Resume MAJ_devis_Exit End Sub
Toute mes procédures marchent mais toujours le même message d'erreur que toute a l'heure pourtant il n'y a que des procédures
celine31190
des explications ici :
http://www.developpez.net/forums/d14...ue-non-module/
Ensuite peux tu faire une compilation de ton projet (dans l'éditeur VBA débogage puis compiler). Si une erreur dans la déclaration de ton code est détectée, il devrait s'arrêter automatiquement sur cette partie. Nous pourrons alors progresser et t'expliquer ton erreur.
Non un module (je parle standard) contient des procédures, des fonctions et des déclarations. Et il est important que l'une de tes procédures ou fonctions ne porte pas le nom d'un module. Vérifie également qu'une variable ne porte pas le nom d'une fonction ou d'une procédure...Citation:
Je sais pas si procédure veut dire module mais je te met l'exemple du code MAJ_DEVIS
ici encore un peu de lecture : :pastaper:
http://office.microsoft.com/fr-ca/ac...005186814.aspx
jimbolion
Bonjour jimbolion, madfemere, celine.
Celine, évite de poster des messages concernant le même problème dans deux emplacements différents du forum : on va s'emmêler les pinceaux! J'ai proposé une explication à ton problème dans ton autre discussion.
Il me semble que l'erreur de départ est liée à la manière d'appeler une procédure dans un module sur clic d'un bouton! Comme dit jimbolion, manque de connaissances de base. Et comme on donne à céline des conseils ou des propositions dans deux discussions séparées, si on mélange tout, on n'y arrivera pas!
Cordialement,
RL
Robert,
Je n'avais pas vu ce fil de discussion ouvert par celine31190. A sa décharge, l'objectif n'est pas tout à fait le même à la base sauf sur le dernier point ou effectivement les deux fils se rejoignent
Donc celine31190, clôture l'un des deux posts. ;)
jimbolion
Bonjour a tous et merci de prendre de votre temps pour m'aider,
J'ai réussi a enlever les messages d'erreur et toutes les demandes de confirmation.
Malgré ça, je n'arrive pas a exécuter tout mes modules ou procédures sur le simple clique d'un bouton.
Je vous joint ma base de donnée zippé pour que vous ayez une vue d'ensemble.
Pièce jointe 166565
Cordialement
Bonjour Céline,
Tu fais la confusion dans les objets que tu utilises, c'est pourquoi ça ne marche pas.
Pièce jointe 166568
Comme t'expliquait Robert sur l'autre fil, les modules contiennent les procédures et les fonctions. Et tu ne peux pas avoir le même nom pour différents objets .
Actuellement, tu as des modules qui se nomment MAJ_XXXX et tes fonctions portent les mêmes noms MAJ_XXXX. C'est pourquoi ça ne marche pas.
Il faudrait modifier l'un des noms et appeler les "fonctions" ou "procédures" et non les modules.
Ex: Tu as un module MAJ_DEVIS avec la procédure Sub MAJ_DEVIS() : Ce n'est pas bon.
Tu peux changer le nom de la procédure en Sub MAJ_DEVIS_PROC().
Après dans l'évènement du bouton, tu peux l'appeler par :
Cordialement,Code:
1
2
3
4 .... Call Sub MAJ_DEVIS_PROD .....
Bonjour,
Alors j'ai changé le nom de mes procédures comme vous me l'avez demandé mais il y a encore un problème qui persiste (voir pièce jointe Pièce jointe 166574 ).
Mon code est maintenant enfin j'essaye de le mettre :
Code:
1
2
3
4
5
6
7
8
9
10
11 Private Sub Commande1_Click() Call Sub maj_rendez_vous_PROD Call Sub MAJ_DEVIS_PROD Call Sub MAJ_IMPLANTATION_PROD Call Sub MAJ_MODIF_PROD Call Sub MAJ_RELANCES_PROD Call Sub MAJ_SIGNATURE_PROD End Sub
Oups, errata de ma part, fallait écrire directement le nom de la procédure :
On y arriveCode:
1
2
3.... Call MAJ_DEVIS_PROD .....
Re-,
Maintenant que j'ai enlever tout les "Sub" en trop, quand j'exécute mon module ça me demande quel module je veux effectuer.
(Pièce jointe 166594)
Mon code est maitenant :
Code:
1
2
3
4
5
6
7
8
9
10 Private Sub Commande1_Click() Call maj_rendez_vous_PROD Call MAJ_DEVIS_PROD Call MAJ_IMPLANTATION_PROD Call MAJ_MODIF_PROD Call MAJ_RELANCES_PROD Call MAJ_SIGNATURE_PROD End Sub
Tu lances bien l'évènement Click du bouton de commande Commande1 là?
Parce que la boîte que tu affiches apparait normalement quand tu lances "Exécuter" dans la fenêtre VBA.
Tu peux renvoyer la base dans sa version actuelle stp.
Oui je lance bien mon événement depuis mon bouton qui est dans Formulaire1
Voila ma base de donnée : Pièce jointe 166602
Finalement ça marche niquel.
J'avais pas compris ce que tu me demandé exactement madefemere, mais quand je clique sur le bouton dans le formulaire, ça fonctionne.
Merci a tous pour votre aide si précieuse :)