Comment afficher par defaut la valeur du dernier champs encodé

Fermé
nounours4 Messages postés 47 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 16 décembre 2021 - 11 nov. 2014 à 12:38
nounours4 Messages postés 47 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 16 décembre 2021 - 18 nov. 2014 à 17:56
Bonjour,

Comment obtenir que la valeur par défaut d'un nouveau champ soit équivalente à celle de ce même champ lors de la dernière entrée effectuée.

Je suis en train d'encoder une collection, et par facilité, j'aimerais que la valeurs par défaut affichée d'un nouvel enregistrement soit équivalente à celle du précédent enregistrement. (pour certains champs seulement). Je n'aurais alors plus qu'a changer le champ qui m'intéresse avant de l'enregistrer.

Par avance je vous remercie de l'attention prêtée à mon sujet.

Nounours

17 réponses

Bonjour Nounours4, Bonjour leMéruvien,
En reprenant une base personnelle que je voulait améliorer j'ai retrouvé ce bout de code VBA qui est exactement ce que tu cherche à faire: entrer comme valeur par défaut la dernière valeur saisie.
Function DerniereValeur()
On Error GoTo Sortie
SACV = Screen.ActiveControl.Value
Screen.ActiveControl.DefaultValue = SACV
Sortie:
End Function

Tu peux le coller tel quel sans aucune modification n'importe où dans n'importe quel module VBA, puis Copier/Coller le titre "Function DerniereValeur()" précédé du signe "=" à la propriété "Après Mise à Jour" de ton contrôle. Cela ne change rien à la formule donné par LeMéruvien qui doit être entrée également.
Le code donné ici a l'avantage d'être universel, càd qu'il est valable pour tous les contrôles; en effet il prend comme valeur par défaut la dernière valeur entrée, celle qu'on vient de taper.
Bonne suite et Bon courage.
1
Bonjour,
Entrer pour la valeur par défaut du contrôle la formule : DLast("LeChamp";" LaTable")
mais attention parce que la valeur retenue sera celle valide au moment de l'ouverture du formulaire.
Pour avoir en permanence la dernière valeur entrée il faut ajouter une ligne de code VBA :
Function TrouverValeurParDefaut()
...LeControle.DefaultValue = DLast("LeChamp", "LaTable")
End Function

La fonction est à mettre sur la propriété "près MàJ"
Attention: La syntaxe française, pour la saisie directe dans la propriété "Valeur par défaut", et la syntaxe anglaise, pour le VBA, sont différentes; avec " , " en anglais, et avec " ; " en français.
Bonne suite
0
nounours4 Messages postés 47 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 16 décembre 2021
11 nov. 2014 à 15:39
Merçi pour l'intérêt porter à mon problème.

Je viens d'insérer dans valeur par défaut du champ "dén_pays" dans la table "Pièces" tes deux formules complètes(une après l'autre), en changeant le champ et la table par les nom, puis en ne les changeant pas, j'ai toujours un message me disant que la fonction DLast est inconnue ou incorrecte. Mon Access 2007 est en français. Peut être n'ai-je pas mis la formule au bon endroit?

par avance merçi.
0
Re-Bonjour,
J'avais dit le contrôle et non pas le champ, càd que la formule doit être entrée au niveau du formulaire et du contrôle correspondant au champ.
Je viens de vérifier, et effectivement Access ne reconnait pas la formule directement sur les tables mais parfaitement dans les formulaires.
Bonne suite
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nounours4 Messages postés 47 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 16 décembre 2021
11 nov. 2014 à 18:29
Bonsoir
J'ai créé un formulaire. en sélectionant le champs , j'ai dans la feuille des propriètè source du controle. Si j'entre une de tes deux formule, je n'ai plus rien qui s'affiche dans le champ. je ne vois pas d'autre controle. a part un controle activeX qui me propose de mettre une vidéo sur mon formulaire...

j'ai essayé déjà après midi de créer un formulaire pour trouver d'autre possibilité. Je ne trouve pas comment mettre ta formule. j'en ai même essayè une autre d'un sujet similaire:
https://forums.commentcamarche.net/forum/affich-29143752-mettre-une-valeur-par-defaut-a-partir-du-dernier-enregistrement
mais je n'arrive pas à obtenir quelque chose qui marche.

en attendant de tes nouvelles, je continue à tester tout ce que je peux trouver...

nounours
0
Je ne comprends pas, ni ce que tu fais ni ce qui ne va pas.
Pour le contrôle, il faut un contrôle "Zone de Texte", au besoin en s'aidant avec l'assistant "Ajouter des champs existants " de l'onglet "Création". En aucun cas un contrôle "ActiveX" qui sont des contrôles particuliers faisant appel à des logiciels autres que Access, par exemple vidéo ou musique ou autre.
La source du contrôle doit être le champ de la table sous-jacente, et la formule que j'ai donné mise sur la propriété "Valeur par défaut" de ce contrôle. Au besoin en faisant précéder du signe "="
0
le meruvien Messages postés 1111 Date d'inscription vendredi 12 août 2011 Statut Membre Dernière intervention 15 avril 2024 40
12 nov. 2014 à 15:09
bonjour, voila un modèle de ce que tu veut:
https://www.cjoint.com/?3Kmpm6bMWyw
regarde bien la propriété "valeur par defaut" du champ [compteur_ancien], et tu met la même chose dans ton formulaire, a la propriété par defaut de ton champ.
roger
0
Merci pour ton aide ! Un bel exemple. Juste une précision : la propriété "Valeur par Défaut" se trouve sous l'onglet "Données".
0
le meruvien Messages postés 1111 Date d'inscription vendredi 12 août 2011 Statut Membre Dernière intervention 15 avril 2024 40
13 nov. 2014 à 05:39
bonjour, oui, c'est dans l'onglet données, mais moi pour ne pas chercher partout, systématiquement j'utilise toujours l'onglet "toutes".
Enfin sur access 2003, je ne sait pas si c'est pareil sur access 2007.
roger
0
Oui! Même rangement. Au moins ils (MS) n'ont pas changé ça.
0
A plus ! Bonne journée.
0
nounours4 Messages postés 47 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 16 décembre 2021
15 nov. 2014 à 13:44
Bonjour a tout les deux.

Avec vos explications et l'exemple, je viens d'essayer. Comme j'ai tripoté mon formulaire de toutes les façons, j'en crée un nouveau sous le modèle table qui me convient bien pour entrer les données à la queue et pour parfois copier coller les pièces de l'année précédente qui sont identiques, je n'ai plus alors qu'a changer les emplacements. le premier champ est la référence auto, le deuxièmes une liste déroulante faisant référence à une table, ou j'essaie d'avoir par défaut le même encodage que le précédent. Cela ne veut pas marcher, mais j'obtiens au lieu d'une case vide le premier enrégistrement de ma liste de pays. après un nombre incalculable d'essai, je me dit tant pis, je vais essayer aussi sur mon 3eme champ qui lui est le champs année qui fait aussi référence à une table et est aussi une liste déroulante et qui était aussi vierge sur les nouveau enrégistrement. Là, bizarrement, cela marche pour le deuxième champs et le troisièmes champs alors que le deuxième restait sourd à mes différente sollicitation. SAUF QUE ... mon formulaire étant sur le modéle table, l'enrégistrement suivant apparait dés que je quitte le champs référence automatique... donc le champs par défaut est bien mis à jour mais avec chaque fois un enrégistrement de retard... Par contre si j'entre par ex. finlande, que j'ai monaco qui apparait sur le futur enrégistrement à encodé quand je quitte le formulaire après la ligne finlande et que je reviens dedans, j'ai alors finlande à la place de monaco dans le nouvel enrégistrement en attente.

Des idées?

Je sais je suis casse tête, et mon access 2007 doit être aussi spécial que moi...

A++

Nounours
0
nounours4 Messages postés 47 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 16 décembre 2021
15 nov. 2014 à 13:56
Je viens de voir que tu as le même problème dans ton exemple. Comme tu n'encode probablement jamais deux plein à la suite sans fermer ta bd tu ne l'as jamais remarqué...

Ne bruler pas vos cerveaux en cherchant, on en aura encore besoins...;-)

nounours
0
nounours4 Messages postés 47 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 16 décembre 2021
15 nov. 2014 à 14:48
et merçi pour l'exemple et la patience...
0
Bonjour,
... Bien du mal à comprendre tes explications. Le plus simple serait que tu envoies la base par l'intermédiaire de cjoint.com qu'on regarde ça de plus près.
(Tu ouvres et tu suis les indications; en sélectionnant un fichier, tu mets ta base. C'est très simple. Ne pas oublier d'anonymiser les noms de personne s'il y en a)
Bonne suite
0
nounours4 Messages postés 47 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 16 décembre 2021
17 nov. 2014 à 10:45
Bonjour,
Voici le lien

https://www.cjoint.com/?0KrkOtTzYzk

Le formulaire est le formulaire 99 dans Pièces.

Tu peut alors voir si tu encode une pièces, le futur enrégistrement apparait dés que tu quitte le champ num auto. Donc l'enregistrement suivant à déjà les champs rempli avec ton enrégistrement précédent et pas avec celui que tu es en train de remplir, sauf si tu ferme ta bd et que tu là ré-ouvre alors ton nouvel enrégistrement est bien mis à jour. Les champs que j'aurais voulu voir mis à jour sont le 2 et 3eme soit dén_pays et année.

Si tu trouve, j'aimerais que tu me dise ce que tu as fait, pas simplement le faire et me renvoyer la bd. (Parce que je continue à encoder des pièces, et aussi dans le but d'apprendre.) J'arrêterai peut être alors de poser des questions d'ici deux ou trois ans... ;-)

Merçi d'avance pour votre intérêt

Nounours
0
nounours4 Messages postés 47 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 16 décembre 2021
17 nov. 2014 à 12:46
https://www.cjoint.com/?0KrmY0zZ5QB

Le premier fichier ne marchait pas, je ne sais pas pourquoi, probablement une erreur d'enrégistrement. Celui marche comme j'ai expliqué plus haut.

Nounours
0
Bonjour,
J'ai installé les extraits de code VBA dont j'avais parlé avant.
Je te renvoie la base. Il n'y a pas grand chose à expliquer, il suffit de regarder. Tu ouvres le formulaire en mode Création et tu ouvres l'onglet "Evènements". Pour ouvrir le code correspondant il faut cliquer sur le petit bouton en fin de ligne.
Je dois partir. Je te lirai ce soir.
http://cjoint.com/?3KrmtyIPHXz
Bonne suite
0
nounours4 Messages postés 47 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 16 décembre 2021
17 nov. 2014 à 15:54
Re Bonjour,

Mon ordi doit être possédé, cela marche pour année mais pas pour pays dans ton exemplaire. J'ai essayé de recopiè dans mon exemplaire, là non plus...
Comme cela marche pour année, j'ai essayé de faire le m^me sur note. J'obtiens le même résultat que pour pays cad:"#Nom ?"
essaie: tu ouvre ton exemplaire corrigé, tu encode une ligne. Le pays est bon, donc cela marche à l'ouverture, Lors de la seconde ligne tu obtiens cela pour pays:#Nom ? par contre année affiche la bonne année.En faisant le même pour note j'obtient aussi "#Nom ?"

J'ai essayé de déplacé le code sur avant mise à jour, sur encodage, sur ouverture...rien ne fonctionne ...
0
nounours4 Messages postés 47 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 16 décembre 2021
17 nov. 2014 à 16:03
Si cela peut aider, je viens juste de constater que dans note, si je place un chiffre alors cela fonctionne pour le champ note, si je place un nom, cela ne fonctionne pas???
0
Bonsoir,
Désolé, j'ai bien vu le problème; mais même après plus de 2 heures à tout retourner dans tous les sens je ne trouve pas ce qui coince. Le mieux serait alors de te contenter de la 1ère solution, quitte à n'avoir pour valeur par défaut que l'avant-dernière saisie.
Bonne suite.
0
nounours4 Messages postés 47 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 16 décembre 2021
18 nov. 2014 à 00:51
Bonsoir,

je ne connais pas encore les codes, mais n'y a til pas dans ton code une instruction qui n'accepte que du numérique et que l'on pourrait remplacer ou une instruction qui exclut le texte?

bonne nuit et encore merçi.

nounours
0
Bonjour,
Non! Il ne peut pas y avoir de problème avec le code que j'ai utilisé, 1°) parce que la commande en est :"Prendre la valeur qui vient d'être entrée dans le contrôle et en faire la valeur par défaut de ce contrôle", et 2°) parce que je l'utilise pour plusieurs contrôles d'un formulaire d'une base personnelle et je n'ai aucun soucis.
Je crois que la difficulté est ailleurs, peut-être une question de format de données mais je n'ai pas trouvé.
0
nounours4 Messages postés 47 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 16 décembre 2021
18 nov. 2014 à 17:56
Bonjour,

l'avenir nous fournira probablement la réponse à un moment totalement inattendu...
ou bien
akounamatata...

a+ et merçi pour tous les effort déjà fournis.

Nounours
0