OVH Cloud OVH Cloud

Sauver un form en VBA

2 réponses
Avatar
Jean-Marc
Salut à toutes et à tous,

Dans un code vba, je change une étiquette (Label) nommée 'Mandat'. Il faut
donc que je sauve le formulaire pour que l'étiquette garde sa modification.
J'ai écris le bout de code ci-dessous. L'étiquette se modifie effectivement
et le formulaire se sauve effectivement aussi (J'ai essayé le code en
changeant l'étiquette de place, et après le code, fermeture et nouvelle
ouverture du formulaire, l'étiquette est à la nouvelle place). Toutefois,
lorsque j'ouvre le formulaire à nouveau, le contenu de l'étiquette n'a pas
changé, lui. Il est revenu à sa valeur initiale.

Pourquoi ?

Merci de vos z'avis z'avsisé,
Jean-Marc


Mandat.Caption = "Mandat " & NrMandat
DoCmd.Save acForm, "Encodage des PP"

2 réponses

Avatar
Eric
Bonjour Jean-Marc,

(Sous toutes réserves...)

Ce que tu veux faire, d'après ce que j'ai compris, c'est de modifier la
valeur de ton contrôle Mandat(label) en lui affectant la chaine "Mandat
" suivi du numéro de mandat sur lequel tu es positionné. Si c'est le
cas, je procèderai ainsi:
Définir la propriété Remarque ( Tag en US) du contrôle Mandat à la
valeur Mandat.

Sur l'évènement Ouverture du formulaire (ou encore Chargement)
Private Sub Form_Open(Cancel As Integer)
Me.Mandat.Caption = Me.Mandat.Tag & chr(32) & NrMandat
End Sub

A la question Pourquoi la modification n'est-elle pas conservée, j'émets
l'hypothèse que la propriété Caption (Légende) d'un label est
'dynamique' à savoir qu'on peut la modifier via du code lorsque le
formulaire est ouvert en mode *Exploitation* mais que même après
sauvegarde du formulaire, la propriété Légende conserve la valeur
affectée au moment de la création du contrôle.

Pour changer définitivement la valeur de la légende du contrôle Label
via du code, il faut passer par le mode *Design* (Modification/Création)
- du moins, c'est ce que je crois.

Ainsi, la procédure suivante mis sur l'évènement Clic d'un bouton d'un
formulaire va modifier 'définitivement' la propriété Caption du contrôle
Mandat.(Rem : pas de procédure évènementielle sur Chargement ou
Ouverture du formulaire Encodage des PP visant à modifier la légende de
Mandat, évidemment)

Private Sub Commande0_Click()
Dim f As Form, ctl As Control
DoCmd.OpenForm "Encodage des PP", acDesign, , , , acHidden
Set f = Forms("Encodage des PP")
Set ctl = f.Controls("Mandat")
' la propriété Caption de Mandat est initialement 'Mandat'
' lors de la création du formulaire Encodage des PP
ctl.Caption = "Cette légende devient-elle définitive ?"
DoCmd.Close acForm, f.Name, acSaveYes
Set ctl = Nothing: Set f = Nothing
DoCmd.OpenForm "Encodage des PP"
End Sub

Attendons les experts qui pourront infirmer/confirmer mon laïus.


Salut à toutes et à tous,

Dans un code vba, je change une étiquette (Label) nommée 'Mandat'. Il faut
donc que je sauve le formulaire pour que l'étiquette garde sa modification.
J'ai écris le bout de code ci-dessous. L'étiquette se modifie effectivement
et le formulaire se sauve effectivement aussi (J'ai essayé le code en
changeant l'étiquette de place, et après le code, fermeture et nouvelle
ouverture du formulaire, l'étiquette est à la nouvelle place). Toutefois,
lorsque j'ouvre le formulaire à nouveau, le contenu de l'étiquette n'a pas
changé, lui. Il est revenu à sa valeur initiale.

Pourquoi ?

Merci de vos z'avis z'avsisé,
Jean-Marc


Mandat.Caption = "Mandat " & NrMandat
DoCmd.Save acForm, "Encodage des PP"




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Jean-Marc
En effet, ça fonctionne TRES bien,

Merci,
Jean-Marc



"Eric" a écrit dans le message de news:
uw$
Bonjour Jean-Marc,

(Sous toutes réserves...)

Ce que tu veux faire, d'après ce que j'ai compris, c'est de modifier la
valeur de ton contrôle Mandat(label) en lui affectant la chaine "Mandat "
suivi du numéro de mandat sur lequel tu es positionné. Si c'est le cas, je
procèderai ainsi:
Définir la propriété Remarque ( Tag en US) du contrôle Mandat à la valeur
Mandat.

Sur l'évènement Ouverture du formulaire (ou encore Chargement)
Private Sub Form_Open(Cancel As Integer)
Me.Mandat.Caption = Me.Mandat.Tag & chr(32) & NrMandat
End Sub

A la question Pourquoi la modification n'est-elle pas conservée, j'émets
l'hypothèse que la propriété Caption (Légende) d'un label est 'dynamique'
à savoir qu'on peut la modifier via du code lorsque le formulaire est
ouvert en mode *Exploitation* mais que même après sauvegarde du
formulaire, la propriété Légende conserve la valeur affectée au moment de
la création du contrôle.

Pour changer définitivement la valeur de la légende du contrôle Label via
du code, il faut passer par le mode *Design* (Modification/Création) - du
moins, c'est ce que je crois.

Ainsi, la procédure suivante mis sur l'évènement Clic d'un bouton d'un
formulaire va modifier 'définitivement' la propriété Caption du contrôle
Mandat.(Rem : pas de procédure évènementielle sur Chargement ou Ouverture
du formulaire Encodage des PP visant à modifier la légende de Mandat,
évidemment)

Private Sub Commande0_Click()
Dim f As Form, ctl As Control
DoCmd.OpenForm "Encodage des PP", acDesign, , , , acHidden
Set f = Forms("Encodage des PP")
Set ctl = f.Controls("Mandat")
' la propriété Caption de Mandat est initialement 'Mandat'
' lors de la création du formulaire Encodage des PP
ctl.Caption = "Cette légende devient-elle définitive ?"
DoCmd.Close acForm, f.Name, acSaveYes
Set ctl = Nothing: Set f = Nothing
DoCmd.OpenForm "Encodage des PP"
End Sub

Attendons les experts qui pourront infirmer/confirmer mon laïus.


Salut à toutes et à tous,

Dans un code vba, je change une étiquette (Label) nommée 'Mandat'. Il
faut donc que je sauve le formulaire pour que l'étiquette garde sa
modification.
J'ai écris le bout de code ci-dessous. L'étiquette se modifie
effectivement et le formulaire se sauve effectivement aussi (J'ai essayé
le code en changeant l'étiquette de place, et après le code, fermeture et
nouvelle ouverture du formulaire, l'étiquette est à la nouvelle place).
Toutefois, lorsque j'ouvre le formulaire à nouveau, le contenu de
l'étiquette n'a pas changé, lui. Il est revenu à sa valeur initiale.

Pourquoi ?

Merci de vos z'avis z'avsisé,
Jean-Marc


Mandat.Caption = "Mandat " & NrMandat
DoCmd.Save acForm, "Encodage des PP"




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr