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

modifier la valeur par défaut d'un champ par vba

5 réponses
Avatar
Marc67
Bonjour,
j'aurais besoin de modifier la valeur par d=E9faut d'un champ par vba
(concerne une table access 2007).
En fouillant sur Internet, j'ai trouv=E9 la commande suivante :
ALTER TABLE <table1> ALTER COLUMN <champ1> <typeChamp1> DEFAULT
<valeurParD=E9faut>
par contre, =E7a ne marche pas !
Quelqu'un aurait-il une id=E9e ou mieux un exemple de commande plus
concret ?
merci d'avance,
Marc

5 réponses

Avatar
3stone
Salut,

Marc67 wrote:
Bonjour,
j'aurais besoin de modifier la valeur par défaut d'un champ par vba
(concerne une table access 2007).
En fouillant sur Internet, j'ai trouvé la commande suivante :
ALTER TABLE <table1> ALTER COLUMN <champ1> <typeChamp1> DEFAULT
<valeurParDéfaut>
par contre, ça ne marche pas !
Quelqu'un aurait-il une idée ou mieux un exemple de commande plus
concret ?




Il faut utiliser ADO !

Pour un champ "CH1" numérique dans une table "TB1" :

CurrentProject.Connection.Execute "Alter Table TB1 Alter Column CH1 Set Default 100"

Pour un champ texte...

CurrentProject.Connection.Execute "Alter Table TB1 Alter Column CH1 Set Default 'toto' "

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Marc67
On 8 mar, 18:46, "3stone" wrote:
Salut,

Marc67 wrote:
> Bonjour,
> j'aurais besoin de modifier la valeur par défaut d'un champ par vba
> (concerne une table access 2007).
> En fouillant sur Internet,  j'ai trouvé la commande suivante :
> ALTER TABLE <table1> ALTER COLUMN <champ1> <typeChamp1> DEFAULT
> <valeurParDéfaut>
> par contre, ça ne marche pas !
> Quelqu'un aurait-il une idée ou mieux un exemple de commande plus
> concret ?

Il faut utiliser ADO !

Pour un champ "CH1" numérique dans une table "TB1" :

CurrentProject.Connection.Execute "Alter Table TB1 Alter Column CH1 Set D efault 100"

Pour un champ texte...

CurrentProject.Connection.Execute "Alter Table TB1 Alter Column CH1 Set D efault 'toto' "

--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/ (infos générales)



Bonjour et merci de votre réponse.
J'ai un soucis complémentaire à ma question, à savoir que j'utilise
des tables liées. De ce fait, j'ai un message d'erreur en exécutant la
commande que vous m'avez indiquée (et qui marche lorsque les tables ne
sont pas liées). Je suppose qu'il faut donc indiquer au préalable
l'adresse du fichier ACCESS, mais comme on passe par ADO, je ne
maîtrise pas du tout. Comment faire ???
Dans la foulée, je me permets de vous questionner pour savoir (dans le
même cas de figure) s'il est possible de récupérer la réponse d'une
msgbox (VBquestion) afin de s'en servir comme valeur par défaut
(CurrentProject.Connection.Execute "Alter Table TB1 Alter Column CH1
Set Default ...... "
Merci d'avance, ces réponses me permettraient de faire un pas de géant
dans mon projet.
Marc.
Avatar
3stone
Salut,

Marc67 wrote:
j'aurais besoin de modifier la valeur par défaut d'un champ par vba
(concerne une table access 2007).
En fouillant sur Internet, j'ai trouvé la commande suivante :
ALTER TABLE <table1> ALTER COLUMN <champ1> <typeChamp1> DEFAULT
<valeurParDéfaut>



Il faut utiliser ADO !

Pour un champ "CH1" numérique dans une table "TB1" :

CurrentProject.Connection.Execute "Alter Table TB1 Alter Column CH1
Set Default 100"

Pour un champ texte...

CurrentProject.Connection.Execute "Alter Table TB1 Alter Column CH1
Set Default 'toto' "

--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/ (infos générales)



Bonjour et merci de votre réponse.
J'ai un soucis complémentaire à ma question, à savoir que j'utilise
des tables liées. De ce fait, j'ai un message d'erreur en exécutant la
commande que vous m'avez indiquée (et qui marche lorsque les tables ne
sont pas liées). Je suppose qu'il faut donc indiquer au préalable
l'adresse du fichier ACCESS, mais comme on passe par ADO, je ne
maîtrise pas du tout. Comment faire ???




C'est le code pour une table locale effectivement...


Dans la foulée, je me permets de vous questionner pour savoir (dans le
même cas de figure) s'il est possible de récupérer la réponse d'une
msgbox (VBquestion) afin de s'en servir comme valeur par défaut
(CurrentProject.Connection.Execute "Alter Table TB1 Alter Column CH1
Set Default ...... "



Un MsgBox ne revoit que vbYES, vbOK, vbNO ou vbCANCEL...

J'imagine que tu voulais parler d'une InputBox() ?

Mais combiné à un ALTER TABLE, j'ai peur de comprendre
ce que tu veux faire de cette façon !!

Car, une valeur par défaut est fixée lors de la conception,
et même si dans des cas (très) rare, il peut être nécessaire de
modifier cette valeur par la suite, il n'est pas question de faire
cela "à la volée" !

Donc, quelle est ce besoin précis qui justifie(rai) cela ?

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Marc67
Bonsoir,
je travaille sur un projet de gestion comptable (allégé) destiné à une
association. En fait, l'application fonctionne déjà actuellement, mais
j'essaye d'optimiser dans la mesure de mes possibilités.
Donc, j'utilise une table qui reçoit des imputations comptables. Pour
chaque opération nouvelle, j'ai un champ dont la valeur par défaut
correspond à l'année et qui est utilisé comme index surtout dans les
états. Il faut préciser que l'exercice comptable ne correspond pas à
l'année civile (sinon j'aurais pu utiliser la commande year(date) pour
faire la même chose).
En résumé, j'utilise la même base lors du passage à l'exercice suiv ant
et au moyen d'une macro, je récupère les résultats, soldes, etc... qu i
doivent être reporté sur l'exercice suivant. Pour ce faire, je suis
obligé de changer manuellement la valeur par défaut du champ "année"
avant de lancer ma macro et si j'oublie, c'est la foire !!! Il est
possible de régulariser bien sûr mais ce serait plus simple d'inclure
la réponse d'une commande InputBox() pour changer cela. Ceci se ferait
une fois par an au moment de mettre en place la base de travail pour
le nouvel exercice.
Voila, j'espère que vous avez compris (à peu près) l'objet de ma
demande.
A+,
Marc





On 9 mar, 17:43, "3stone" wrote:
Salut,



Marc67 wrote:
>>> j'aurais besoin de modifier la valeur par d faut d'un champ par vba
>>> (concerne une table access 2007).
>>> En fouillant sur Internet, j'ai trouv la commande suivante :
>>> ALTER TABLE <table1> ALTER COLUMN <champ1> <typeChamp1> DEFAULT
>>> <valeurParD faut>

>> Il faut utiliser ADO !

>> Pour un champ "CH1" num rique dans une table "TB1" :

>> CurrentProject.Connection.Execute "Alter Table TB1 Alter Column CH1
>> Set Default 100"

>> Pour un champ texte...

>> CurrentProject.Connection.Execute "Alter Table TB1 Alter Column CH1
>> Set Default 'toto' "

>> --
>> A+
>> Pierre (3stone) Access MVP
>> Perso:http://www.3stone.be/
>> MPFA:http://www.mpfa.info/(infos g n rales)

> Bonjour et merci de votre r ponse.
> J'ai un soucis compl mentaire ma question, savoir que j'utilise
> des tables li es. De ce fait, j'ai un message d'erreur en ex cutant la
> commande que vous m'avez indiqu e (et qui marche lorsque les tables ne
> sont pas li es). Je suppose qu'il faut donc indiquer au pr alable
> l'adresse du fichier ACCESS, mais comme on passe par ADO, je ne
> ma trise pas du tout. Comment faire ???

C'est le code pour une table locale effectivement...

> Dans la foul e, je me permets de vous questionner pour savoir (dans le
> m me cas de figure) s'il est possible de r cup rer la r ponse d'une
> msgbox (VBquestion) afin de s'en servir comme valeur par d faut
> (CurrentProject.Connection.Execute "Alter Table TB1 Alter Column CH1
> Set Default ...... "

Un MsgBox ne revoit que vbYES, vbOK, vbNO ou vbCANCEL...

J'imagine que tu voulais parler d'une InputBox()  ?

Mais combin un ALTER TABLE, j'ai peur de comprendre
ce que tu veux faire de cette fa on !!

Car, une valeur par d faut est fix e lors de la conception,
et m me si dans des cas (tr s) rare, il peut tre n cessaire de
modifier cette valeur par la suite, il n'est pas question de faire
cela " la vol e" !

Donc, quelle est ce besoin pr cis qui justifie(rai) cela ?

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

J'avais bien deviné la manipulation envisagée... et bien sûr, une
telle méthode est déconseillée et inutile.

En fait, les valeurs par défaut dans la table ne sont intéressantes
que lors de valeurs définitives.
Si tel n'est pas le cas, c'est dans le formulaire que cela se fait,
et sans aucune manipulation de la table.

La valeur par défaut se défini donc au niveau de la zone de texte
qui possède une propriété "DefaultValue" qu'il suffit de renseigner
pour disposer d'une nouvelle valeur par défaut. Cela peut même
être réalisé "à la volée".

Le code s'exprime donc par :
Me!ZoneDeTexte.DefaultValue = 2011

Pour ton cas, puisque la valeur est relativement fixe au regard
des démarrages de la base, on utilisera une petite table pour
mémoriser cette valeur.
Dans ce cas, il suffit de compléter le code précédant, code que
l'on placera dans l'événement "Sur chargement" du formulaire :

Me!NomZdT.DefaultValue = Dlookup("[ChampAnnée]","[T_Paramètres])

qui ira chercher la valeur dans la table T_Paramètres.

Lorsque l'on souhaite modifier la valeur, il suffit de modifier
la valeur du champ, idéalement à l'aide d'un petit formulaire.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)


Marc67 wrote:
Bonsoir,
je travaille sur un projet de gestion comptable (allégé) destiné à une
association. En fait, l'application fonctionne déjà actuellement, mais
j'essaye d'optimiser dans la mesure de mes possibilités.
Donc, j'utilise une table qui reçoit des imputations comptables. Pour
chaque opération nouvelle, j'ai un champ dont la valeur par défaut
correspond à l'année et qui est utilisé comme index surtout dans les
états. Il faut préciser que l'exercice comptable ne correspond pas à
l'année civile (sinon j'aurais pu utiliser la commande year(date) pour
faire la même chose).
En résumé, j'utilise la même base lors du passage à l'exercice suivant
et au moyen d'une macro, je récupère les résultats, soldes, etc... qui
doivent être reporté sur l'exercice suivant. Pour ce faire, je suis
obligé de changer manuellement la valeur par défaut du champ "année"
avant de lancer ma macro et si j'oublie, c'est la foire !!! Il est
possible de régulariser bien sûr mais ce serait plus simple d'inclure
la réponse d'une commande InputBox() pour changer cela. Ceci se ferait
une fois par an au moment de mettre en place la base de travail pour
le nouvel exercice.
Voila, j'espère que vous avez compris (à peu près) l'objet de ma
demande.
A+,
Marc





On 9 mar, 17:43, "3stone" wrote:
Salut,



Marc67 wrote:
j'aurais besoin de modifier la valeur par d faut d'un champ par
vba (concerne une table access 2007).
En fouillant sur Internet, j'ai trouv la commande suivante :
ALTER TABLE <table1> ALTER COLUMN <champ1> <typeChamp1> DEFAULT
<valeurParD faut>







Il faut utiliser ADO !





Pour un champ "CH1" num rique dans une table "TB1" :





CurrentProject.Connection.Execute "Alter Table TB1 Alter Column CH1
Set Default 100"





Pour un champ texte...





CurrentProject.Connection.Execute "Alter Table TB1 Alter Column CH1
Set Default 'toto' "





--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/(infos g n rales)





Bonjour et merci de votre r ponse.
J'ai un soucis compl mentaire ma question, savoir que j'utilise
des tables li es. De ce fait, j'ai un message d'erreur en ex cutant
la commande que vous m'avez indiqu e (et qui marche lorsque les
tables ne sont pas li es). Je suppose qu'il faut donc indiquer au
pr alable l'adresse du fichier ACCESS, mais comme on passe par ADO,
je ne
ma trise pas du tout. Comment faire ???



C'est le code pour une table locale effectivement...

Dans la foul e, je me permets de vous questionner pour savoir (dans
le m me cas de figure) s'il est possible de r cup rer la r ponse
d'une msgbox (VBquestion) afin de s'en servir comme valeur par d
faut (CurrentProject.Connection.Execute "Alter Table TB1 Alter
Column CH1 Set Default ...... "



Un MsgBox ne revoit que vbYES, vbOK, vbNO ou vbCANCEL...

J'imagine que tu voulais parler d'une InputBox() ?

Mais combin un ALTER TABLE, j'ai peur de comprendre
ce que tu veux faire de cette fa on !!

Car, une valeur par d faut est fix e lors de la conception,
et m me si dans des cas (tr s) rare, il peut tre n cessaire de
modifier cette valeur par la suite, il n'est pas question de faire
cela " la vol e" !

Donc, quelle est ce besoin pr cis qui justifie(rai) cela ?

--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/ (infos g n rales)