Formule de calcul dans une table

Bonjour à tous,

Je suis un peu bloquée sur des calculs que je souhaite mettre en place dans une table de ma BDD.
En effet, j'ai l'habitude de faire les calculs sur Excel, mais côté Access je suis perdue.

J'ai une table qui se nomme TRANSPORT FOURNISSEUR qui a pour but de calculé une incidence du transport que un prix d'achat.
Dans cette table je souhaite effectuer des calculs :

Voici les champs de la table

- numero_frns : numéro auto
- palette_camion : numérique (donnée fixe que je renseigne)
- cout_transport_camion : numérique (donnée fixe que je renseigne)
- cout_transport_camion_compl : donnée calculée ( [cout_transport_camion]/[palette_camion] )
- cout_pal_palette : numérique (donnée que je renseigne)
- cout_transp_pal : donnée calculée ---> et pour celui-ci je bloque :( ! Voici la formule de calcul format Excel que je souhaite appliqué :

=SI(ESTVIDE(cout_pal_palette);cout_transport_camion_compl;SI(ESTVIDE(cout_transport_camion_compl);cout_pal_palette;MOYENNE(cout_transport_camion_compl:cout_pal_palette)))

Est-ce que cela est possible selon vous ?

Je ne sais si tout est clair ! Mais je reste dispo pour donner d'autres indication si besoin.

Merci d'avance pour votre aide !!

Tess

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    bonjour, dans Access, on évitera 'enregistrer dans une table des éléments qu'on peut calculer, on utilisera plutôt une requête pour faire le calcul.
    et les requêtes permettent de faire des calculs et des tests.
    1. on ne peux pas mettre de formule de calcule dans une table mais dans une requete.
      1. Je vous remercie pour votre retour.

        Avez vous une idée de comment je peux le calculer en requête ?

        J'utilise le même langage que sur Excel ?

        Je vous remercie d'avance !
        1. Contributeur
          cela se fait via le langage SQL, rien à voir avec les formules de Excel.
          il faudrait d'abord que tu clarifies "cout_transport_camion_compl:cout_pal_palette".
        2. Merci pour ton aide !

          Alors voici les informations un peu plus clairs je pense :

          Champs utilisé pour le calcul :

          cout_pal_camion_compl
          cout_pal_palette

          Calcul :

          Je souhaite que la moyenne des deux champs soient calculées, toutefois les deux champs ne sont pas toujours remplis. Donc si un des deux est vide il faudra prendre en résultat celui qui est renseigné.

          J'espère que c'est compréhensible.

          Je te remercie encore pour ton aide !

          Tess
        3. Contributeur
          @tess_06exemple de requête:
          SELECT c1, c2, iif(c1 is null, c2, iif (c2 is null,c1,(c1+c2)/2))
          FROM tess;
          
        4. Salut !

          Je te remrecie pour ton aide :)

          Toutefois je n'ai pas réussi, les résultats sont faux, est-ce que tu vois quelque chose qui ne va pas selon toi ?

          SELECT FOURNISSEURS.Nom_fournisseur, [TRANSPORT FOURNISSEURS].palette_camion, [TRANSPORT FOURNISSEURS].cout_transport_camion, [TRANSPORT FOURNISSEURS].cout_pal_palette, [TRANSPORT FOURNISSEURS].cout_pal_camion_compl, IIf(cout_pal_camion_compl Is Null,cout_pal_palette,IIf(cout_pal_palette Is Null,cout_pal_camion_compl, (cout_pal_camion_compl+cout_pal_palette)/cout_pal_palette)) AS Expr1
          FROM FOURNISSEURS INNER JOIN [TRANSPORT FOURNISSEURS] ON FOURNISSEURS.numero_frns = [TRANSPORT FOURNISSEURS].numero_frns;

          Aussi j'en profite pour te poser une autre question, j'ai un calcul qui renvoi parfois comme résultat #nombre ! parce que les éléments ne peuvent pas être calculé. Que dois-je fais pour que la donnée soit 0 s'il ne peut calculer.

          Merci d'avance.

          Tess
        5. Contributeur
          @tess_06"les résultats sont faux", peux-tu être plus factuel? bizarre, toutefois, que tu divises par cout_pal_palette au lieu de diviser par 2 comme dans mon exemple.
          pour l'erreur #nombre, la technique habituelle est d'utiliser le iif, par exemple:
          iif(b = 0, 0, a/b)