Menu

Comment afficher par defaut la valeur du dernier champs encodé [Fermé]

Messages postés
27
Date d'inscription
mercredi 9 janvier 2008
Statut
Membre
Dernière intervention
3 janvier 2018
- - Dernière réponse : nounours4
Messages postés
27
Date d'inscription
mercredi 9 janvier 2008
Statut
Membre
Dernière intervention
3 janvier 2018
- 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
Afficher la suite 

17 réponses

Meilleure réponse
1
Merci
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.

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 54890 internautes nous ont dit merci ce mois-ci

0
Merci
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
Messages postés
27
Date d'inscription
mercredi 9 janvier 2008
Statut
Membre
Dernière intervention
3 janvier 2018
0
Merci
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
Merci
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
Messages postés
27
Date d'inscription
mercredi 9 janvier 2008
Statut
Membre
Dernière intervention
3 janvier 2018
0
Merci
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:
http://www.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
Merci
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 "="
Messages postés
965
Date d'inscription
vendredi 12 août 2011
Statut
Membre
Dernière intervention
23 juin 2019
30
0
Merci
bonjour, voila un modèle de ce que tu veut:
http://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
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".
Messages postés
965
Date d'inscription
vendredi 12 août 2011
Statut
Membre
Dernière intervention
23 juin 2019
30
0
Merci
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
Oui! Même rangement. Au moins ils (MS) n'ont pas changé ça.
A plus ! Bonne journée.
Messages postés
27
Date d'inscription
mercredi 9 janvier 2008
Statut
Membre
Dernière intervention
3 janvier 2018
0
Merci
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
nounours4
Messages postés
27
Date d'inscription
mercredi 9 janvier 2008
Statut
Membre
Dernière intervention
3 janvier 2018
-
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
nounours4
Messages postés
27
Date d'inscription
mercredi 9 janvier 2008
Statut
Membre
Dernière intervention
3 janvier 2018
-
et merçi pour l'exemple et la patience...
0
Merci
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
Messages postés
27
Date d'inscription
mercredi 9 janvier 2008
Statut
Membre
Dernière intervention
3 janvier 2018
0
Merci
Bonjour,
Voici le lien

http://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
nounours4
Messages postés
27
Date d'inscription
mercredi 9 janvier 2008
Statut
Membre
Dernière intervention
3 janvier 2018
-
http://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
Merci
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
Messages postés
27
Date d'inscription
mercredi 9 janvier 2008
Statut
Membre
Dernière intervention
3 janvier 2018
0
Merci
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 ...
nounours4
Messages postés
27
Date d'inscription
mercredi 9 janvier 2008
Statut
Membre
Dernière intervention
3 janvier 2018
-
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
Merci
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.
Messages postés
27
Date d'inscription
mercredi 9 janvier 2008
Statut
Membre
Dernière intervention
3 janvier 2018
0
Merci
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
Merci
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é.
Messages postés
27
Date d'inscription
mercredi 9 janvier 2008
Statut
Membre
Dernière intervention
3 janvier 2018
0
Merci
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