ACCESS mise à jour de table - Logiciels - Windows & Software
Marsh Posté le 22-10-2010 à 15:13:53
Logique.
Si tu mets =[PrixAchat]*1.4 ca veut dire que =[PrixAchat]*1.4 est ta source de données. Or, toi ce que tu veux, c'est non seulement faire le calcul, mais en plus le stocker dans la table.
Donc il faut que la source de données de ton controle soit ton champ PrixEntreprise
Pour faire le calcul, plusieurs méthodes :
- Macro de type Excel4. Avantage c'est de la "programmation" en Francais et c'est tres assisté. Inconvenient, sur de gros traitement ca montre des limites
- VBA. Avantage, on peut tout attaquer de la suite Office. Inconvenient, c'est du VBA
- Requetes mise a jour. Avantage, ca te fera comprendre comment fonctionne un SGBD. Mais dans ton exemple, tres simple, aucun interet. Vois plus les requetes pour effectuer ton calcul sur tous tes enregistrements. Inconvenient, faut maitriser un petit peu les SGBD, meme Access et en plus, pour pouvoir les lancer, il faut soit utiliser des Macros, soit du VBA, soit ta petite main mais l'automatisation n'est plus de mise.
La requete serait interressante pour qu'une fois que tu as tout saisi, qu'il te fasse le calcul pour tous tes enregistrements. Mais je doute que ce soit cette solution la plus pertinente avec ton exemple.
1 Sur ton controle PrixEntreprise, click droit, propriété.
2 Ton formulaire doit etre basé sur une table, donc dans la fenetre "Feuille de propriété", tu vas sur l'onglet "Données", zone "Source controle", tu pioches le champ PrixEntreprise de ta table
3 Idem pour PrixParticulier
En macro :
4 Sur le controle du champ PrixAchat, tu vas sur l'onglet "Evenements', tu click sur les "..." de la zone "Après mise a jour"
5 Une boite de dialogue apparait, tu sélectionnes "Generateur de Macro"
6 Une nouvelle fenetre de Macro apparait. Dans le ruban tu click sur "Nom de macro" pour faire apparaitre cette colonne
7 Nom de Macro : MajApPrixAchat
7-1 Action : DéfinirValeur
7-2 En bas apparait deux zones :
7-3 Element : Tu clicks sur les "..." et tu vas chercher ton formulaire (Formulaire, Formulaire chargé, Nom de ton formulaire). Dans la colonne du centre apparaissent tous tes controles. Tu sélectionnes "PrixEntreprise " et tu valides
7-4 Expression : =[PrixAchat]*1.4
8 Tu enregistres ta macro sous le nom Macro1
9 Tu fermes, et tu vas voir quand la zone "Après mise a jour" il t'a marqué : Macro1.MajApPrixAchat
10 Pour le PrixParticulier tu répètes de 7-1 à 8 en ajoutant une nouvelle ligne "DéfinirValeur" mais tu iras chercher le controle de "PrixParticulier"
Donc ta macro serait comme ca :
MajApPrixAchat DéfinirValeur
DéfinirValeur
Sinon pour le VBA :
Idem jusqu'a 5
5 Une boite de dialogue apparait, tu sélectionnes "Generateur de Code"
6 Une nouvelle feuille apparait avec :
Code :
|
7 tu mets ce code :
Code :
|
8 Tu enregistres
9 Tu fermes, et tu vas voir quand la zone "Après mise a jour" il t'a marqué : Procédure événementielle
Si tu as besoin de plus d'aide, n'hesite pas.
Marsh Posté le 22-10-2010 à 16:57:01
Tout d'abord, un grand merci pour cette réponse on ne peut plus claire et détaillé.
J'aurais deux questions après promis je ne t'embête plus
Lorsque j'applique la première méthode MACRO, cela ne fonctionne pas. Je crois savoir d'où çà vient mais je ne veux pas trop m'avancer. J'ai juste pu observer qu'après avoir rempli la colonne par "DéfinirValeur" puis complété l'élément et l'expression, un gros /!\ Jaune et noir apparait en début de ligne juste devant le nom de la macro. De ce que j'ai pu en lire sur le net, cela veut dire que cette macro n'est pas disponible.
Si tu as une idée à ce sujet je suis preneur.
Pour ce qui est de la deuxième solution le VBA, elle fonctionne très bien sur chaque nouvelle entrée faites dans mon formulaire.
Impeccable, ma table affiche également le résultat de toutes les opérations.
La seule question que j'aurais concernant cette solution est la suivante, y'a t-il un moyen de mettre également à jour les enregistrements précédents ou suis-je obliger de saisir à nouveau mes anciennes donnée pour que la macro s'applique ?
J'ai testé la touche "actualiser tout", mais rien n'y fait.
Encore une fois merci pour cette réponse pas à pas qui m'a été d'un grand secours.
Marsh Posté le 22-10-2010 à 17:12:49
Pour la macro, le DefinirValeur n'est en effet plus natif sur 2007... Va falloir manger du vba donc...
Pour tout mettre a jour va falloir faire une requete. Je te previens, je suis avec mon telephone là, donc ca sera de memoire.
Il te faut donc creer une requete.
Pour commencer on va afficher tous les element de la Bdd. Pour se faire tu appuis sur la touche F11, ca va faire apparaitre sur la gauche la fenetre base de donnees.
Il y a une petite fleche (comme une pioche) tu click dessus et tu selectionnes "Tous les objets"
Sur le ruban, tu dois avoir "creation", "requete.
Tu arrives sur une nouvelle fenetre qui doit te proposer d'ajouter des tables. Tu ajoutes ta tables. Un double click sur les champs de ta table les feront passer en dessous.
N'ayant plus de batterie la suite dns 30mn...
Marsh Posté le 22-10-2010 à 18:44:34
Une image valant mieux qu'un long discours, voila la requete.
Une fois parametrée comme sur l'image tu cliques sur le point d'exclamation pour la lancer.
Marsh Posté le 22-10-2010 à 18:52:39
Merci pour cette répose, j'espère que tu n'as pas grillé ton téléphone ^^
Je vais testé çà tout de suite.
PS
Pour INFO. En farfouillant pendant que tu rechargeais ton téléphone, j'ai trouvé un post intéressant concernant Acccess 2007, et ai réussi par la suite à faire fonctionner ta méthode avec la MACRO.
Il semblerait que pour faire fonctionner "DéfinirValeur" sous Access 2007 il faille tout simplement redéfinir les paramètres de sécurité d'Access 2007 (Option d'access -->centre de gestion de la confidentialité-->Paramètre du centre de gestion de la confidentialité-->Paramètre des macros--> puis cocher "activer toutes les macros)
Donc ta méthode fonctionne super bien j'ai plus qu'a mettre a jour mes précédents enregistrements
Merci
Marsh Posté le 22-10-2010 à 19:28:19
Bon et bien çà y est, tout est fait
Au risque de me répéter, un grand merci pour toutes ces explications nets et précises.
Marsh Posté le 22-10-2010 à 13:00:43
Bonjour,
Je tiens tout d’abord à m’excuser par avance pour tout abus de langage ou erreur que je pourrais commettre car je ne connais absolument rien en VBA. Seulement je suis obligé de m’y intéresser un minimum et donc de demander de l’aide car mon problème en contient.
J’espère ne pas m’être trompé de section au sein du forum, j’ai longtemps hésité entre le section logiciel et vba.
J’ai créé sous Access 2007 une table contenant plusieurs éléments que je vais simplifier pour des raisons pratiques.
Champs : PrixAchat / PrixEntreprise / PrixParticulier (monétaire-euro)
J’ai ensuite créé un Formulaire contenant les mêmes champs. Dans ce formulaire seul le champ PrixAchat est rempli par l’utilisateur, PrixEntreprise et PrixParticulier sont de champs calculés ou j’ai entré les formules suivante afin d'avoir directement le prix affiché à chaque nouvelle entrée :
=[PrixAchat]*1.4
=[PrixAchat]*1.5
Seulement la mise à jour de la table se fait uniquement sur le champ PrixAchat, les deux autres champs de la table n’affiche pas le résultat du champ calculé sur la dite table.
Après de nombreuses recherches sur le net j’ai pu trouver ceci : http://www.commentcamarche.net/for [...] lien-table
J’ai tenté dans un premier temps de reproduire cet exemple afin d’en comprendre le principe. Il ne fonctionne pas.
Donc il m’est difficile de l’adapter à mes besoins.
Quelqu’un aurait une solution à me proposer.
D’avance merci pour vos réponse