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

Empecher modifications données

15 réponses
Avatar
dadpub
Bonsoir,

Je voudrais que les utilisateurs ne puissent pas modifiés les données sur un
formulaire si une certaine date est passée.
A l'ouverture si la date est pas dépassée on fait ce qu'on veut, si la date
est dépassée on regarde mais on peut pas modifier.
J'ai un peu tout essayé : Dirty - Snapshot - AllowEditions - mais je m'en
sort pas !
Pouvez-vous me donner une piste ?

Merci.

10 réponses

1 2
Avatar
Dragan
Bonsoir, tu peux essayer à l'ouverture du formulaire si la date est dépassée
de bloquer l'ensemble des controles. Dans le code VBA de l'événement "Sur
chargement" (OnLoad) du formulaire :
ex:
nomducontrol.enabledúlse => aucune saisie possible
nomducontrol.locked=true => Le control n'apparaît pas grisé






"dadpub" a écrit :

Bonsoir,

Je voudrais que les utilisateurs ne puissent pas modifiés les données sur un
formulaire si une certaine date est passée.
A l'ouverture si la date est pas dépassée on fait ce qu'on veut, si la date
est dépassée on regarde mais on peut pas modifier.
J'ai un peu tout essayé : Dirty - Snapshot - AllowEditions - mais je m'en
sort pas !
Pouvez-vous me donner une piste ?

Merci.





Avatar
dadpub
Salut,

J'ai 250 controles dont 3 ou 4 sous-formulaires !
C'est pas possible de bloquer le formulaire ?
Merci

"Dragan" a écrit dans le message de news:

Bonsoir, tu peux essayer à l'ouverture du formulaire si la date est
dépassée
de bloquer l'ensemble des controles. Dans le code VBA de l'événement "Sur
chargement" (OnLoad) du formulaire :
ex:
nomducontrol.enabledúlse => aucune saisie possible
nomducontrol.locked=true => Le control n'apparaît pas grisé






"dadpub" a écrit :

Bonsoir,

Je voudrais que les utilisateurs ne puissent pas modifiés les données sur
un
formulaire si une certaine date est passée.
A l'ouverture si la date est pas dépassée on fait ce qu'on veut, si la
date
est dépassée on regarde mais on peut pas modifier.
J'ai un peu tout essayé : Dirty - Snapshot - AllowEditions - mais je m'en
sort pas !
Pouvez-vous me donner une piste ?

Merci.







Avatar
michel chambrillon
Bonjour
Pour bloquer le formulaire
Me.alloweditsúlse => pas de modifs
Me.AllowAdditionsúlse => pas d'ajouts
Me.AllowDeletionsúlse => pas de suppressions
Voila
Michel
"dadpub" a écrit dans le message de
news:%
Bonsoir,

Je voudrais que les utilisateurs ne puissent pas modifiés les données sur
un formulaire si une certaine date est passée.
A l'ouverture si la date est pas dépassée on fait ce qu'on veut, si la
date est dépassée on regarde mais on peut pas modifier.
J'ai un peu tout essayé : Dirty - Snapshot - AllowEditions - mais je m'en
sort pas !
Pouvez-vous me donner une piste ?

Merci.



Avatar
Dragan
Ouais, tu peux te servir d'une moulinette comme suit :

Dim Ctrl as Access.Control

For Each Ctrl In Form.Controls
IF Ctrl.ControlType<>AcImage AND Ctrl.ControlType<>AcLabel THEN
Ctrl.EnabledúLSE
Ctrl.Locked=TRUE
END IF
Next

ici je bloque tous les controls du formulaire qui ne sont ni des étiquettes
ni des images.


"dadpub" a écrit :

Salut,

J'ai 250 controles dont 3 ou 4 sous-formulaires !
C'est pas possible de bloquer le formulaire ?
Merci

"Dragan" a écrit dans le message de news:

> Bonsoir, tu peux essayer à l'ouverture du formulaire si la date est
> dépassée
> de bloquer l'ensemble des controles. Dans le code VBA de l'événement "Sur
> chargement" (OnLoad) du formulaire :
> ex:
> nomducontrol.enabledúlse => aucune saisie possible
> nomducontrol.locked=true => Le control n'apparaît pas grisé
>
>
>
>
>
>
> "dadpub" a écrit :
>
>> Bonsoir,
>>
>> Je voudrais que les utilisateurs ne puissent pas modifiés les données sur
>> un
>> formulaire si une certaine date est passée.
>> A l'ouverture si la date est pas dépassée on fait ce qu'on veut, si la
>> date
>> est dépassée on regarde mais on peut pas modifier.
>> J'ai un peu tout essayé : Dirty - Snapshot - AllowEditions - mais je m'en
>> sort pas !
>> Pouvez-vous me donner une piste ?
>>
>> Merci.
>>
>>
>>





Avatar
dadpub
Salut,

"michel chambrillon" a écrit dans le
message de news:
Bonjour
Pour bloquer le formulaire
Me.alloweditsúlse => pas de modifs
Me.AllowAdditionsúlse => pas d'ajouts
Me.AllowDeletionsúlse => pas de suppressions



J'ai déjà tenter tout ça, ça marche pas !
'---------code------------------------------
Private Sub Form_Open(Cancel As Integer)

Dim Mydate1 As Date
Dim Mydate2 As Date
Dim NbJour As Integer
Mydate1 = Now
Mydate2 = DateAdmis
NbJour = Mydate1 - Mydate2

If NbJour > 60 Then
Me!Rectangle.BackColor = 255
Me.AllowEdits = False
Else
Me!Rectangle.BackColor = 65408
Me.AllowEdits = True
End If

End Sub
'------fin-code------------------------------

Merci
Avatar
dadpub
Salut,

"Dragan" a écrit dans le message de news:

Ouais, tu peux te servir d'une moulinette comme suit :

Dim Ctrl as Access.Control

For Each Ctrl In Form.Controls
IF Ctrl.ControlType<>AcImage AND Ctrl.ControlType<>AcLabel THEN
Ctrl.EnabledúLSE
Ctrl.Locked=TRUE
END IF
Next



Marche pas !
J'ai le message "erreur 438"
"propriete ou methode non gere par cet objet"
Merci.
Avatar
dadpub
Re-salut,
Petite rectification !
Le code ci-dessous marche .... la première fois que j'ouvre le formulaire.
Mais si je le ferme et re-ouvre sur un autre enregistrement, ben ça marche
plus ! ! !
C'est quoi ?
Merci

'---------code------------------------------
Private Sub Form_Open(Cancel As Integer)

Dim Mydate1 As Date
Dim Mydate2 As Date
Dim NbJour As Integer
Mydate1 = Now
Mydate2 = DateAdmis
NbJour = Mydate1 - Mydate2

If NbJour > 60 Then
Me!Rectangle.BackColor = 255
Me.AllowEdits = False
Else
Me!Rectangle.BackColor = 65408
Me.AllowEdits = True
End If

End Sub
'------fin-code------------------------------


Avatar
michel chambrillon
re Bonjour
L'evenement form_open ne me semble pas etre le bon
Il faut ecrire ton code pour qu'il s'execute a chaque changement
d'enregistrement car si j'ai bien compris dateAdmis est un champ de la
table.Donc a l'evenement form_open il tient compte que du dateAdmis du
premier enr.
Affecte ton code a l'evenement sur activation en VBA form_current
@plus
Michel
"dadpub" a écrit dans le message de
news:O$
Re-salut,
Petite rectification !
Le code ci-dessous marche .... la première fois que j'ouvre le formulaire.
Mais si je le ferme et re-ouvre sur un autre enregistrement, ben ça marche
plus ! ! !
C'est quoi ?
Merci

'---------code------------------------------
Private Sub Form_Open(Cancel As Integer)

Dim Mydate1 As Date
Dim Mydate2 As Date
Dim NbJour As Integer
Mydate1 = Now
Mydate2 = DateAdmis
NbJour = Mydate1 - Mydate2

If NbJour > 60 Then
Me!Rectangle.BackColor = 255
Me.AllowEdits = False
Else
Me!Rectangle.BackColor = 65408
Me.AllowEdits = True
End If

End Sub
'------fin-code------------------------------






Avatar
dadpub
Bonsoir,
C'est sympa de m'aider ...
J'étais en train de comprendre ceci, de "maitre Raymond" ! Qu'en penses-tu ?
http://groups.google.com/group/microsoft.public.fr.access/browse_thread/thread/2b2983ed9caa7f43/7758a51eb1c0b575?hl=fr&lnk=gst&q=AllowEdits+ne+peut+pas+intervenir+si+dirty+est+%C3%A0+True#7758a51eb1c0b575

Tu me dis de mettre le code sur Activation et pas sur Open.
J'ai essayé ce code quasiment sur tous les evenements sans succés.
A ce stade il faut peut-etre preciser 2 choses :
- J'ai 3 sous-formulaires dans mon formulaire, et je me demande si
l'insuccés viendrait pas de là !
- Sur Activation (tiens, tiens !) le code fait tout un tas de vérifications
et donc de modifications d'enregistrement, le probleme pourrait venir de là
aussi !
Exemple de code :
'-------------------------------
If Sexe.Value = "Male" Then
Menopause.Enabled = False
Else
Menopause.Enabled = True
End If
'--------------------------------
@ +
Merci.

"michel chambrillon" a écrit dans le
message de news:
re Bonjour
L'evenement form_open ne me semble pas etre le bon
Il faut ecrire ton code pour qu'il s'execute a chaque changement
d'enregistrement car si j'ai bien compris dateAdmis est un champ de la
table.Donc a l'evenement form_open il tient compte que du dateAdmis du
premier enr.
Affecte ton code a l'evenement sur activation en VBA form_current
@plus
Michel
"dadpub" a écrit dans le message de
news:O$
Re-salut,
Petite rectification !
Le code ci-dessous marche .... la première fois que j'ouvre le
formulaire.
Mais si je le ferme et re-ouvre sur un autre enregistrement, ben ça
marche plus ! ! !
C'est quoi ?
Merci

'---------code------------------------------
Private Sub Form_Open(Cancel As Integer)

Dim Mydate1 As Date
Dim Mydate2 As Date
Dim NbJour As Integer
Mydate1 = Now
Mydate2 = DateAdmis
NbJour = Mydate1 - Mydate2

If NbJour > 60 Then
Me!Rectangle.BackColor = 255
Me.AllowEdits = False
Else
Me!Rectangle.BackColor = 65408
Me.AllowEdits = True
End If

End Sub
'------fin-code------------------------------









Avatar
Dragan
si le code marche. Mais tu dois avoir des controls qui n'ont pas de
propriétés ENABLED et LOCKED comme des lignes ou des rectangles.

"dadpub" a écrit :

Salut,

"Dragan" a écrit dans le message de news:

> Ouais, tu peux te servir d'une moulinette comme suit :
>
> Dim Ctrl as Access.Control
>
> For Each Ctrl In Form.Controls
> IF Ctrl.ControlType<>AcImage AND Ctrl.ControlType<>AcLabel THEN
> Ctrl.EnabledúLSE
> Ctrl.Locked=TRUE
> END IF
> Next

Marche pas !
J'ai le message "erreur 438"
"propriete ou methode non gere par cet objet"
Merci.





1 2