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 :

Transformer une formule Excel en Access 2016


Sujet :

Access

  1. #1
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Février 2014
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 304
    Par défaut Transformer une formule Excel en Access 2016
    Bonjour,

    En pièce jointe formule Excel que je voudrais adapter à Excel

    Merci de bien vouloir me renseigner
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    bonjour,
    En pièce jointe formule Excel que je voudrais adapter à Excel
    donc le job est fait
    plus sérieusement, SI c'est comme Vraifaux (Iif) mais PremVrai (Switch) c'est mieux et comme ça autorise jusqu'à 15 comparaisons et avec un minimum d'adaptation cela donne cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PremVrai([Sur_fo]<=5;"5";[Sur_fo]>5 et [Sur_fo]<=10;"10";[Sur_fo]>10 et [Sur_fo]<=20;"20";[Sur_fo]>20 et [Sur_fo]<=50;"50";[Sur_fo]>50 et [Sur_fo]<=75;"75";[Sur_fo]>75 et [Sur_fo]<=100;"100";[Sur_fo]>100 et [Sur_fo]<=150;"150";[Sur_fo]>150 et [Sur_fo]<=200;"200";Vrai;"+200")

  3. #3
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Février 2014
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 304
    Par défaut Formule access
    Bonjour

    J'ai rentré la formule dans le champ suivant sur_fo, je n'ai pu l'enregistrer
    En pièce jointe la formule dans le champ calcule et le message
    Merci de bien vouloir me renseigner

    Merci
    Images attachées Images attachées    

  4. #4
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    En pièce jointe la formule dans le champ calcule
    vous n'aviez pas précisé que c'était pour un champ calculé (dont les possibilités de formules sont très limités, la preuve: ils n'acceptent pas le VraiFaux) que je n'utilise pas car c'est encore une fausse bonne idée de Microsoft, l'exemple que j'ai donné est à utiliser dans une requête.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    [...]c'est encore une fausse bonne idée de Microsoft[...]
    Que ça fait plaisir de lire cela
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Février 2014
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 304
    Par défaut formule Access
    Alors sur un champ calculé que peut on mettre
    merci

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Tu devrais abandonner les champs calculés une fois pour toutes. Les requêtes sont là pour ça. Pourquoi veux-tu absolument utiliser ce qui est en fait une aberration?

    il ne faut JAMAIS utiliser ni les champs calculés, ni les champs multivalués et y préférer respectivement les requêtes (avec champs calculés, c'est une de leurs raisons d'être) et les constructions avec trois tables pour les relations plusieurs à plusieurs...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    Citation Envoyé par Pierre Fauconnier
    Tu devrais abandonner les champs calculés une fois pour toutes. Les requêtes sont là pour ça.
    que ça fait plaisir de lire cela

  9. #9
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Février 2014
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 304
    Par défaut FORMULE ACCESS
    Est ce cela
    Je m'excuse mais je suis débutant
    Merci
    Images attachées Images attachées  

  10. #10
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    non, je dirai que le champ classe ne sert à rien (il faudrait même le supprimer de la table) puisqu'il découle de la valeur du champ sur_Fo, il faut mettre l'expression au niveau Champ, pas au niveau Critères

  11. #11
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Février 2014
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 304
    Par défaut formule access
    Merci pour l'information

    La requête fonctionne parfaitement avec tes informations et une petite modif en fin
    J'ai voulu la compléter avec le rajout ci-dessous mais ne fonctionne pas


    [fonc_ad]"soutien";"0";


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PremVrai([fonc_ad]"soutien";"0";[Sur_fo]<=50000;"5";[Sur_fo]>50000 et [Sur_fo]<=100000;"10";[Sur_fo]>100000 et [Sur_fo]<=200000;"20";[Sur_fo]>200000 et [Sur_fo]<=500000;"50";[Sur_fo]>500000 et [Sur_fo]<=750000;"75";[Sur_fo]>750000 et [Sur_fo]<=1000000;"100";[Sur_fo]>1000000 et [Sur_fo]<=1500000;"150";[Sur_fo]>1500000 et [Sur_fo]<=2000000;"200";[Sur_fo]>2000000 et [Sur_fo]<=3000000;"300";[Sur_fo]>3000000 et [Sur_fo]<=4000000;"400";[Sur_fo]>4000000 et  [Sur_fo]<=5000000;"500";[Sur_fo]>5000000 et [Sur_fo]>5000000;"+500";Vrai;"?")
    Cette formule s'applique à tous les enregistrements, je voulais l'information seulement en cours d'enregistrement d'une ligne !
    Est ce que je peux mettre cette formule dans le formulaire afin quelle s'applique seulement à l'enregistrement en cours

    Merci de vouloir me renseigner

    J'ai essayer de mettre la formule dans source de contrôle du champ classe du formulaire (=.......) j'ai le message "texte trop long"

  12. #12
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    bonjour,
    La requête fonctionne parfaitement avec tes informations et une petite modif en fin
    J'ai voulu la compléter avec le rajout ci-dessous mais ne fonctionne pas


    [fonc_ad]"soutien";"0"
    il manque le signe de comparaison entre [fonc_ad] et "soutien", mais j'opterai pour l'ajout d'un VraiFaux, car le PremVrai teste et renvoie la première expression vraie trouvée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VraiFaux([fonc_ad]="soutien";"0";PremVrai([Sur_fo]<=50000;"5";[Sur_fo]>50000 et [Sur_fo]<=100000;"10";[Sur_fo]>100000 et [Sur_fo]<=200000;"20";[Sur_fo]>200000 et [Sur_fo]<=500000;"50";[Sur_fo]>500000 et [Sur_fo]<=750000;"75";[Sur_fo]>750000 et [Sur_fo]<=1000000;"100";[Sur_fo]>1000000 et [Sur_fo]<=1500000;"150";[Sur_fo]>1500000 et [Sur_fo]<=2000000;"200";[Sur_fo]>2000000 et [Sur_fo]<=3000000;"300";[Sur_fo]>3000000 et [Sur_fo]<=4000000;"400";[Sur_fo]>4000000 et [Sur_fo]<=5000000;"500";[Sur_fo]>5000000 et [Sur_fo]>5000000;"+500";Vrai;"?"))
    Cette formule s'applique à tous les enregistrements, je voulais l'information seulement en cours d'enregistrement d'une ligne !
    désolé, mais on ne peut pas avoir le beurre et l'argent du beurre, ce n'est déjà pas facile de gérer le comportement des enregistrements des formulaires continus si en plus, il faut l'appliquer à un nouvel enregistrement ...

    Vous ne vous rendez pas compte de la difficulté que nous rencontrons lorsque que vous exposez un problème au coup par coup plutôt que de l'exposer complètement dans le détail dès le départ pour rappel, voici votre premier post:
    Citation Envoyé par fergut
    En pièce jointe formule Excel que je voudrais adapter à Excel
    En tant que débutant il faut savoir se contenter des choses simples ...

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Je vais peut-être dire une bêtise, mais je ne comprends pas quatre choses...

    PremVrai([fonc_ad]"soutien";"0";[Sur_fo]<=50000;"5";[Sur_fo]>50000 et [Sur_fo]<=100000;"10";[Sur_fo]>100000 et [Sur_fo]<=200000;"20";[Sur_fo]>200000 et [Sur_fo]<=500000;"50";[Sur_fo]>500000 et [Sur_fo]<=750000;"75";[Sur_fo]>750000 et [Sur_fo]<=1000000;"100";[Sur_fo]>1000000 et [Sur_fo]<=1500000;"150";[Sur_fo]>1500000 et [Sur_fo]<=2000000;"200";[Sur_fo]>2000000 et [Sur_fo]<=3000000;"300";[Sur_fo]>3000000 et [Sur_fo]<=4000000;"400";[Sur_fo]>4000000 et [Sur_fo]<=5000000;"500";[Sur_fo]>5000000 et [Sur_fo]>5000000;"+500";Vrai;"?")

    1. PremVrai permet normalement de se passer, notamment mais pas que, de ce que j'ai mis en gras, car si c'est <= 50000, ça ne saura forcément pas être >...

    2. Ce que j'ai mis en italique est redondant.

    3. Ce que j'ai mis en rouge me semble problématique. Soit du recherches plafonds et tu ne peux avoir ta dernière condition, soit tu recherches des planchers et dans ce cas, tes conditions sont inversées...

    4. On remarque que les plafonds des tranches permettent de renvoyer une valeur égale à 1/10000 plafond. On pourrait donc, soit chercher le plafond (la plus petite des valeurs supérieures à la valeur manipulée puis effectuer le calcul, soit disposer d'une table avec les plafonds et leurs valeurs et travailler sur cette table.


    ==> Je plussoie tte_grandbois... Il serait intéressant que tu expliques en français (sans jargon technique d'Access, de sql ou d'Excel) de dont tu disposes et ce que tu cherches à obtenir.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  14. #14
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    En travaillant sur une table avec Plafond-Valeur, ce qui permet de se détacher de la division, on pourrait avoir ceci comme requête: SELECT valeur FROM tranche WHERE plafond = (SELECT min(plafond) AS Expr1 FROM tranche WHERE plafond>=[Sur_fo])
    Nom : 2020-03-30_145555.png
Affichages : 565
Taille : 3,5 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  15. #15
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Février 2014
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 304
    Par défaut Formule Access
    re
    Si j'enlève fonc_ad]="Soutien";"0"; et la dernière ) - la formule fonctionne, sinon, pas
    Avec 10 00 00 = 10 ou 5 00 01=10 =non inférieur à 5 00 00 alors 10 ok
    Débattez entre vous

    Merci
    Images attachées Images attachées    

  16. #16
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Je ne comprends pas les valeurs que tu utilises dans le champ [sur_fo]. Elles ne correspondent pas à celles que tu as écrites dans ta formule précédente.

    J'ai édité mon avant dernier poste car je ne comprends pas bien le "+500". Soit tu recherches des plafonds (ce que semblait indiquer ta formule de départ), auquel cas tu as forcément un plafond maximum (et donc pas de possibilité de "+500"), soit tu recherches un plancher...

    Tu ne peux normalement pas avoir, dans la même formules, une suite avec les premières inégalités dans un sens et la dernière dans l'autre... autrement dit, tu ne peux pas en même temps chercher des plafonds (sur_fo < 10000, sur_fo < 100000) et un plancher (sur_fo > 5000000).

    Pourrais-tu donc expliquer en français sans jargon Access ou sql ce que tu souhaites réaliser, en illustrant les valeurs réelles (et leur type) que tu utilises dans la table. Sans cela, on n'y arrivera pas.

    D'une façon générale, soit
    • on cherche des planchers de tranche, et alors les planchers sont inclus et les plafonds exclus. Dans ce cas, on a un plancher minimum et pas de plafond pour la dernière tranche: ([10000;50000[, [50000, 250000[, [250000,1000000[, [1000000, +infini[). On voit bien en les mettant bout à bout qu'on a un plage globale englobant le premier plancher sans plafond ([1000, +infini[ )
    • on cherche des plafonds de tranche, et alors les plafonds sont inclus et les planchers exclus. Dans ce cas, on a un plafond maxium et pas de plancher pour la première tranche: (, ]-infini, 50000], ]50000,250000], ]250000,1000000]). On voit bien en les mettant bout à bout qu'on a un plage globale sans plancher englobant le plafond maximum (]-infini, 1000000])
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  17. #17
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    Citation Envoyé par fergut
    Si j'enlève fonc_ad]="Soutien";"0";
    avec le Vraifaux ajouté ou pas VraiFaux([fonc_ad]="soutien";"0";PremVrai([Sur_fo]<=50000;"5";... ?
    Peux-tu poster la formule utilisée dernièrement et qui ne fonctionne pas ?
    Citation Envoyé par Pierre Fauconnier
    tu ne peux normalement pas avoir, dans la même formules, une suite avec les premières inégalités dans un sens et la dernière dans l'autre... autrement dit, tu ne peux pas en même temps chercher des plafonds (sur_fo < 10000, sur_fo < 100000) et un plancher (sur_fo > 5000000).
    à priori, la recherche de plafond/plancher fonctionne avec PremVrai si elle est bien utilisée (testée pendant des années).
    Pour cette partie, je suis d'accord avec toi, même si elle n'est pas bien codée, elle est logique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Sur_fo]>5000000 et [Sur_fo]>5000000;"+500";Vrai;"?")
    le seul souci, c'est que la dernière condition (Vrai,"?") ne sera jamais remplie (sauf, peut-être, en cas de valeur nulle ?)

  18. #18
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Oui, je sais que la formule peut fonctionner, mais je pense qu'il y a un problème d'expression de la demande, et qu'il devrait pouvoir être possible de modéliser la demande avec une requête exprimant les planchers ou plafonds de tranche. Ca aurait l'avantage de ne pas mettre en dur la requête des valeurs métiers qui ne devraient pas s'y trouver, en les plaçant dans une table comme je l'ai illustré. Dès lors, la modification des planchers/Plafonds et/ou des valeurs qui leurs correspondent, ainsi que l'ajout ou le retrait de tranches, intermédiaires ou marginales, se fait côté métier (dans les tables) et pas dans la requête, sans devoir donc la modifier. Cela dit, même avec cette distorsion exprimée dans sa formule, on peut (on doit, je pense) utiliser une table des plafonds, en testant si on dépasse le plafond le plus grand. L'utilisation de cette table permet en plus d'éviter la litanie des conditions.

    Si vraiment on ne peut pas éviter la litanie des conditions dans PremVrai, alors, il faut au moins essayer de limiter les conditions à l'intérieur. Pour cela, voir mon message avec ce que j'ai mis en gras et en italique, car il n'est pas normal, au sein d'un PremVrai, de tester pour une même tranche le plancher ET le plafond ( PremVrai([fonc_ad]"soutien";"0";[Sur_fo]<=50000;"5";[Sur_fo]>50000 et [Sur_fo]<=100000;"10";... => si l'expression en bleu est vérifiée, alors l'expression en rouge ne sert à rien et donc, l'expression des planchers alourdit inutilement la formule)

    De plus, comme tu le dis, la valeur VRAI en fin de formule ne sera jamais retournée.

    C'est pourquoi je demandais à fergut d'exprimer sa demande hors de toute considération technique liée à Access.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  19. #19
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    D'accord avec tout ce que tu avances Pierre, sauf sur ce point précis:
    car il n'est pas normal, au sein d'un PremVrai, de tester pour une même tranche le plancher ET le plafond ( PremVrai([fonc_ad]"soutien";"0";[Sur_fo]<=50000;"5";[Sur_fo]>50000 et [Sur_fo]<=100000;"10";... => si l'expression en bleu est vérifiée, alors l'expression en rouge ne sert à rien et donc, l'expression des planchers alourdit inutilement la formule)
    PremVrai fonctionne comme Select Case: le premier cas trouvé arrête la comparaison, on peut donc s'en servir comme "trancheur":
    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
    Select Case [Sur_fo]
        Case Is <= 50000
        ' renvoie "5"    
        Case 50001 To 100000   
        ' renvoie "10"    
        Case 100001 To 200000   
        ' renvoie "20"    
         Case 200001 To 500000   
       ' renvoie "50"    
         Case 500001 To 750000   
       ' renvoie "75"    
         Case 750001 To 1000000   
       ' renvoie "100" 
    etc...   
        Case Is >= 5000000
       ' renvoie "+500" 
        Case Else
       ' renvoie  "?" si [Sur_fo] est null
    End Select
    à noter qu'en remplacement du plancher/plafond dans la requête [Sur_fo]>50000 et [Sur_fo]<=100000 on peut mettre [Sur_fo] Entre 50001 et 100000 pour que cela soit similaire.

  20. #20
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    [...]
    PremVrai fonctionne comme Select Case[...]
    Merci de me l'apprendre... C'est justement parce que PremVrai fonctionne comme Select Case que j'affirme ce que j'affirme ^^

    Dans mon message précédent, j'ai mis deux conditions en couleur.

    PremVrai([fonc_ad]="soutien";"0";[Sur_fo]<=50000;"5";[Sur_fo]>50000 et [Sur_fo]<=100000;"10";...


    Soit la bleue est respectée et donc, PremVrai ne testera pas la rouge puisque PremVrai s'arrêtera AVANT, soit la bleue n'est pas respectée, et donc la rouge renverra FORCEMENT VRAI => la rouge est inutile.

    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
    Sub test1()
      Dim Value As Long
     
      Value = 58000
      Select Case Value
        Case Is <= 50000
          Debug.Print 5
        Case Is <= 100000
          Debug.Print 10
        Case Is <= 200000
          Debug.Print 20
        Case Else
          Debug.Print "Out of range"
      End Select
     
    End Sub
    Puisque tu as déjà testé si ta valeur est <= 50000, tu n'as pas besoin, à la condition suivante, de tester qu'elle est plus grande que 50000... ^^

    Il n'y a donc pas besoin de réécrire le plancher à exclure, et on peut donc raccourcir la formule et écrire:
    PremVrai([fonc_ad]="soutien";"0";[Sur_fo]<=50000;"5";[Sur_fo]<=100000;"10";[Sur_fo]<=200000;"20";[Sur_fo]<=500000;"50";[Sur_fo]<=750000;"75";[Sur_fo]<=1000000;"100";<=1500000;"150";[Sur_fo]<=2000000;"200";[Sur_fo]<=3000000;"300";[Sur_fo]<=4000000;"400";[Sur_fo]<=5000000;"500";[Sur_fo]>5000000;"+500";FAUX;"?")


    Avec le truc du VRAI final si nulll à tester, mais à mon avis, il ne sert à rien (à voir)

    Dans la formule donnée par fergut dans son message de 10:01, il me semble qu'il manque un signe = entre [fonc_ad] et "soutien".
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. [2008R2] Transformer une formule Excel en SQL
    Par PrinceCorwin dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/06/2014, 07h36
  2. [AC-2007] Comment recuperer une formule EXCEL sur ACCESS?
    Par anthooooony dans le forum Access
    Réponses: 9
    Dernier message: 05/12/2011, 18h25
  3. Transformé une formule Excel en script VBA ?
    Par SFLEY dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 06/01/2007, 11h48
  4. Réponses: 5
    Dernier message: 20/06/2006, 08h24
  5. [debutant] Traduite une formule excel dans access
    Par zelob dans le forum Access
    Réponses: 5
    Dernier message: 25/02/2006, 05h17

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