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 :

[Fonction]Exporter le résultat d'un calcul d'une zone de texte vers une requête


Sujet :

VBA Access

  1. #1
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 91
    Points : 41
    Points
    41
    Par défaut [Fonction]Exporter le résultat d'un calcul d'une zone de texte vers une requête
    bonjour

    J'essaie de créer une base acces qui permet de calculé le prix d'une référence, beaucoup de paramètre entre en compte (choix d'un cable, de sa longueur, choix des appareils qui se connectent aux deux extrémités de se cable, et le tout avec un prix unitaire variant suivant la quantité). J'aimerais maintenant introduire le choix de monnaie.

    Étant donné qu'à l'origine ce n'est pas moi qui est créer la base et que je découvre ce logiciel j'éprouve beaucoup de difficultés à trouver une solution pour ce problème de choix de monnaie. Voici ce qu'a fait mon prédécésseur dans un module nommé fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Function PT(Q As Integer, L As Single) As Single
    On Error Resume Next   'Une erreur survient dans les calculs ci-dessous lorsque tous les champs ne sont pas remplis
                           'Pour éviter un plantage, les erreurs sont ignorées
     
     
        pt1 = DMin("Prix", "Terminis", "Termini=FChT1() and Quantité<=" & Q)  'Prix unitaire du termini1
        pt2 = DMin("Prix", "Terminis", "Termini=FChT2() and Quantité<=" & Q)  'Prix unitaire du termini2
        PC = DLookup("Cout", "Cables", "Référence=dlookup('Cable','Cable','RefHarnais=FChC()')")  'Prix unitaire pour 1m de câble
     
        Select Case Q
            Case 1 To 2
                F = 2           'F désigne le facteur multiplicatif du prix du câble selon quantité
                i = 3           'I désigne le facteur multiplicatif de la mains d'oeuvre selon quantité
            Case 3 To 4
                F = 2
                i = 2.5
            Case 5 To 9
                F = 2
                i = 2.2
            Case 10 To 24
                F = 2
                i = 2
     
        End Select
     
        PC = PC * L * F      'Prix unitaire du câble'
        MO = 20 * i          'Prix de la main d'oeuvre'
        PT = (pt1 + pt2 + PC + MO) 'Prix total d'un Harnais'
    _________________________________________________________________

    Et voici ce qui se trouve dans la zone de texte qui calcul le prix

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    =PT([Q1];[Longueur]/VraiFaux([Unité]=1;100;1))           Q1 étant une zone de texte, idem pour Q2 etc
    =PT([Q2];[Longueur]/VraiFaux([Unité]=1;100;1))
    =PT([Q3];[Longueur]/VraiFaux([Unité]=1;100;1))
    =PT([Q4];[Longueur]/VraiFaux([Unité]=1;100;1))
    =PT([Q5];[Longueur]/VraiFaux([Unité]=1;100;1))
    =PT([Q6];[Longueur]/VraiFaux([Unité]=1;100;1))
    =PT([Q7];[Longueur]/VraiFaux([Unité]=1;100;1))
    Je veux maintenant intégrer le choix de la monnaix dans ce calcul de prix, j'ai essayer différentes choses (création d'une table monnaie avec une dlokkup dans la fonction pt) mais ça fonctionne pas.

    Avez vous une idée sur la meilleure solution possible pour ce calcul de prix?

    Merci par avance

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    Salut ludovicparis, le forum,

    Si j'ai bien compris ce que tu veux faire, voici ce que je te suggère:
    1- Tu te fais une table de taux de change avec toutes les devises qui sont suceptibles d'être utilisées.
    2- Tu ajoutes une variable dans l'appel de ta fonction qui sera ta devise.

    Ca pourrait donner quelque chose comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Function PT(Q As Integer, L As Single, M as string) As Single
    Ensuite tu ouvre ta table Taux de change (tu peux le faire en DAO)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    set bd=currentdb()
    set tbltauxchange=bd.openrecordset("Taux de change",dbopentable)
    Finalement, tu vas chercher ton taux de change dans ta table et tu l'appliques à ton calcul de prix
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    tbltauxchange.movefirst
    do until tbltauxchange.eof
       if tbltauxchange![Monnaie]=M then
          Txchange=tbltauxchange![Taux de change]
          PC = PC * L * F 'Prix unitaire du câble'
          MO = 20 * i 'Prix de la main d'oeuvre'
          PT = Txchange*(pt1 + pt2 + PC + MO) 'Prix total d'un Harnais'
       else tbltauxchange.movenext
       end if
    loop
    Ta table Taux de change aurait deux champs nommés "Monnaie" et "Taux de change".

    J'espère que ça pourra t'aider.

    Gringo

  3. #3
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    Merci je vais essayer

  4. #4
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    J'ai essayé avec ce que tu m'as dit de faire mais ça ne fonctionne pas et je ne comprend pas pourquoi, je ne connais pas bien access et là ça dépasse de loin mes "compétences".

    Voici ce que j'ai saisie :


    'Q désigne le nombre d'exemplaires du harnais sélectionné
    'L désigne la longeur du câble, en M
    'M désigne le taux de change affecté au prix
    'Pour obtenir de l'aide sur une fonction ACCESS, sélectionner le mot et appuyer sur F1
    Function PT(Q As Integer, L As Single, M As String) As Single

    Set bd = CurrentDb()
    Set tbltauxchange = bd.OpenRecordset("Taux de change", dbOpenTable)

    tbltauxchange.MoveFirst
    Do Until tblMonnaie.EOF
    If tbltauchange![Monnaie] = M Then

    On Error Resume Next 'Une erreur survient dans les calculs ci-dessous lorsque tous les champs ne sont pas remplis
    'Pour éviter un plantage, les erreurs sont ignorées


    pt1 = DMin("Prix", "Terminis", "Termini=FChT1() and Quantité<=" & Q) 'Prix unitaire du termini1
    pt2 = DMin("Prix", "Terminis", "Termini=FChT2() and Quantité<=" & Q) 'Prix unitaire du termini2
    PC = DLookup("Cout", "Cables", "Référence=dlookup('Cable','Cable','RefHarnais=FChC()')") 'Prix unitaire pour 1m de câble

    Select Case Q
    Case 1 To 2
    F = 2 'F désigne le facteur multiplicatif du prix du câble selon quantité
    i = 3 'I désigne le facteur multiplicatif de la mains d'oeuvre selon quantité
    Case 3 To 4
    F = 2
    i = 2.5
    Case 5 To 9
    F = 2
    i = 2.2
    Case 10 To 24
    F = 2
    i = 2
    Case 25 To 49
    F = 1.8
    i = 1.8
    Case 50 To 99
    F = 1.5
    i = 1.7
    Case 100 To 249
    F = 1.5
    i = 1.6
    Case 250 To 1000
    F = 1.3
    i = 1.5
    End Select

    Txchange = tbltauxchange![Taux de change]
    PC = PC * L * F 'Prix unitaire du câble'
    MO = 20 * i 'Prix de la main d'oeuvre'
    PT = Txchange * (pt1 + pt2 + PC + MO) 'Prix total d'un Harnais'

    Else: tblMonnaie.MoveNext

    End If

    Loop

    End Function



    As tu une idée d'où provient mon erreur,

    Bonne journée.

  5. #5
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    J'ai constater que j'avais fait des erreurs lors de la saisie du code, maintenant ma barre de texte prix [[qui exécute la calcul suivant : =PT([Q1];[Longueur];[Monnaie]/VraiFaux([Unité]=1;100;1)) ]] me renvoie comme valeur 0.0, je pense que c'est sans doute une erreur dans la saisie du code mais là encore je ne vois pas où est mon erreur.

    Merci d'avance pour vos réponses.

  6. #6
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    C'est obn j'ai réussi, étant donnée je j'utilisais une zone de texte modifiable pour que l'utilisateur choisisse ça monnaie j'avais juste besoin de'ajouter la variable m dans l'appel de fonction puis d'ajouter le facteur monnaie dans ma zone de texte qui effectuait le calcul.

    Merci à gringo pour pour son aide.

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

Discussions similaires

  1. [AC-97] Afficher résultat de requête dans une zone de texte
    Par paflolo dans le forum IHM
    Réponses: 21
    Dernier message: 28/04/2022, 12h57
  2. [AC-2007] Exporter le résultat d'une requete Acces 2007 vers une cellule sur Excel 2007
    Par wapwinter dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 26/05/2014, 15h17
  3. Exporter le contenu d'une zone de texte vers un doc Word
    Par Serigne-BA dans le forum VBA Word
    Réponses: 18
    Dernier message: 05/09/2013, 02h07
  4. Réponses: 3
    Dernier message: 06/04/2012, 14h31
  5. retarder un calcul d'une zone de texte
    Par ormoy28 dans le forum Access
    Réponses: 8
    Dernier message: 01/02/2006, 01h32

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