Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Remplissage automatique des enregistrements d'un champ (Acte 2)

6 réponses
Avatar
Willi2004
Bonjour!
Dans un formulaire, pour le remplissage automatique des enregistrements
successifs d'un champ en utilisant la valeur entrée dans le premier de ces
enregistrements, j'utilise le code suivant associé à l'après mise à jour du
champ en question (suggéré par 3stone): Me.MonChamp.DefaultValue="""" &
Me.MonChamp & """" '
Ce code fonctionne parfaitement bien lors de l'ajout de nouveaux
enregistrements à mon formulaire.
En revanche, il ne fonctionne plus pour des enregistrements déjà existants
mais laissés vides.
Pourriez-vous s'il vous plaît me suggérer le code à utiliser dans ce cas?
Merci pour votre aide.

6 réponses

Avatar
3stone
Salut,

"Willi2004"
| Dans un formulaire, pour le remplissage automatique des enregistrements
| successifs d'un champ en utilisant la valeur entrée dans le premier de ces
| enregistrements, j'utilise le code suivant associé à l'après mise à jour du
| champ en question (suggéré par 3stone): Me.MonChamp.DefaultValue="""" &
| Me.MonChamp & """" '
| Ce code fonctionne parfaitement bien lors de l'ajout de nouveaux
| enregistrements à mon formulaire.
| En revanche, il ne fonctionne plus pour des enregistrements déjà existants
| mais laissés vides.
| Pourriez-vous s'il vous plaît me suggérer le code à utiliser dans ce cas?


Effectivement, pour utiliser la valeur précédente comme valeur "par défaut",
il faut bien une... valeur précédente !
Si tu as des enregistrements qui sont "laissés vides" (?) on peut difficilement
utiliser une valeur par défaut. Quelle serait-elle d'ailleur ?

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
3stone
Salut,

"Willi2004"
| Supposons que dans mon formulaire fondé sur une table, j'ai deux champs:
| "Note" et "Nom".
| Dans le champs "Nom", j'ai 10 enregistrements que je nommerai:Nom1, Nom2,
| ..., Nom10.
| Dans le champs "Note", je laisse au départ vides tous les dix enregistrements.
|
| Par la suite,à la reouverture du formulaire,en tapant dans le premier
| enregistrement du champs "Note" le nombre 10 par exemple, je voudrais ne plus
| avoir à reprendre cette valeur pour les neuf enregistrements suivants, la
| Note 10 s'affichant alors automatiquement, ce qui n'est pas le cas avec le
| code ci-dessus.
|
| Ce code ne marche que lors de l'ajout de nouveaux enregistrements, c'est-à
| dire à partir du onzième.


Arrivé dans le champ des enregistrements suivants, tu tape Ctrl + apostrophe

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Willi2004
En effet si aucun code ne permet d'automatiser cette tache, ce qui aurait été
de loin préférable, je me contenterai du Ctrl +apostrophe.
Merci encore 3stone.
Avatar
3stone
Salut,

"Willi2004"
| En effet si aucun code ne permet d'automatiser cette tache,


si...


| ce qui aurait été de loin préférable,


faux...
Il faudrait alors créer un événement "volontaire" comme un clic sur bouton,
et donc quitter le clavier, cliquer, revenir au clavier... ;-(

ou faire une usine à gaz pour si peu...

- après mise à jour du textbox, placer la valeur dans un variant
- sur entrée dans ce même textbox :
- si vide - attribuer la valeur
- si pas vide - ne rien faire


| je me contenterai du Ctrl +apostrophe.

c'est utiliser ce Access donne à l'utilisateur *sans rien coder*


Ceci dit, lorsque l'on sait écrire du code, on peut bricoler ce que l'on veut!
A défaut de comprendre ce que l'on écrit, il est plus prudent d'utiliser
les moyens du bord, car sinon, comment maintenir une application
que l'on ne "comprend pas" ?

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
3stone
Salut,

"Willi2004"
| J'ai essayé de la manière suivante, selon ta suggestion:
|
| - après mise à jour du textbox, placer la valeur dans un variant
| - sur entrée dans ce même textbox :
| - si vide - attribuer la valeur
| - si pas vide - ne rien faire


Dans la partie déclaration, tu mets :

Option Compare Database
Option Explicit

Dim TextBoxDefault As Variant


ensuite, sur après mise à jour du textbox concerné :

TextBoxDefault = txtNomDuTextBox


puis, sur réception du focus de ce même textbox :

If IsNull(txtNomDuChamp) Then
txtNomDuTextBox = TextBoxDefault
End If


Remarque que je parle bien du TextBox dont je préfixe toujours
le nom par "txt" pour qu'il ne porte pas le même nom que le champ.
Cela évite les disfonctionnements, mais surtout te fait comprendre
qu'au lieu du champ (qui est la source de textbox) c'est bien
au textbox que tu dois t'adresser !

Pour l'exemple, si tu as un champ "NomClient" tu modifie le nom
de la zone de texte en txtNomClient.
Malheureusement, par défaut, Access donne au textbox le même
nom qu'au champ - ce qui noye les problèmes pour les débutants.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Willi2004
Mai oui, ça marche!!

Tu ne cesseras jamais de m'étonner et quoi que tu dises, je ne rois pas
surfaire ta réputation en disant que tu es fort en Access.
J'ai réellement appris de toi et je t'en remercie infiniment.