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

Access Discussion :

VraiFaux Plusieurs Conditions


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 18
    Points : 13
    Points
    13
    Par défaut VraiFaux Plusieurs Conditions
    Bonjour
    Je suis sur ce forum pour demander votre aide. J'essai de créer un champ de calcul vraiFaux mais j'ai une erreur comme quoi ma fonction est trop complexe. Prière m'aider.
    Merci
    voici ma fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Expr1: VraiFaux([montant]<=25000;+250;VraiFaux([montant]<=25001;+450;VraiFaux([montant]<=500001;+600;VraiFaux([montant]<=75001;+800;VraiFaux([montant]<=100001;+1000;VraiFaux([montant]<=125001;+1200;VraiFaux([montant]<=150001;+1500;VraiFaux([montant]<=200001;+1800;VraiFaux([montant]<=250001;+2200;VraiFaux([montant]<=300001;+3000;VraiFaux([montant]<=400001;+4000;VraiFaux([montant]<=500001;+5000;VraiFaux([montant]<=600001;+6000;VraiFaux([montant]<=700001;+7000;VraiFaux([montant]<=800001;+8000;VraiFaux([montant]<=900001;+8500;VraiFaux([montant]>=1000001;[montant]*0,85/100)))))))))))))))))

  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.

    Oui il se peut que tu ais trop de Iif() (VraiFaux) imbriqués.

    Tu pourrais utiliser la fonction SWITCH(Expression, Valeur) (aide ici http://www.techonthenet.com/access/f...ced/switch.php) mais avec une logique complexe cela peut être pénible. Je te suggère d'utiliser une fonction VBA définie par l'utilisateur car c'est généralement plus facile à écrire et à maintenir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public function calculerPrime(prmMontant as double) as double
       dim result as double
     
       select case 
           case <= 25000:result=250
           case <= 50000:result=600
           'Ici les autres cas
           case else
               result=-1000000 'Pour signaer qu'il manque un cas
       end case
     
       calculerPrime=result
    end function
    Attention cela a 2 défauts :
    • Tu ne peux pas utiliser une requête qui utilise une fonction définie par l'utilisateur comme source d'information pour Excel, ou un autre programme externe à Access.
    • Cela peut ralentir le calcul de la requête.


    Accessoirement je pense qu'il y a un bug dans ta définition des tranches 250 et 450. Tu as mis <=25000 et <= 25001 et cela ne me semble pas logique.

    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
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Bonjour

    Je vous remercie pour votre aide. Je ne suis pas trop familier avec le VBA, je vais voir si je peux le mettre en pratique sinon je prend le premier choix. En fait je suis entrain de creer une bd pour gerer une activité de transfert d'argent, donc chaque tranche à ses propres frais, par exemple

    entre 1 et 25 000 (frais de 250)
    entre 25 001 et 50 000 (frais de 450)
    Donc ce que je suis entrain d'essayer de faire c'est d'ajouter automatiquement les frais.
    Merci encore

  4. #4
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    une fois que j'ai créer le code vba, comme je peux l'utiliser?

    Merci

  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
    Comme une fonction classique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TonChamp:CalculerPrime([TaSource].[Montant])
    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
    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
    Pour ton besoin, je recommande une autre solution :

    Une table tblFrais
    Clef
    MontantMin
    MontantMax (pour les tres gros montant mettre 1E18 ou quelque chose du genre comme marge supérieure)
    Frais
    DateDebutFrais (optionnel, si tu veux garder un historique des tes frais)
    DateFinFrais (optionnel, si tu veux garder un historique des tes frais)

    pour trouver les frais ajouter les champs suivant :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    Critere :"#" & Format([TaSource].[TaDateTransfert]; "aaaa\-mm\-jj") & "# between [DateDebutFrais] and [DateFinFrais] and " & [TaSource].[Montant] & " between [MontantMin] and [MontantMax]"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Frais : DFirst("Frais"; "tblFrais"; [Critere])+0
    Tu mets tes tranches dans la table tblFrais et tu vas les chercher en fonction de la date de transaction (si tu as un historique) et du montant.

    Si tu n'as pas d'historique,

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    Critere : [TaSource].[Montant] & " between [MontantMin] and [MontantMax]"

    Utiliser un champ [Criter] permet de faire afficher dans la requête le calcul de Access et de vérifier visuellement si les paramètres de sélection sont corrects. Ce n'est pas indispensable mais j'ai trouvé cela utile pour le débogage.

    L'avantage c'est que si tu changes tes frais ou tes tranches, tu as juste à modifier la table tblFrais au lieu de modifier le code ce qui est généralement plus problématique.

    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.

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Merci, mille merci pour l'aide et le cours. Je vais tout ça en place et vous montrer le résultat.

    Merci encore

Discussions similaires

  1. VraiFaux Plusieurs Conditions
    Par philippesorin dans le forum VBA Access
    Réponses: 4
    Dernier message: 06/02/2007, 18h05
  2. [XSLT] <xsl:if> test sur plusieurs condition
    Par oxilab dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 30/06/2006, 20h30
  3. [SQL] Requete contenant plusieurs conditions
    Par dj-julio dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 17/01/2006, 01h24
  4. Plusieur Condition dans REquette UPDATE
    Par ducseb dans le forum Langage SQL
    Réponses: 12
    Dernier message: 11/08/2005, 11h46
  5. [ Struts ] plusieurs conditions avec equal?
    Par njac dans le forum Struts 1
    Réponses: 7
    Dernier message: 04/06/2004, 09h04

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