Help pr un code vba rattaché a un bouton dans un formulaire

Fermé
fred.bis Messages postés 11 Date d'inscription mercredi 5 juillet 2017 Statut Membre Dernière intervention 6 juillet 2017 - Modifié le 5 juil. 2017 à 09:32
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 - 6 juil. 2017 à 17:08
Bonjour,

Je suis un peu novice en matière de programmation de macro, mais j'essaye de m'y intéresser et de comprendre.
Je souhaiterais avoir quelques notions pour creer un code vba qui sera rattaché a un bouton ( qui se trouve dans un formulaire que jai deja crée sur access) est qui contient :
une zone pour remplir le code ptf voulu
une zone pour la date
et une zone pour le montant
cest 3 donnees je vais les remplir a chaque fois et tout en bas jai mis un bouton appelé ( lancer) qui contient un code vba ce code me permettra de recupere des coef dans une requettes access requete que j'appel grace au code vba
DoCmd.OpenQuery "ma_requete"

( chaque coef est rattaché a un produit ( il y en a 2 appelé A et B a chaque fois ). apres avoir remplis le montant voulu des qu'on appuie sur lancer je voudrai que ca me calcul montant * coef puis le mettre dans les zones voulu appelé A et B .

pour un code_ptf le coef est le meme pour tout les produits A exemple 85% et pareil pour le produit B 15%


je vous remercie par avance de votre aide





--------------------------------------------------------------------------------
A voir également:

4 réponses

yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 Ambassadeur 1 556
5 juil. 2017 à 09:55
bonjour,
ta requete sera sans doute
SELECT produit, coef from tableproduit WHERE produit = "A" or produit = "B"

ton code serait quelque-chose comme:
sSQL = "SELECT produit, coef from tableproduit WHERE produit = 'A' or produit = 'B'"
Dim rs As DAO Recordset
Set rs = CurrentDB.OpenRecordset(sSQL)
Do While Not rs.EOF
    select case rs!produit
        case "A"
            Me!coeff_A=rs!coef
        case "B"
            Me!coeff_B=rs!coef
    end select
    rs.MoveNext
Loop
1
fred.bis Messages postés 11 Date d'inscription mercredi 5 juillet 2017 Statut Membre Dernière intervention 6 juillet 2017
5 juil. 2017 à 10:05
merci beaucoup pour ta reponse mais ca me fait erreur quand je le mets dans ma macro ILS ME METTENT ERREUR DE COMPILATION ET la 1 er partie jusqua DIM RS est en rouge
0
fred.bis Messages postés 11 Date d'inscription mercredi 5 juillet 2017 Statut Membre Dernière intervention 6 juillet 2017
5 juil. 2017 à 10:48
voila ce que jai mis mais malgré tout ca ne marche pas et on me mets en rouge de sSQL et dim


Private Sub lancer_calcul_Click()
DoCmd.OpenQuery "HR/L"
sSQL = "SELECT CODE_PART, COEFFICIENT_PART from HR/L WHERE CODE_PART = "A" or CODE_PART = "B""
Dim rs As DAO Recordset
Set rs = CurrentDb.OpenRecordset(sSQL)
Do While Not rs.EOF
Select Case rs!produit
Case "A"
Me!COEFFICIENT_PART_A = rs!COEFFICIENT_PART
Case "B"
Me!COEFFICIENT_PART_B = rs!COEFFICIENT_PART
End Select
rs.MoveNext
Loop
0
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 1 556
5 juil. 2017 à 14:19
et ainsi?
Option Explicit
Private Sub lancer_calcul_Click()
'DoCmd.OpenQuery "HR/L"
sSQL = "SELECT CODE_PART, COEFFICIENT_PART from HR/L WHERE CODE_PART = 'A' or CODE_PART = 'B'"
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset(sSQL)
Do While Not rs.EOF
Select Case rs!produit
Case "A"
Me!COEFFICIENT_PART_A = rs!COEFFICIENT_PART
Case "B"
Me!COEFFICIENT_PART_B = rs!COEFFICIENT_PART
End Select
rs.MoveNext
Loop
0
fred.bis Messages postés 11 Date d'inscription mercredi 5 juillet 2017 Statut Membre Dernière intervention 6 juillet 2017
5 juil. 2017 à 14:23
EN FAITE JAI RAJOUTé [HR/L] il ny a plus de message d'erreur mais ca fait que ouvrir ma requete sans aucun calcul
0
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 1 556
5 juil. 2017 à 14:59
et ainsi?
Option Explicit
Private Sub lancer_calcul_Click()
Dim sSQL as string
Dim rs As DAO.Recordset
sSQL = "SELECT CODE_PART, COEFFICIENT_PART from HR/L WHERE CODE_PART = 'A' or CODE_PART = 'B'"
DoCmd.OpenQuery sSQL
Set rs = CurrentDb.OpenRecordset(sSQL)
Do While Not rs.EOF
Select Case rs!CODE_PART
Case "A"
Me!A = rs!COEFFICIENT_PART * Me!montant
Case "B"
Me!B = rs!COEFFICIENT_PART * Me!montant
End Select
rs.MoveNext
Loop
0
fred.bis Messages postés 11 Date d'inscription mercredi 5 juillet 2017 Statut Membre Dernière intervention 6 juillet 2017 > yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024
Modifié le 6 juil. 2017 à 10:26
jai modifier la methode la methode jai crée 2 requete ( requete 1 et requete 2) avec des champs calculé

la je dois juste trouver le bon code vba qui me permetra d'appelé le resultat de la requete 1 dans la zone 1 du formulaire et le resultat de la requete 2 dans une zone du formulaire .en gros quand j'appuie sur le bouton il me recupere juste les calculs deja fait dans mes requetes et les mets dans le formulaire

merci d'avance pour votre aide
0
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 1 556 > fred.bis Messages postés 11 Date d'inscription mercredi 5 juillet 2017 Statut Membre Dernière intervention 6 juillet 2017
6 juil. 2017 à 12:42
c'est ce que fait ma suggestion en #6 (si tu supprimes la ligne docmd, qui te permet de facilement vérifier si la requête est correcte).
0
fred.bis Messages postés 11 Date d'inscription mercredi 5 juillet 2017 Statut Membre Dernière intervention 6 juillet 2017 > yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024
6 juil. 2017 à 13:10
j'ai fais ce que vous m'avez dis il n'y a aucun changement ca ne fait que ouvrir ma requete .

la jai fais le calcul dans un champ calculé je dois juste appelé le resultat dans le formulaire
0
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 1 556 > fred.bis Messages postés 11 Date d'inscription mercredi 5 juillet 2017 Statut Membre Dernière intervention 6 juillet 2017
Modifié le 6 juil. 2017 à 14:29
ce genre d'instruction enregistre une valeur récupérée d'une requête dans la zone A du formulaire:
Me!A.Value = rs!COEFFICIENT_PART * Me!montant
0
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 Ambassadeur 1 556
6 juil. 2017 à 14:53
suggestion:
Option Explicit
Private Sub lancer_calcul_Click()
Dim sSQL as string
Dim rs As DAO.Recordset
sSQL = "SELECT CODE_PART, COEFFICIENT_PART from HR/L WHERE CODE_PART = 'A' or CODE_PART = 'B'"
'DoCmd.OpenQuery sSQL
Set rs = CurrentDb.OpenRecordset(sSQL)
Do While Not rs.EOF
Select Case rs!CODE_PART
Case "A"
Me!A.Value = rs!COEFFICIENT_PART * Me!montant
Case "B"
Me!B.Value = rs!COEFFICIENT_PART * Me!montant
End Select
rs.MoveNext
Loop

si cela ne fait rien, retire le commentaire en début de ligne "docmd", et décris ce qui est affiché par la requête.
0
fred.bis Messages postés 11 Date d'inscription mercredi 5 juillet 2017 Statut Membre Dernière intervention 6 juillet 2017
6 juil. 2017 à 14:59
ce code m'ouvre juste la requete sans aucun resultat mais pour le calcul il est deja fais dans mon champs je dois juste le recuperé et l'affiché dans mon formulaire et ce code ouvre ma requete et sans calcul sans rien meme les calcule que jai fais dans mon champs calculé
0
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 1 556 > fred.bis Messages postés 11 Date d'inscription mercredi 5 juillet 2017 Statut Membre Dernière intervention 6 juillet 2017
6 juil. 2017 à 15:28
il serait peut-être utile que tu partages la technique que tu utilises pour ton calcul (pour obtenir "ton champs"), ne penses-tu pas?
si le code que je suggère n'affiche aucun résultat (quand il exécute docmd), alors il faut adapter la requête dans ce code.
0
fred.bis Messages postés 11 Date d'inscription mercredi 5 juillet 2017 Statut Membre Dernière intervention 6 juillet 2017
6 juil. 2017 à 15:35
je crée une requete avec le code_ptf , le code_part, la date et jai rajouté un champs pour le calcul où jai mis le resultat=[COEFFICIENT_PART]*[Formulaires]![Formulaire1]![TEXTE2]/100

le[texte2] cest la case où je remplis mon montant

APRES jecris le montant que je veux dans mon formulaire puis je raffraichei ma requete et elle me donne comme resultat le montant pour chaque produit .

mais ca ne s'affiche pas dans mon formulaire que dans la requete .sauf que je voudrai que ca s'affiche dans mon formulaire quand jappuie sur le bouton
0
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 1 556 > fred.bis Messages postés 11 Date d'inscription mercredi 5 juillet 2017 Statut Membre Dernière intervention 6 juillet 2017
6 juil. 2017 à 17:08
on progresse, je sais maintenant que le montant est dans [TEXTE2] et doit être divisé par 100. j'ai adapté le code ci-dessous en tenant compte de cela.
Option Explicit
Private Sub lancer_calcul_Click()
Dim sSQL as string
Dim rs As DAO.Recordset
sSQL = "SELECT CODE_PART, COEFFICIENT_PART from HR/L WHERE CODE_PART = 'A' or CODE_PART = 'B'"
'DoCmd.OpenQuery sSQL
Set rs = CurrentDb.OpenRecordset(sSQL)
Do While Not rs.EOF
Select Case rs!CODE_PART
Case "A"
Me!A.Value = rs!COEFFICIENT_PART * Me![TEXTE2] / 100
Case "B"
Me!B.Value = rs!COEFFICIENT_PART * Me![TEXTE2] / 100
End Select
rs.MoveNext
Loop

peux-tu maintenant partager le code SQL de ta requete?
0