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

fred.bis Messages postés 13 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
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

--------------------------------------------------------------------------------

4 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
    1. fred.bis Messages postés 13 Statut Membre
       
      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
  2. fred.bis Messages postés 13 Statut Membre
     
    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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
  3. fred.bis Messages postés 13 Statut Membre
     
    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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
    2. fred.bis Messages postés 13 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      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
    3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > fred.bis Messages postés 13 Statut Membre
       
      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
    4. fred.bis Messages postés 13 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      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
    5. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > fred.bis Messages postés 13 Statut Membre
       
      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
  4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
    1. fred.bis Messages postés 13 Statut Membre
       
      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
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > fred.bis Messages postés 13 Statut Membre
         
        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
    2. fred.bis Messages postés 13 Statut Membre
       
      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
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > fred.bis Messages postés 13 Statut Membre
         
        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