Tutoriel réalisé avec Access 2013 (non réalisable sur 2007, utilisez une requête pour les calculs)
Sur Access, vous avez la possibilité de réaliser des calculs comme sur Excel grâce aux champs calculés. Cela sera notamment utile si vous créez vos factures sur ce logiciel.
Pour ce tutoriel, je vais réutiliser la base de données utilisée lors du tutoriel sur les relations entre les tables Access dans lequel j’avais calculé directement le Total HT, la TVA et le Total TTC. J’ai donc supprimé complètement les colonnes après le Prix unitaire.
Je peux insérer un champ calculé dans une table, une requête, un formulaire ou un état.
Créer un champ calculé dans une table
Nous allons d’abord créer ce champ calculé pour une table : la Table Factures.
Je commence par ouvrir la Table Factures et reste dans le Mode Feuille de données. À la colonne la plus à droite, après le Prix unitaire, je peux ajouter des colonnes. Je clique sur la petite flèche du champ Cliquer pour ajouter . Je choisis Champ calculé > Nombre
. Au moment du clic, j’ai une boîte de dialogue qui apparaît : le Générateur d’expression.
En cliquant sur le bouton Plus >> ou Moins << vous pouvez faire apparaître ou disparaître les éléments, les catégories ou les valeurs d’expression.
Mon but pour le champ Total HT étant de multiplier la Quantité par le Prix unitaire, mon calcul doit être Quantité x Prix unitaire. Je double-clique sur Quantité dans les Catégories d’expressions (vous pouvez aussi le saisir directement, mais n’oubliez pas les crochets), puis, j’appuie sur le signe * du clavier numérique ou alphanumérique, et, toujours dans les Catégories d’expressions, je double-clique sur Prix unitaire. Mon expression est terminée, je clique sur Ok. Mon champ se nomme pour l’instant Champ1, je le renomme en Total HT simplement en double-cliquant sur le titre du champ ou en cliquant droit Renommer le champ .
Pour le moment, les totaux ne sont pas dans le même format que le Prix unitaire, mais nous allons le modifier par la suite. Pour l’instant, nous allons faire de même pour les 2 autres champs.
Je clique sur la flèche de la colonne Cliquer pour ajouter, puis Champ calculé > Nombre. Cette fois-ci, je souhaite calculer le montant de la TVA. Je double-clique sur Total HT dans les Catégories d’expressions, j’appuie sur le signe * et saisis 0,196 (qui correspond à 19,6 %). Je clique sur Ok et renomme mon champ en TVA.
Je recommence pour le dernier champ et, dans la boîte de dialogue, pour calculer le montant TTC, je double-clique sur Total HT, saisis le signe + et double-clique sur TVA. Je clique sur Ok et renomme mon champ Total TTC. Maintenant, je vais modifier le format de ces 3 champs en me rendant dans le Mode Création en cliquant sur ou sur la flèche du bouton Affichage > Mode Création
. Je me place sur un des champs et, dans les Propriétés du champ du bas de l’écran, à l’onglet Général, je clique sur la ligne Format pour faire apparaître la flèche du menu déroulant et choisis Monétaire.
Je fais de même pour les 2 autres champs.
Je retourne dans le Mode Feuille de données soit en cliquant sur le bouton Affichage soit sur la flèche du bouton Affichage > Mode Feuille de données
. On me demande si je souhaite enregistrer, je clique sur Oui. J’ai bien mes 3 champs calculés. Si je change une quantité ou un prix unitaire, les champs se calculent automatiquement. Si le taux de TVA venait à changer, il suffirait de cliquer sur le champ TVA, dans l’onglet Champs, et de cliquer sur Modifier l’expression
. La boîte de dialogue du générateur d’expression s’ouvrirait et je pourrais modifier la valeur fixe. Même s’il y a peu de chance que cela arrive, je remplace 0,196 par 0,1 pour 10 % et mon champ Total TTC se met à jour quand je clique sur Ok.
À noter qu’avec les champs calculés dans les tables vous ne pouvez pas calculer des champs provenant d’autres tables contrairement aux requêtes.
Créer un champ calculé dans une requête
Nous allons maintenant créer un champ calculé dans une requête. Je supprime d’abord les 3 champs que je viens de créer pour ne pas avoir quelque chose de brouillon en ayant des doublons, mais vous pouvez bien sûr combiner un champ calculé de table et un champ calculé de requête.
Pour cela, je crée une requête. Je ne rentre pas dans le détail, vous pouvez voir ou revoir le tutoriel sur la création d’une requête Access si vous ne vous en rappelez pas.
Je crée cette requête avec la Table Factures et clique sur chaque champ pour les faire apparaître dans la requête. Puis, je me place sur le premier champ vide à droite et saisis mon expression. Je vais simplement recréer les champs supprimés. À la ligne Champ, j’indique l’expression suivante : Total HT : [Quantité]*[Prix unitaire]
. Ce qui précède les deux-points sera le titre du champ, les deux-points indiquent à Access qu’il s’agit d’un calcul et les crochets indiquent les champs à utiliser. Je m’assure que la case Afficher est cochée et, si je clique sur Exécuter , mon champ est bien créé et calculé.
Je retourne en Mode Création en cliquant sur le bouton ou sur la flèche du bouton Affichage > Mode Création
. Je fais de même pour les 2 autres champs. Je peux utiliser le résultat d’un champ calculé pour calculer un autre champ. La colonne suivante comportera l’expression suivante :
TVA : [Total HT]*0,196
. La colonne qui suit contiendra l’expression : Total TTC : [Total HT]+[TVA]
.
Je peux modifier les valeurs fixes, elles seront mises à jour dans la Table Factures et les champs calculés seront calculés automatiquement.
Créer un champ calculé dans un formulaire
Nous allons maintenant créer un champ calculé dans un formulaire. Pour cela, je crée un formulaire avec la Table Factures. Je ne rentre pas non plus dans le détail, vous pouvez voir ou revoir le tutoriel sur la création d’un formulaire Access si vous ne vous en rappelez pas. Je sélectionne tous les champs de la Table Factures et l’affiche en colonne simple. Je passe ensuite en Mode Création en cliquant sur la flèche du bouton Affichage > Mode Création . J’agrandis la Zone Détail pour pouvoir placer les champs. Dans l’onglet Création, dans les Contrôles, je clique sur Zone de texte
et fais un clic sur la Zone Détail sous le Prix unitaire. Dans le cadre Indépendant, je saisis la même expression que précédemment, mais avec le signe égal(=), ce qui donne
=[Quantité]*[Prix unitaire]
. À la place de Texte13, je saisis Total HT. Je peux modifier mon calcul soit dans le cadre directement soit en allant dans la Feuille de propriétés en cliquant sur le bouton du même nom de l’onglet Création. À l’onglet Données > Source contrôle, j’ai bien mon calcul.
Je vais créer les 2 autres champs en procédant de même. Pour la TVA, dans le champ Texte15, je saisis TVA et, dans le cadre Indépendant, ne pouvant saisir =[Total HT]*0,196
, je vais dans la Feuille de propriétés, dans l’onglet Données, à la ligne de la Source contrôle, je clique sur les 3 points pour faire apparaître le générateur d’expressions. Le résultat du total HT étant sur un champ calculé dans le formulaire, je vais rechercher son nom en fermant la boîte de dialogue et en cliquant sur le cadre du calcul de Total HT. La Feuille de propriétés m’indique Texte13. Je clique donc sur le cadre pour calculer la TVA et retourne dans le générateur d’expression. Je double-clique sur Texte13 dans les Catégories d’expressions. L’expression est donc
=[Texte13]*0,196
. Je clique sur Ok.
Je fais la même chose pour le montant TTC. Je regarde d’abord le nom des éléments, il faudra additionner Texte13 et Texte15. Dans le générateur d’expression, j’indique =[Texte13] + [Texte15]
.
Il ne me reste plus qu’à replacer les champs correctement pour avoir un meilleur visuel. Je retourne ensuite dans le Mode Formulaire en cliquant sur le bouton ou en cliquant sur la flèche puis Mode Formulaire
. Mes calculs sont bons, mais encore une fois le format n’est pas correct. Je retourne donc en Mode Création et je vais cliquer sur chacun des éléments pour aller modifier le Format dans la Feuille de propriétés
, à l’onglet et à la ligne Format, je choisis Monétaire. Pour terminer, je retourne en Mode Formulaire.
Créer un champ calculé dans un état
Pour créer un champ calculé dans un état, vous pouvez faire la même chose qu’avec le formulaire. C’est-à-dire créer l’état (là aussi vous pouvez voir ou revoir le tutoriel sur la création d’un état Access si vous ne vous en rappelez pas), agrandir la Zone Détail et insérer des Zones de texte . Vous saisirez les calculs comme pour le formulaire. Le format pourra être également modifié dans la Feuille de propriétés.
Bonjour Lydia,
J’utilise Access 2007. Dans la colonne la plus à droite, je n’ai pas de petite flèche. Comment puis-je ouvrir le générateur d’expressions ?
Est-ce que vous utilisez Access 2010 ou plus ?
Merci d’avance.
Nicolo
Bonjour Nicolo,
J’utilise la dernière version (2013). Les champs calculés dans les tables n’existent pas sur Access 2007, il faut utiliser une requête.
Bonjour,
Comment se fait-il, alors qu’en utilisant Access 2013, votre vidéo indique Access 2007 dans le haut de l’écran ?
Bonjour,
Par défaut, Access affiche la compatibilité jusqu’à 2007, même si ce n’est pas toujours vrai.
Je voudrais mettre en place une moyenne des champs précédents pour avoir un prix moyen, sachant que le nombre de champs peut varier selon les lignes. Comment faire ?
Dans votre formulaire ou état, il suffit de démarrer le contrôle par =Moyenne + votre champ.
Bonjour Lydia,
J’ai, sur mon état FACTURE, deux pourcentages de TVA 17 et 7. Je voudrais mettre en place sous le total HT deux sous-totaux un pour TVA 17 et l’autre pour TVA 7, ensuite le TTC, comment faire ?
Bonjour Mustaph,
Le mieux est de renseigner la TVA dans la table des tarifs et, sur le formulaire de factures, de créer un contrôle avec pour calcul de n’additionner que les TVA d’un seul taux à chaque fois.
Bonjour Lydia,
J’aimerais savoir comment faire un calcul sur une ligne choisie avec un champ choisi d’une table qui a plusieurs lignes et colonnes.
Bonjour Abdellah,
Ce tutoriel a dû vous aider, car de toute façon une table a toujours plusieurs lignes, dans ce cas, vous pourriez même utiliser le type de champ Champ calculé.
Bonjour Lydia,
Peut-on enregistrer directement le calcul d’un montant TTC depuis un formulaire, dans une table différente ?
Bonjour Thomas,
Il faut que la source du contrôle dans le formulaire soit le champ de la table.
Bonjour,
J’ai un souci concernant les champs calculés dans une table. Ça fait plusieurs fois que j’effectue des tests pour calculer le prix HT total, la TVA et le prix TTC, mais, à chaque fois, j’obtiens des résultats erronés quand il s’agit des multiplications.
Voici, notamment, ce que j’entre pour les calculs du prix total HT :
[QUANTITÉ]*[prix_produit]
Quand j’ai QUANTITÉ qui vaut 1 et prix_produit qui est égal à 9.7€, par exemple, le résultat obtenu… est 6.
Je pense que le problème doit venir de QUANTITÉ, car j’obtiens le même résultat lorsque je fais
[QUANTITÉ]*[tva_produit]
, mais j’ai un résultat exact quand j’entre directement le taux de TVA.Avez-vous une idée pour le calcul du prix total HT ?
Merci d’avance.
Osteomag
Bonjour,
Est-ce que les formats sont corrects ?
Bonjour,
En fait, j’ai trouvé quel était mon problème. J’avais lié ce champ-là à une autre table pour qu’il prenne les choix proposés dessus. Mais du coup, au lieu de prendre en compte le nombre que je voulais dans le calcul, la formule s’effectuait à partir de la clé primaire du produit en question, d’où mes résultats erronés. Mais maintenant, le problème est résolu 🙂
Parfait 🙂
Bonjour,
Dans une table, j’ai plusieurs références produit par catégorie de produit.
Dans une requête, je compte le nombre de produits par catégorie dans [Champ 2] : (regroupement par catégorie, puis Opération « Compte » sur le champ [Produit]).
Je souhaite ajouter un champ calculé dans ma requête : [Champ 3] = 1/[Champ 2]
Problème, mon calcul [Champ 3] ne fonctionne pas, j’ai l’impression qu’il le considère comme un champ texte.
Merci.
Bonjour Stéphane,
C’est surement dû au fait que le Champ 2 ne prend pas le résultat dans la requête, mais sa valeur d’origine : du texte.
Bonjour Lydia,
J’ai des champs calculés pour des ventes de produits (exemple : quantité * prix de vente). Certains prix de produit vont être modifiés, mais je ne veux pas que cela impacte les ventes qui ont été enregistrées dans le passé. Comment puis-je « freezer » les champs calculés pour les ventes déjà enregistrées ?
Merci d’avance pour votre aide !
Arnaud
Bonjour Arnaud,
Il faut conserver les anciens tarifs. Pour les bases de données que je crée, j’ajoute un champ « Date d’application » et « Dernier tarif en date (case à cocher). Lorsqu’un tarif est modifié ou ajouté, je l’ajoute à la suite de la table des tarifs. Puis, dans mon formulaire de saisie de factures, je n’affiche dans mon menu déroulant pour choisir un produit que les valeurs cochées (tarif en vigueur). Ce qui permet de ne pas impacter les anciennes factures et de ne pouvoir choisir un tarif uniquement s’il est d’actualité.
Bonjour Lydia,
J’ai créé un état qui demande à l’utilisateur d’entrer un critère (une date) avant de l’ouvrir et je voudrais mettre en place dans cet état un champ qui récupère automatiquement la valeur du critère.
Merci d’avance pour votre aide.
Sahar
Bonjour Sahar,
Il faudrait écrire dans un contrôle vierge « = » + « le nom du champ avec la date ».
Bonjour Lydia,
Je souhaite faire un calcul automatique avec choix qui corresponde à l’augmentation du prix de base.
Exemple :
Mon prix de base est de 1,40 €, je valide avec la case à cocher Oui/Non pour additionner 20 % de plus sur le prix de base, mais je peux avoir 5 cases à cocher ou 1 seule, cela dépend de la prestation.
Pouvez-vous m’aider, je n’arrive pas à le faire ?
Merci beaucoup de votre soutien.
Cordialement,
Christine
Bonjour,
Il faut utiliser la fonction iif (si sur Excel) avec des and, mais si le prix varie en fonction des 5 cases qu’il est possible de cocher, il faudra beaucoup de combinaisons.
Personnellement, je mettrais un champ pour chaque case qui, si la case est cochée, affiche un prix (le champ peut être masqué, peu importe) et ensuite je mettrais un total qui reprend l’addition de tous ces champs.
Bonjour Lydia,
Merci pour votre retour, mais cette fonction je souhaite la faire sur Access.
Je souhaite faire un formulaire avec 5 cases à cocher et, lorsque les cases sont cochées, cela augmente le prix de 20 %.
Merci d’avance de votre soutien.
Cordialement,
Christine
Bonjour Christine,
J’ai bien compris, d’où ma suggestion.
Ton tuto m’a beaucoup aidé ! Merci ^_^
Bonjour,
Pourriez-vous me dire comment faire pour arrondir ma somme à 5 centimes ?
J’ai essayé avec
=Round;1
, mais ça n’arrondit pas correctement.Merci pour votre réponse.
Bonjour,
Je viens d’essayer cet exemple et ça fonctionne :
=Round([Quantite]*[Prix_unitaire]*0,33;1)
.Sachant que si c’est au-dessus de 0.5, ce sera arrondi à l’euro supérieur.
Bonjour,
Oui, ça j’ai réussi, mais je voulais vraiment que, quand c’est 15.66 ce soit arrondi à 15.65 et que 15.68 soit à 15.70…
Mais, apparemment, ce n’est pas possible…
Merci pour votre aide.
Bonjour,
Pour l’état, je n’ai pas réussi à calculer le total hors taxe. Quand je remplace =Somme([Prix unitaire]) par =Somme([texte31]) et que je veux mettre en mode feuille, il me demande une valeur de paramètre pour le texte31.
Bonjour,
Est-ce que texte31 fait partie de votre table ? Car si ce champ n’est pas dans la source de l’état, ça vous demandera une valeur de paramètre.
En fait, le texte31 correspond au calcul : Quantité*Prix unitaire. En voulant remplacer Quantité*Prix unitaire par texte31, qui correspond à cette case, il me demande la valeur de paramètre.
Finalement, j’ai mis directement le calcul dans l’état et ça a fonctionné.
Voici ce que ça donne :
=Somme(([Quantité]*[Prix unitaire])+([Quantité]*[Prix unitaire]*0,196))
Merci pour votre retour.
Bonjour Lydia,
Comment calculer le total HT pour chaque mois ?
Bien cordialement.
Bonjour Mamadou,
Il faudrait faire une requête avec regroupement.
Bonjour,
J’ai récupéré une ancienne BDD et je voudrais ajouter, dans un de mes états, un N° de facture, type NumAuto. Le hic, c’est qu’il ne figure pas dans la table concernée et, pour m’éviter de tout refaire (table, formulaires…), je souhaiterais savoir s’il est possible d’en rajouter un directement ou via la requête dont dépend l’état.
Merci,
Cordialement.
Stéphane
Bonjour Stéphane,
Lorsque vous ajoutez un champ dans une table, il n’est pas nécessaire de recommencer les formulaires et états qui en découlent. Une fois le champ ajouté à la table, vous allez dans le formulaire ou l’état en Mode création et, dans l’onglet Création, vous cliquez sur Ajouter des champs existants. Si le champ n’est pas visible, c’est que votre formulaire ou état est basé sur une requête. Dans ce cas, ajoutez d’abord le champ dans la requête.
Bonjour,
OK pour les champs à rajouter aux tables et formulaires.
Je me suis mal exprimé. Ici, je veux ajouter à mon état, un numéro de facture qui ne soit pas une clé primaire, mais qui s’incrémente de façon à garder une suite « parfaite » à chaque émission de facture.
Merci.
Dans ce cas, il faut créer un module comme ici.
Oui, mais, si je le crée à partir d’un champ indépendant, il ne sera pas enregistré ? De plus, je souhaite simplement insérer un nombre, mais à 5 ou 6 chiffres… Idéalement, j’aimerais, quand je vais éditer mon état, pouvoir lui attribuer un numéro qui s’incrémente automatiquement. Je sais qu’en général on prévoit le numéro de facture lors de l’élaboration d’une commande par exemple. Mon cas est complexe, il s’agit de clients ayant 1 ou plusieurs chantiers sur lesquels des sous-traitants réalisent des prestations. Le problème, c’est que la facturation est complètement floue. Elle peut être mensuelle, trimestrielle, à la demande, en supplément, début de mois, fin de mois, etc. D’où mon souhait d’émettre une facture à partir de ma base de données (complexe) et d’attribuer un numéro une fois la facture émise. Pas simple.
Ce que j’ai créé pour ma base de données personnelle, c’est un bouton « Créer une facture » dans mon formulaire de facturation (où je crée les éléments composant la facture) qui appelle le module présenté précédemment. Voici le code que j’utilise sur clic du bouton (Numero_facture étant mon champ de numéro de facture qui existe dans ma table donc c’est bien enregistré) :
If IsNull(Me.Numero_facture) Then
Me.Numero_facture = AutoNumber("T_Factures_VotreAssistante", "Numero_facture", "[YYYY][MM][DD]", 1)
End If
Bonsoir Lydia,
Voilà, pour mon devoir de Gestion Système d’information (BTS AG ^^), on me demande ceci : « on souhaite connaître la durée des emprunts des ouvrages de la médiathèque, quelle modification doit-on apporter à la BDD ? »
La BDD est composée d’une table emprunt qui contient les champs : num_lect (lecteurs) ; num_ouvrage (ouvrage) et le champ date_emprunt.
Pour l’instant, il est donc impossible de savoir la durée d’un emprunt. Du coup, j’ai répondu qu’il fallait rajouter un champ « dateretour_emprunt » et je me suis dit pourquoi pas rajouter un champ calculé dans la table pour pouvoir avoir la durée en jours entre ces 2 dates. Cependant, je ne trouve pas l’expression adéquate pour le faire :(, car le générateur d’expression me dit que la fonction DATEDIFF ne peut pas être utilisée ici. Après, je sais que je pourrais faire une requête et ça règlerait le problème, mais j’aimerais bien savoir pour mettre ce résultat dans la table ^^.
Merci à toi pour ton aide.
Justine
Bonjour Justine,
Malheureusement, tous les types de calcul ne fonctionnent pas dans un champ calculé et Datediff en fait partie. Il faut donc passer par une requête comme ici.
La seule chose qui fonctionnerait serait de mettre un champ Date du jour avec une valeur par défaut Date() et, dans ce cas, on ferait Date du jour – Date de retour dans un autre champ, mais cela créerait un champ « inutile » (celui de la date du jour) et qui ne mettrait la date du jour que le jour de création de l’enregistrement donc il est vraiment préférable de passer par une requête qui serait parfaitement dynamique.
Bonjour Lydia,
Encore un tuto superbe et très utile pour mon cas. J’ai toutefois une petite problématique :
J’ai une table avec plusieurs champs à additionner par enregistrement et cela fonctionne très bien dans une requête. Par contre, j’aimerais pouvoir afficher dans une requête le total additionné d’une colonne.
Je m’explique : j’ai une ligne avec Achat matériel, Achat Prestation et Achat Transport. Grâce à votre tuto, j’ai pu facilement faire le total des achats par ligne.
Par contre, j’ai une requête qui fait ce total par ligne et sur une période donnée (mois de février par exemple) et celle-ci fonctionne parfaitement. J’aimerais savoir s’il est possible d’avoir le total de la colonne Achat directement dans la requête (tous les achats faits en février) et non pas juste un total en mode feuille de données.
J’espère avoir été clair et je vous remercie de votre aide.
Bonjour Sébastien,
Il faudrait passer par 2 requêtes (l’une qui additionne et l’autre qui reprend le nom du champ contenant le résultat pour en faire un regroupement par somme), mais je vous conseille plutôt de passer par un formulaire où il vous suffira de mettre les champs « additionnés » dans la partie détails et le total (somme) dans le pied.
Bonjour,
Merci beaucoup et cela fonctionne très bien.
Merci encore.
Bonjour Lydia,
Merci beaucoup pour le tuto, je veux seulement savoir comment peut-on avoir le Total TTC sur un autre Formulaire qui sert à suivre les paiements des clients.
Plus de détails :
Dans le cas où le paiement sera partiel (en 2 ou 3 fois), j’ai créé une nouvelle table (T_Paiement : ID_Client, Vers1, Vers2…) et je veux avoir le Total TTC (du Formulaire F_Client) et après je peux calculer le reste à payer dans un nouveau champ.
Donc mon problème est : comment je peux avoir le total TTC sur le nouveau formulaire F_Paiement ?
Merci d’avance.
Bonjour Khaled,
C’est exactement ce que j’ai créé récemment pour une cliente. J’ai inséré le sous-formulaire des paiements dans le formulaire Clients. Ce sous-formulaire contient un champ total que je récupère sur le formulaire principal avec un contrôle indépendant dont la source est
=[SF].[Formulaire]![Total]
. Il ne me reste ensuite qu’à créer un autre champ indépendant avec pour source=[Montant_TTC]-[Champprecedent]
(le Montant TTC se trouvant dans le formulaire principal).Bonjour Lydia,
Merci beaucoup pour votre réponse, je vais essayer ça et je vous tiendrais au courant du résultat, merci encore une fois.
Bonsoir Lydia,
Ça n’a pas marché chez moi (il m’affiche le message d’erreur #Nom ?), pouvez-vous m’éclairer sur ce point ?
Merci d’avance.
Bonjour Khaled,
Vos noms de champs sont-ils les mêmes que les miens ?
Bonjour Lydia
Oui, j’ai les mêmes noms de champs que les vôtres, comme suit :
F_Client, SF_Date_Facture, SF_Facture.
Total_TTC est un champ dans SF_Facture
SF_Facture est un sous-formulaire dans SF_Date_Facture.
SF_Date_Facture est un sous-formulaire dans F_Client.
Après, j’ai créé un nouveau sous-formulaire SF_Paiement (dans le formulaire F_Client) dans lequel j’ai inséré un champ Total_à_Payer.
Je voudrais que ce nouveau champ (Total_à_Payer) me récupère le montant qui est dans le champ (Total_TTC), malheureusement, je n’arrive pas à écrire ma formule correctement.
J’espère que j’ai bien expliqué mon problème et je vous remercie toujours pour vos réponses et votre aide.
Bonjour Khaled,
Ce ne sont pas les mêmes champs (pas le même tuto).
L’erreur #Nom ? apparaît lorsque le total n’est pas dans le pied de formulaire.
Justement, il est dans le pied de formulaire, merci quand même.
Je viens de trouver la syntaxe :
=[Formulaires].[F_Factures_VotreAssistante].[S_F_Factures_VotreAssistante].[Formulaire].[S_F_Factures_details_VotreAssistante].[Formulaire].[Acompte_verse]
Dans cet exemple, il y a le formulaire principal, puis le 1er sous-formulaire et enfin le second où se trouve le champ Acompte_verse.
Ensuite, il faudra mettre un
.Requery
du formulaire qui récupère cette valeur, car il ne l’a récupèrera pas seul (pas eu le temps de rechercher l’évènement approprié, mais sinon, avec un clic de bouton, ça marche).Bonjour,
Avec Access 2007, je souhaiterais, dans une table, avoir un champ « Âge » qui se remplit automatiquement d’après le champ « Date de naissance » sans passer par la requête. Access 2007 n’accepte pas les champs calculés !
Merci de votre réponse.
Bonjour,
Malheureusement, il n’y a pas de solution à part passer au moins à la version 2010.
Bonjour Lydia,
D’abord merci pour vos tutos…
J’ai un champ calculé sur un sous-formulaire de forme tabulaire, le problème c’est que le calcul s’affiche uniquement pour le premier enregistrement…
Bonjour Halim,
Dans le tutoriel de création de factures Access, j’ai mis un champ calculé (seulement dans le formulaire, ce n’est pas un champ de table). Essayez de faire comme ça et/ou regardez si ce n’est pas le mode tabulaire qui empêche de fonctionner.
Bonjour Lydia,
Je décompose mes factures par poste et, du coup, j’aimerais faire un champ calculé avec une table poste qui additionne tous les postes dans le formulaire facture, est-ce « accessible » avec les champs calculés ?
Merci 😉
Bonjour Henry,
Vous ne pouvez faire des calculs avec les champs calculés que pour l’enregistrement en cours et, de toute façon, s’il n’y a pas d’impératif pour que le résultat du calcul soit dans une table, vous pouvez faire le calcul « à la volée » sur le formulaire en question en vous inspirant du total dans ce tutoriel.
Bonjour,
J’aimerais savoir s’il est possible de faire une requête de calcul entre des données qui sont dans des tables différentes ou s’il y a un autre moyen de le faire.
Merci d’avance.
Bonjour Maxence,
Non, ce n’est pas possible. Toutefois, je ne conseille plus d’utiliser les champs calculés (cela alourdit la BDD inutilement à force de stocker des résultats qui pourraient être obtenus seulement quand c’est nécessaire), mais d’utiliser les calculs directement dans les formulaires et les états (à la volée). Cette façon de faire vous permettra de calculer entre les tables et c’est compatible avec Access 2007 si besoin.
Bonjour Lydia,
Je suis très intéressé avec vos tutos.
J’ai quand même une préoccupation qui est la suivante : comment repartir de zéro la numérotation auto dans une table ou état ? Merci d’avance. Bon début de la semaine.
Bonjour Joseph,
On ne repart de zéro que dans une table puisqu’un état récupère les données d’une table : comment remettre à zéro un Numéroauto Access.
Bonne semaine.
Dans un état, si je veux avoir le total d’une colonne, comment je peux l’ajouter à un état existant ?
Bonjour Anne…
Bonjour
Il faut placer le champ indépendant dans le pied état et non pied de page avec le calcul d’origine. C’est-à-dire que même si vous avez un champ calculé avec le total dans la partie détail avec par exemple =Quantité *Prix_unitaire, dans le total de l’état, c’est =Somme(Quantité*Prix_unitaire) qu’il faudra écrire.
À lire ce texte et à regarder cette vidéo, on peut croire que c’est simple. Mais il existe des cas traumatisants. Par exemple, comment calculer les intérêts mensuels à partir d’une date donnée, puis faire afficher le solde restant au fur et à mesure que les paiements sont faits ? C’est un véritable casse-tête pour moi.
Utilisez des champs calculés dans les formulaires et états.
Bonjour Lydia,
Merci pour vos explications très claires et précises, j’aurais besoin de vos compétences :
Dans une requête Access, je fais une moyenne du prix d’un certain nombre de produits dans un champ calculé [MoyPrixProd] et je souhaiterais, dans la même requête, faire apparaître les produits dont le prix est supérieur au prix moyen.
Quand je lance la requête, une fenêtre me demande d’entrer le prix moyen [MoyPrixProd].
Si je renseigne le prix moyen, la requête fonctionne, mais j’ai besoin que le prix moyen soit fourni automatiquement, car il est dépendant de la variation des prix des produits.
J’espère avoir été clair, mais bon, pas sûr…
Cordialement,
Jef
Bonjour Jef,
Je ne pense pas que vous obtiendrez les 2 résultats dans la même requête. Je ne sais pas si vous tenez absolument à faire une requête, mais, au plus simple, je créerais un formulaire avec un champ pour la moyenne dans le pied et ensuite je mettrais une mise en forme conditionnelle conditionnée par le fait d’être supérieur à ce champ.