OVH Cloud OVH Cloud

Me.Dirty ne fonctionne pas correctement

9 réponses
Avatar
J'ai un Formulaire principal sur le quel j'ai plac=E9e un=20
contr=F4le onglet avec plusieurs onglets est il y =E0 environ=20
200 Zones de texte et d'autres composants plac=E9e dans le=20
diff=E9rents onglets. Chaque propri=E9t=E9 =AB Source contr=F4le =BB=20
des Zones de textes est =AB li=E9e =BB =E0 des champs de=20
diff=E9rents tables figurant dans mon projet.=20

J'utilise =E9galement des sous-Formulaires dans mon=20
formulaire principal .=20

Mon programme tourne =AB Nickel =BB comme on dit =E0=20
l'exception de la fonction Me.Dirty qui ne fait pas ce=20
que j'attend d'elle !=20

J'ai me suis pose la question =E0 quoi servent les=20
commandes suivantes :?=20


Me.Dirty=20
=20
Ou=20

Form.Dirty=20
=20


car quand je modifie une ou plusieurs de donn=E9es sur mon=20
formulaire ou sur un de mes Sous-formulaire, n'importe,=20
j'ai tout essaie, la valeur Me.Dirty garde toujours la=20
m=EAme valeur =E0 l'int=E9rieur d'une m=EAme proc=E9dure ?=20

Elle sert donc =E0 rien ? Je ne sais pas ce qui se passe ?=20

Un Exemple :=20

Code:=20

Private Sub Form_BeforeUpdate(Cancel As Integer)=20
If Me.Dirty =3D True Then=20
Dim Info As String=20
Info =3D MsgBox("Voulez vous enregistrer les=20
informations ?", vbOKCancel)=20
If Infos =3D vbCancel Then=20
'MsgBox ("Les modifications ne seront=20
pas prise en compte!") =20
End if=20
End If=20

' suite du code=20

End Sub=20
=20


Me.Dirty garde tout le temps la m=EAme valeur (vrai) et ne=20
tiens pas en compte du ou des changements de=20
l'enregistrement !=20
Je me suis inform=E9 sur le site de Microsoft =E0 la page=20

http://support.microsoft.com/?kbid=3D210334=20

et j'ai vus qu'il parle d'un mode d'=E9dition d'un=20
Formulaire.=20

Mes Questions: Est cela un probl=E8me de configuration
de mon Formulaire. Il y =E0 peut-=EAtre un =E9v=E8nnement qui=20
inf=E8re avec l'instruction Me.Dirty ?

Est-que le mode d'=E9dition qu'il parle sur le site de=20
Microsoft =E0 quelque chose a voir avec l'instruction=20
Me.Dirty ?=20

J'ai essaie de placer l'instruction Me.Dirty dans=20
d'autres Routines du Formulaire FORM par exemple dans=20



Code:=20

Private Sub Form_Dirty(Cancel As Integer)=20
If Me.Dirty =3D True Then=20
Dim Info As String=20
Info =3D MsgBox("Voulez vous enregistrer les=20
informations ?", vbOKCancel)=20
If Infos =3D vbCancel Then=20
'MsgBox ("Les modifications ne seront=20
pas prise en compte!") =20
End if=20
End If=20

' suite du code=20

End Sub=20
=20


Ici Me.Dirty garde tout le temps la m=EAme valeur (Faux) et=20
ne tiens pas en compte du ou des changements de=20
l'enregistrement !=20

Quelqu'un peux nous aider, car ne souhaite pas cr=E9er un=20
=E9v=E9nement pour chaque contr=F4le sur mon formulaire . Il y=20
environ 200 Zones de textes (champs =E0 afficher) ?

9 réponses

Avatar
Pierre CFI [mvp]
bonjour
hum, tu veux faire quoi au juste ? :o))

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
a écrit dans le message de news:26a9901c461c8$d846ab40$
J'ai un Formulaire principal sur le quel j'ai placée un
contrôle onglet avec plusieurs onglets est il y à environ
200 Zones de texte et d'autres composants placée dans le
différents onglets. Chaque propriété « Source contrôle »
des Zones de textes est « liée » à des champs de
différents tables figurant dans mon projet.

J'utilise également des sous-Formulaires dans mon
formulaire principal .

Mon programme tourne « Nickel » comme on dit à
l'exception de la fonction Me.Dirty qui ne fait pas ce
que j'attend d'elle !

J'ai me suis pose la question à quoi servent les
commandes suivantes :?


Me.Dirty

Ou

Form.Dirty



car quand je modifie une ou plusieurs de données sur mon
formulaire ou sur un de mes Sous-formulaire, n'importe,
j'ai tout essaie, la valeur Me.Dirty garde toujours la
même valeur à l'intérieur d'une même procédure ?

Elle sert donc à rien ? Je ne sais pas ce qui se passe ?

Un Exemple :

Code:

Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.Dirty = True Then
Dim Info As String
Info = MsgBox("Voulez vous enregistrer les
informations ?", vbOKCancel)
If Infos = vbCancel Then
'MsgBox ("Les modifications ne seront
pas prise en compte!")
End if
End If

' suite du code

End Sub



Me.Dirty garde tout le temps la même valeur (vrai) et ne
tiens pas en compte du ou des changements de
l'enregistrement !
Je me suis informé sur le site de Microsoft à la page

http://support.microsoft.com/?kbid!0334

et j'ai vus qu'il parle d'un mode d'édition d'un
Formulaire.

Mes Questions: Est cela un problème de configuration
de mon Formulaire. Il y à peut-être un évènnement qui
infère avec l'instruction Me.Dirty ?

Est-que le mode d'édition qu'il parle sur le site de
Microsoft à quelque chose a voir avec l'instruction
Me.Dirty ?

J'ai essaie de placer l'instruction Me.Dirty dans
d'autres Routines du Formulaire FORM par exemple dans



Code:

Private Sub Form_Dirty(Cancel As Integer)
If Me.Dirty = True Then
Dim Info As String
Info = MsgBox("Voulez vous enregistrer les
informations ?", vbOKCancel)
If Infos = vbCancel Then
'MsgBox ("Les modifications ne seront
pas prise en compte!")
End if
End If

' suite du code

End Sub



Ici Me.Dirty garde tout le temps la même valeur (Faux) et
ne tiens pas en compte du ou des changements de
l'enregistrement !

Quelqu'un peux nous aider, car ne souhaite pas créer un
événement pour chaque contrôle sur mon formulaire . Il y
environ 200 Zones de textes (champs à afficher) ?
Avatar
Je souhaite declencher un procédure après la modification
de données d'une fiche client. Cette procedure doit se
déclencher uniquement après modification des données !!!
Le problème c'est que la routine Form_BeforeUpdate se
déclenche à chaque fois que je passe d'une fiche à
l'autre, etc ....

C'est pour cela que j'ai utilisé la fonction Me.Dirty
qui devrait normalement faire la destinction si Oui ou
Non les données ont été modifie.

Me.Dirty ne tiens, dans mon cas, pas compte des
changements des données et ma procedure ne peut donc pas
se déclencher. Dans mon exemple que j'ai poste j'ai
remplace l'appel de ma procédure par une Message
écran, ...

Voila, pour plus de précisions.

Comment résoudre le problème ?


-----Message d'origine-----
bonjour
hum, tu veux faire quoi au juste ? :o))

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
a écrit dans le
message de news:26a9901c461c8$d846ab40$

J'ai un Formulaire principal sur le quel j'ai placée un
contrôle onglet avec plusieurs onglets est il y à environ
200 Zones de texte et d'autres composants placée dans le
différents onglets. Chaque propriété « Source contrôle »
des Zones de textes est « liée » à des champs de
différents tables figurant dans mon projet.

J'utilise également des sous-Formulaires dans mon
formulaire principal .

Mon programme tourne « Nickel » comme on dit à
l'exception de la fonction Me.Dirty qui ne fait pas ce
que j'attend d'elle !

J'ai me suis pose la question à quoi servent les
commandes suivantes :?


Me.Dirty

Ou

Form.Dirty



car quand je modifie une ou plusieurs de données sur mon
formulaire ou sur un de mes Sous-formulaire, n'importe,
j'ai tout essaie, la valeur Me.Dirty garde toujours la
même valeur à l'intérieur d'une même procédure ?

Elle sert donc à rien ? Je ne sais pas ce qui se passe ?

Un Exemple :

Code:

Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.Dirty = True Then
Dim Info As String
Info = MsgBox("Voulez vous enregistrer les
informations ?", vbOKCancel)
If Infos = vbCancel Then
'MsgBox ("Les modifications ne seront
pas prise en compte!")
End if
End If

' suite du code

End Sub



Me.Dirty garde tout le temps la même valeur (vrai) et ne
tiens pas en compte du ou des changements de
l'enregistrement !
Je me suis informé sur le site de Microsoft à la page

http://support.microsoft.com/?kbid!0334

et j'ai vus qu'il parle d'un mode d'édition d'un
Formulaire.

Mes Questions: Est cela un problème de configuration
de mon Formulaire. Il y à peut-être un évènnement qui
infère avec l'instruction Me.Dirty ?

Est-que le mode d'édition qu'il parle sur le site de
Microsoft à quelque chose a voir avec l'instruction
Me.Dirty ?

J'ai essaie de placer l'instruction Me.Dirty dans
d'autres Routines du Formulaire FORM par exemple dans



Code:

Private Sub Form_Dirty(Cancel As Integer)
If Me.Dirty = True Then
Dim Info As String
Info = MsgBox("Voulez vous enregistrer les
informations ?", vbOKCancel)
If Infos = vbCancel Then
'MsgBox ("Les modifications ne seront
pas prise en compte!")
End if
End If

' suite du code

End Sub



Ici Me.Dirty garde tout le temps la même valeur (Faux) et
ne tiens pas en compte du ou des changements de
l'enregistrement !

Quelqu'un peux nous aider, car ne souhaite pas créer un
événement pour chaque contrôle sur mon formulaire . Il y
environ 200 Zones de textes (champs à afficher) ?


.



Avatar
Pierre CFI [mvp]
.../...
oui, ce serait plutot afterupdate qui serait bien, dirty est un état, afterupdate est un évenemnt

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
a écrit dans le message de news:260dc01c461cd$79b71c90$
Je souhaite declencher un procédure après la modification
de données d'une fiche client. Cette procedure doit se
déclencher uniquement après modification des données !!!
Le problème c'est que la routine Form_BeforeUpdate se
déclenche à chaque fois que je passe d'une fiche à
l'autre, etc ....

C'est pour cela que j'ai utilisé la fonction Me.Dirty
qui devrait normalement faire la destinction si Oui ou
Non les données ont été modifie.

Me.Dirty ne tiens, dans mon cas, pas compte des
changements des données et ma procedure ne peut donc pas
se déclencher. Dans mon exemple que j'ai poste j'ai
remplace l'appel de ma procédure par une Message
écran, ...

Voila, pour plus de précisions.

Comment résoudre le problème ?


-----Message d'origine-----
bonjour
hum, tu veux faire quoi au juste ? :o))

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
a écrit dans le
message de news:26a9901c461c8$d846ab40$

J'ai un Formulaire principal sur le quel j'ai placée un
contrôle onglet avec plusieurs onglets est il y à environ
200 Zones de texte et d'autres composants placée dans le
différents onglets. Chaque propriété « Source contrôle »
des Zones de textes est « liée » à des champs de
différents tables figurant dans mon projet.

J'utilise également des sous-Formulaires dans mon
formulaire principal .

Mon programme tourne « Nickel » comme on dit à
l'exception de la fonction Me.Dirty qui ne fait pas ce
que j'attend d'elle !

J'ai me suis pose la question à quoi servent les
commandes suivantes :?


Me.Dirty

Ou

Form.Dirty



car quand je modifie une ou plusieurs de données sur mon
formulaire ou sur un de mes Sous-formulaire, n'importe,
j'ai tout essaie, la valeur Me.Dirty garde toujours la
même valeur à l'intérieur d'une même procédure ?

Elle sert donc à rien ? Je ne sais pas ce qui se passe ?

Un Exemple :

Code:

Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.Dirty = True Then
Dim Info As String
Info = MsgBox("Voulez vous enregistrer les
informations ?", vbOKCancel)
If Infos = vbCancel Then
'MsgBox ("Les modifications ne seront
pas prise en compte!")
End if
End If

' suite du code

End Sub



Me.Dirty garde tout le temps la même valeur (vrai) et ne
tiens pas en compte du ou des changements de
l'enregistrement !
Je me suis informé sur le site de Microsoft à la page

http://support.microsoft.com/?kbid!0334

et j'ai vus qu'il parle d'un mode d'édition d'un
Formulaire.

Mes Questions: Est cela un problème de configuration
de mon Formulaire. Il y à peut-être un évènnement qui
infère avec l'instruction Me.Dirty ?

Est-que le mode d'édition qu'il parle sur le site de
Microsoft à quelque chose a voir avec l'instruction
Me.Dirty ?

J'ai essaie de placer l'instruction Me.Dirty dans
d'autres Routines du Formulaire FORM par exemple dans



Code:

Private Sub Form_Dirty(Cancel As Integer)
If Me.Dirty = True Then
Dim Info As String
Info = MsgBox("Voulez vous enregistrer les
informations ?", vbOKCancel)
If Infos = vbCancel Then
'MsgBox ("Les modifications ne seront
pas prise en compte!")
End if
End If

' suite du code

End Sub



Ici Me.Dirty garde tout le temps la même valeur (Faux) et
ne tiens pas en compte du ou des changements de
l'enregistrement !

Quelqu'un peux nous aider, car ne souhaite pas créer un
événement pour chaque contrôle sur mon formulaire . Il y
environ 200 Zones de textes (champs à afficher) ?


.



Avatar
Raymond [mvp]
Bonjour.

je crois que tu mélanges événement Dirty et propriété dirty et beforeupdate
et afterupdate. Simplifions:
Beforeupdate est un événement qui se déclenche juste avant la mise à jour de
l'enregistrement pour permettre de faire des controles et d'annuler
l'événement.
Afterupdate se déclenche lorsque la mise à jour de l'enregistrement a été
réalisée.
L'événement Dirty du formulaire se déclenche dès qu'une modification
intervient dans le formulaire et ne se redéclenchera plus jamais tant qu'on
reste sur le même enregistrement.
La propriété Dirty du formulaire se déclenche en même temps que l'événement
Dirty et reste à True tant que l'événement afterupdate n'a pas été
déclenché. La valeur passera à false après l'événement afterupdate.
ce qui veut dire qu'il ne sert à rien de tester la propriété Me.dirty dans
les événements beforedupdate et afterupdate car elle aura toujours la valeur
True étant donné que c'est l'événement Dirty qui l'a mise à True. sa valeur
passera à false après l'événement Afterupdate.
Les événements beforedupdate et afterupdate ne se déclenchent pas au
changement d'enregistrement si aucune modification n'est faite. S'ils se
déclenchent c'est qu'une modif a eu lieu, que l'événement Dirty a été
déclenché et que la propriété Dirty est à True.
En espérant avoir apporté un peu de clarté .
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


a écrit dans le message de
news:260dc01c461cd$79b71c90$
Je souhaite declencher un procédure après la modification
de données d'une fiche client. Cette procedure doit se
déclencher uniquement après modification des données !!!
Le problème c'est que la routine Form_BeforeUpdate se
déclenche à chaque fois que je passe d'une fiche à
l'autre, etc ....

C'est pour cela que j'ai utilisé la fonction Me.Dirty
qui devrait normalement faire la destinction si Oui ou
Non les données ont été modifie.

Me.Dirty ne tiens, dans mon cas, pas compte des
changements des données et ma procedure ne peut donc pas
se déclencher. Dans mon exemple que j'ai poste j'ai
remplace l'appel de ma procédure par une Message
écran, ...

Voila, pour plus de précisions.

Comment résoudre le problème ?


-----Message d'origine-----
bonjour
hum, tu veux faire quoi au juste ? :o))

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
a écrit dans le
message de news:26a9901c461c8$d846ab40$

J'ai un Formulaire principal sur le quel j'ai placée un
contrôle onglet avec plusieurs onglets est il y à environ
200 Zones de texte et d'autres composants placée dans le
différents onglets. Chaque propriété « Source contrôle »
des Zones de textes est « liée » à des champs de
différents tables figurant dans mon projet.

J'utilise également des sous-Formulaires dans mon
formulaire principal .

Mon programme tourne « Nickel » comme on dit à
l'exception de la fonction Me.Dirty qui ne fait pas ce
que j'attend d'elle !

J'ai me suis pose la question à quoi servent les
commandes suivantes :?


Me.Dirty

Ou

Form.Dirty



car quand je modifie une ou plusieurs de données sur mon
formulaire ou sur un de mes Sous-formulaire, n'importe,
j'ai tout essaie, la valeur Me.Dirty garde toujours la
même valeur à l'intérieur d'une même procédure ?

Elle sert donc à rien ? Je ne sais pas ce qui se passe ?

Un Exemple :

Code:

Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.Dirty = True Then
Dim Info As String
Info = MsgBox("Voulez vous enregistrer les
informations ?", vbOKCancel)
If Infos = vbCancel Then
'MsgBox ("Les modifications ne seront
pas prise en compte!")
End if
End If

' suite du code

End Sub



Me.Dirty garde tout le temps la même valeur (vrai) et ne
tiens pas en compte du ou des changements de
l'enregistrement !
Je me suis informé sur le site de Microsoft à la page

http://support.microsoft.com/?kbid!0334

et j'ai vus qu'il parle d'un mode d'édition d'un
Formulaire.

Mes Questions: Est cela un problème de configuration
de mon Formulaire. Il y à peut-être un évènnement qui
infère avec l'instruction Me.Dirty ?

Est-que le mode d'édition qu'il parle sur le site de
Microsoft à quelque chose a voir avec l'instruction
Me.Dirty ?

J'ai essaie de placer l'instruction Me.Dirty dans
d'autres Routines du Formulaire FORM par exemple dans



Code:

Private Sub Form_Dirty(Cancel As Integer)
If Me.Dirty = True Then
Dim Info As String
Info = MsgBox("Voulez vous enregistrer les
informations ?", vbOKCancel)
If Infos = vbCancel Then
'MsgBox ("Les modifications ne seront
pas prise en compte!")
End if
End If

' suite du code

End Sub



Ici Me.Dirty garde tout le temps la même valeur (Faux) et
ne tiens pas en compte du ou des changements de
l'enregistrement !

Quelqu'un peux nous aider, car ne souhaite pas créer un
événement pour chaque contrôle sur mon formulaire . Il y
environ 200 Zones de textes (champs à afficher) ?


.



Avatar
Bonjour Pierre,

merci d'abord pour ton aide.

J'ai essayé tous le événnements donc aussi l'afterupdate.

L'état dirty garde tout le temps la même valeur à
l'intérieur d'une procédure par exemple afterupdate !

Mon problème n'est toujours pas résolu.

J'ai ne suis pas le seul d'avoir le problème ...

Plus d'infos sur
http://www.developpez.net/forums/viewtopic.php?
p92830#1192830

Que faire pour résoudre le problème ???
-----Message d'origine-----
..../...
oui, ce serait plutot afterupdate qui serait bien, dirty
est un état, afterupdate est un évenemnt


--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
a écrit dans le
message de news:260dc01c461cd$79b71c90$

Je souhaite declencher un procédure après la modification
de données d'une fiche client. Cette procedure doit se
déclencher uniquement après modification des données !!!
Le problème c'est que la routine Form_BeforeUpdate se
déclenche à chaque fois que je passe d'une fiche à
l'autre, etc ....

C'est pour cela que j'ai utilisé la fonction Me.Dirty
qui devrait normalement faire la destinction si Oui ou
Non les données ont été modifie.

Me.Dirty ne tiens, dans mon cas, pas compte des
changements des données et ma procedure ne peut donc pas
se déclencher. Dans mon exemple que j'ai poste j'ai
remplace l'appel de ma procédure par une Message
écran, ...

Voila, pour plus de précisions.

Comment résoudre le problème ?


-----Message d'origine-----
bonjour
hum, tu veux faire quoi au juste ? :o))

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
a écrit dans le
message de news:26a9901c461c8$d846ab40

$

J'ai un Formulaire principal sur le quel j'ai placée un
contrôle onglet avec plusieurs onglets est il y à
environ


200 Zones de texte et d'autres composants placée dans le
différents onglets. Chaque propriété « Source contrôle »
des Zones de textes est « liée » à des champs de
différents tables figurant dans mon projet.

J'utilise également des sous-Formulaires dans mon
formulaire principal .

Mon programme tourne « Nickel » comme on dit à
l'exception de la fonction Me.Dirty qui ne fait pas ce
que j'attend d'elle !

J'ai me suis pose la question à quoi servent les
commandes suivantes :?


Me.Dirty

Ou

Form.Dirty



car quand je modifie une ou plusieurs de données sur mon
formulaire ou sur un de mes Sous-formulaire, n'importe,
j'ai tout essaie, la valeur Me.Dirty garde toujours la
même valeur à l'intérieur d'une même procédure ?

Elle sert donc à rien ? Je ne sais pas ce qui se passe ?

Un Exemple :

Code:

Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.Dirty = True Then
Dim Info As String
Info = MsgBox("Voulez vous enregistrer les
informations ?", vbOKCancel)
If Infos = vbCancel Then
'MsgBox ("Les modifications ne
seront


pas prise en compte!")
End if
End If

' suite du code

End Sub



Me.Dirty garde tout le temps la même valeur (vrai) et ne
tiens pas en compte du ou des changements de
l'enregistrement !
Je me suis informé sur le site de Microsoft à la page

http://support.microsoft.com/?kbid!0334

et j'ai vus qu'il parle d'un mode d'édition d'un
Formulaire.

Mes Questions: Est cela un problème de configuration
de mon Formulaire. Il y à peut-être un évènnement qui
infère avec l'instruction Me.Dirty ?

Est-que le mode d'édition qu'il parle sur le site de
Microsoft à quelque chose a voir avec l'instruction
Me.Dirty ?

J'ai essaie de placer l'instruction Me.Dirty dans
d'autres Routines du Formulaire FORM par exemple dans



Code:

Private Sub Form_Dirty(Cancel As Integer)
If Me.Dirty = True Then
Dim Info As String
Info = MsgBox("Voulez vous enregistrer les
informations ?", vbOKCancel)
If Infos = vbCancel Then
'MsgBox ("Les modifications ne
seront


pas prise en compte!")
End if
End If

' suite du code

End Sub



Ici Me.Dirty garde tout le temps la même valeur (Faux)
et


ne tiens pas en compte du ou des changements de
l'enregistrement !

Quelqu'un peux nous aider, car ne souhaite pas créer un
événement pour chaque contrôle sur mon formulaire . Il y
environ 200 Zones de textes (champs à afficher) ?


.




.




Avatar
Bonjour Raymond,

Merci pour l'éclairicisement.

Si j'ai bien compris c'est la évènnement Dirty qu'il me
faut.

Private Sub Form_Dirty(Cancel As Integer)
' Appel de ma fonction .....
End Sub

Le problème est le même, de que je change d'enregistrement
l'évennment est déclenché sans que j'ai modifie une de
données ?

Question qui vaut chèr:
Comment faire pour écrire une procédure qui se déclenche
uniquement quand on à changé les données sur le(s)
formulaire(s) ?


-----Message d'origine-----
Bonjour.

je crois que tu mélanges événement Dirty et propriété
dirty et beforeupdate

et afterupdate. Simplifions:
Beforeupdate est un événement qui se déclenche juste
avant la mise à jour de

l'enregistrement pour permettre de faire des controles
et d'annuler

l'événement.
Afterupdate se déclenche lorsque la mise à jour de
l'enregistrement a été

réalisée.
L'événement Dirty du formulaire se déclenche dès qu'une
modification

intervient dans le formulaire et ne se redéclenchera
plus jamais tant qu'on

reste sur le même enregistrement.
La propriété Dirty du formulaire se déclenche en même
temps que l'événement

Dirty et reste à True tant que l'événement afterupdate
n'a pas été

déclenché. La valeur passera à false après l'événement
afterupdate.

ce qui veut dire qu'il ne sert à rien de tester la
propriété Me.dirty dans

les événements beforedupdate et afterupdate car elle
aura toujours la valeur

True étant donné que c'est l'événement Dirty qui l'a
mise à True. sa valeur

passera à false après l'événement Afterupdate.
Les événements beforedupdate et afterupdate ne se
déclenchent pas au

changement d'enregistrement si aucune modification n'est
faite. S'ils se

déclenchent c'est qu'une modif a eu lieu, que
l'événement Dirty a été

déclenché et que la propriété Dirty est à True.
En espérant avoir apporté un peu de clarté .
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


a écrit dans le
message de

news:260dc01c461cd$79b71c90$
Je souhaite declencher un procédure après la modification
de données d'une fiche client. Cette procedure doit se
déclencher uniquement après modification des données !!!
Le problème c'est que la routine Form_BeforeUpdate se
déclenche à chaque fois que je passe d'une fiche à
l'autre, etc ....

C'est pour cela que j'ai utilisé la fonction Me.Dirty
qui devrait normalement faire la destinction si Oui ou
Non les données ont été modifie.

Me.Dirty ne tiens, dans mon cas, pas compte des
changements des données et ma procedure ne peut donc pas
se déclencher. Dans mon exemple que j'ai poste j'ai
remplace l'appel de ma procédure par une Message
écran, ...

Voila, pour plus de précisions.

Comment résoudre le problème ?


-----Message d'origine-----
bonjour
hum, tu veux faire quoi au juste ? :o))

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
a écrit dans le
message de news:26a9901c461c8$d846ab40

$

J'ai un Formulaire principal sur le quel j'ai placée un
contrôle onglet avec plusieurs onglets est il y à
environ


200 Zones de texte et d'autres composants placée dans le
différents onglets. Chaque propriété « Source contrôle »
des Zones de textes est « liée » à des champs de
différents tables figurant dans mon projet.

J'utilise également des sous-Formulaires dans mon
formulaire principal .

Mon programme tourne « Nickel » comme on dit à
l'exception de la fonction Me.Dirty qui ne fait pas ce
que j'attend d'elle !

J'ai me suis pose la question à quoi servent les
commandes suivantes :?


Me.Dirty

Ou

Form.Dirty



car quand je modifie une ou plusieurs de données sur mon
formulaire ou sur un de mes Sous-formulaire, n'importe,
j'ai tout essaie, la valeur Me.Dirty garde toujours la
même valeur à l'intérieur d'une même procédure ?

Elle sert donc à rien ? Je ne sais pas ce qui se passe ?

Un Exemple :

Code:

Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.Dirty = True Then
Dim Info As String
Info = MsgBox("Voulez vous enregistrer les
informations ?", vbOKCancel)
If Infos = vbCancel Then
'MsgBox ("Les modifications ne
seront


pas prise en compte!")
End if
End If

' suite du code

End Sub



Me.Dirty garde tout le temps la même valeur (vrai) et ne
tiens pas en compte du ou des changements de
l'enregistrement !
Je me suis informé sur le site de Microsoft à la page

http://support.microsoft.com/?kbid!0334

et j'ai vus qu'il parle d'un mode d'édition d'un
Formulaire.

Mes Questions: Est cela un problème de configuration
de mon Formulaire. Il y à peut-être un évènnement qui
infère avec l'instruction Me.Dirty ?

Est-que le mode d'édition qu'il parle sur le site de
Microsoft à quelque chose a voir avec l'instruction
Me.Dirty ?

J'ai essaie de placer l'instruction Me.Dirty dans
d'autres Routines du Formulaire FORM par exemple dans



Code:

Private Sub Form_Dirty(Cancel As Integer)
If Me.Dirty = True Then
Dim Info As String
Info = MsgBox("Voulez vous enregistrer les
informations ?", vbOKCancel)
If Infos = vbCancel Then
'MsgBox ("Les modifications ne
seront


pas prise en compte!")
End if
End If

' suite du code

End Sub



Ici Me.Dirty garde tout le temps la même valeur (Faux)
et


ne tiens pas en compte du ou des changements de
l'enregistrement !

Quelqu'un peux nous aider, car ne souhaite pas créer un
événement pour chaque contrôle sur mon formulaire . Il y
environ 200 Zones de textes (champs à afficher) ?


.




.




Avatar
Raymond [mvp]
Comment faire pour écrire une procédure qui se déclenche
uniquement quand on à changé les données sur le(s)
formulaire(s) ?


Il faut mettre ta procédure sur l'événement Form_Afterupdate si tu veux
l'éxécuter après la mise à jour des données ou dans l'événement
Form_BeforeUpdate si tu veux avoir la possibilité d'annuler les
modifications avant la mise à jour. Ces deux événements sont déclenchés si
une modif intervient sur l'enregistrement en cours, sinon ils ne sont pas
déclenchés et ta procédure non exécutée. le fait de passer et de changer
d'enregistrement ne déclecnhe pas ces 2 événements s'il n'y a pas de modifs.
Attention, des modifs peuvent être réalisées par le code et pas seulement
par l'opérateur, et le résultat est identique.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


a écrit dans le message de
news:2611001c461d4$7e034100$
Bonjour Raymond,

Merci pour l'éclairicisement.

Si j'ai bien compris c'est la évènnement Dirty qu'il me
faut.

Private Sub Form_Dirty(Cancel As Integer)
' Appel de ma fonction .....
End Sub

Le problème est le même, de que je change d'enregistrement
l'évennment est déclenché sans que j'ai modifie une de
données ?

Question qui vaut chèr:
Comment faire pour écrire une procédure qui se déclenche
uniquement quand on à changé les données sur le(s)
formulaire(s) ?

Avatar
Salut Raymond,

le programme sur le quel je travaille en se moment à été
crée par une ou des peronne(s) et il à été érit de
manière qu'il m'est IMPOSSIBLE d'exploiter les évènnement
Form_BeforeUpdate comme je le souhaite!

Ca fait Une semaine que j'ai cherche et j'ai tournée le
problème dans tous les sens sans y trouver une réponse
satisfaisante.

Je vais abandonner mon projet ... et perdre l'argent de 2
mois de travaille.




-----Message d'origine-----
Comment faire pour écrire une procédure qui se déclenche
uniquement quand on à changé les données sur le(s)
formulaire(s) ?


Il faut mettre ta procédure sur l'événement
Form_Afterupdate si tu veux

l'éxécuter après la mise à jour des données ou dans
l'événement

Form_BeforeUpdate si tu veux avoir la possibilité
d'annuler les

modifications avant la mise à jour. Ces deux événements
sont déclenchés si

une modif intervient sur l'enregistrement en cours,
sinon ils ne sont pas

déclenchés et ta procédure non exécutée. le fait de
passer et de changer

d'enregistrement ne déclecnhe pas ces 2 événements s'il
n'y a pas de modifs.

Attention, des modifs peuvent être réalisées par le code
et pas seulement

par l'opérateur, et le résultat est identique.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


a écrit dans le
message de

news:2611001c461d4$7e034100$
Bonjour Raymond,

Merci pour l'éclairicisement.

Si j'ai bien compris c'est la évènnement Dirty qu'il me
faut.

Private Sub Form_Dirty(Cancel As Integer)
' Appel de ma fonction .....
End Sub

Le problème est le même, de que je change
d'enregistrement

l'évennment est déclenché sans que j'ai modifie une de
données ?

Question qui vaut chèr:
Comment faire pour écrire une procédure qui se déclenche
uniquement quand on à changé les données sur le(s)
formulaire(s) ?


.




Avatar
Raymond [mvp]
Si tu expliquais ton problème et ce que tu veux faire ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


a écrit dans le message de
news:2617601c461e2$fae4ac50$
Salut Raymond,

le programme sur le quel je travaille en se moment à été
crée par une ou des peronne(s) et il à été érit de
manière qu'il m'est IMPOSSIBLE d'exploiter les évènnement
Form_BeforeUpdate comme je le souhaite!

Ca fait Une semaine que j'ai cherche et j'ai tournée le
problème dans tous les sens sans y trouver une réponse
satisfaisante.

Je vais abandonner mon projet ... et perdre l'argent de 2
mois de travaille.