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

Verouillage zone de liste modifiable

5 réponses
Avatar
whitehell
Bonjour,

J'ai cr=E9=E9 une base de donn=E9es dans laquelle j'ai cr=E9=E9 un formulai=
re
avec une zone de liste modifiable qui trouve ses valeurs =E0 partir
d'une "Liste de valeurs" (A, B, C ou D).
Lors de l'enregistrement d'une nouvelle pi=E8ce, l'utilisateur =E0 le
choix entre quatre type de pi=E8ce qu'il choisit =E0 partir de cette liste
de valeurs (A, B, C ou D). Je souhaiterai v=E9rouiller cette zone de
liste modifiable pour que lors du visionnage des donn=E9es, le champ ne
puisse pas =E9tre modifi=E9.
En principe il suffirait de mettre "oui" dans la case v=E9rouillage des
propri=E9t=E9s. Cela fonctionne, cependant lorsque l'on veut enregistrer
une nouvelle pi=E8ce et la qualifier (A, B C ou D), on ne peut pas faire
de choix, la liste =E9tant v=E9rouill=E9e...
Comment dois-je faire pour bloquer cette liste simplement lors du
visionnage des donn=E9es??

Merci par avance pour vos r=E9ponses

Whitehell

5 réponses

Avatar
Argyronet
Bonjour,

Tout dépend comment vous considérez que vous êtes en mode VISU ou en mode
MODIF...
Normalement, il faut jouer avec la propriété AllowEdits...
De là vous pouvez par exemple poser le code suivant :

Private Sub MaListe_GotFocus()
'''' Si j'autorise les modifications alors je déverrouille
If Me.AllowEdits Then
MaListe.Locked = False
Else
MaListe.Locked = True
End If
End Sub

Autre solution :
Il vous pourriez poser un bouton "Modifier Fiche" et mettre la propriété
Locked à True pour tous les contrôles. De là, seul l'appuie sur ce bouton
autorise la modif e.g. mettre la propriété Locked à False.
Changer une variable Boolean de module (blnModifEnCours=True/False) pour
déterminer l'état actuel dès que l'on appuie sur le bouton qui change de
légende en même temps.
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Bonjour,

J'ai créé une base de données dans laquelle j'ai créé un formulaire
avec une zone de liste modifiable qui trouve ses valeurs à partir
d'une "Liste de valeurs" (A, B, C ou D).
Lors de l'enregistrement d'une nouvelle pièce, l'utilisateur à le
choix entre quatre type de pièce qu'il choisit à partir de cette liste
de valeurs (A, B, C ou D). Je souhaiterai vérouiller cette zone de
liste modifiable pour que lors du visionnage des données, le champ ne
puisse pas étre modifié.
En principe il suffirait de mettre "oui" dans la case vérouillage des
propriétés. Cela fonctionne, cependant lorsque l'on veut enregistrer
une nouvelle pièce et la qualifier (A, B C ou D), on ne peut pas faire
de choix, la liste étant vérouillée...
Comment dois-je faire pour bloquer cette liste simplement lors du
visionnage des données??

Merci par avance pour vos réponses

Whitehell




Avatar
whitehell
Bonjour Argy,

La seconde solution me parait plus indiquée à ce que je veux faire.
Cependant, ne m'y connaissant pas en langage VBA, et l'assistant
n'étant pas suffisant pour créer une telle application, je n'arrive
pas à mettre en place ce système...
Pourrais tu m'envoyer ce code que je pourrai mettre dans la propriété
"sur clic" de mon bouton de commande?
D'ailleurs je suis en train de penser q'utiliser un bouton de bascule
serait peut-être encore plus pratique...

Merci par avance pour l'aide que tu pourrais m'apporter.

Salutations

Whitehell
Avatar
whitehell
Bonjour tout le monde,

J'ai trouvé une autre solution, j'ai créé un formulaire que je
qualifirais de menu général.
J'ai créé une macro ki ouvre mon formulaire en lecture seule et une
autre macro qui ouvre ce même formulaire en mode modification.
J'ai ensuite créé deux boutons sur mon menu général ki utilise ces
deux macros. Je peux donc choisir de visualiser les données ou
lesmodifier!
Je pensais que tout fonctionnerait, cependant je rencontre un problème
majeur... Le formulaire qui est ouvert est basé sur une table ki
comporte une cinquantaine d'enregistrement. J'avais donc créé une zone
de liste modifiable afin de naviguer facilement dans les divers
enregistrements, seulement, cette liste se trouve aussi figée en
lecture seule...
Comment puis-je faire pour choisir un enregistrement à partir de cette
liste en lecture seule???

Merci pour votre aide par avance, en espérant que vous pourrez me
sortir de l'embarras.

Whitehell
Avatar
Argyronet
Bonjour,

Sur le principe et beaucoup de développeurs qui découvrent Access sont
concernés, il faut distinguer 2 choses :
1/ Je veux consulter/modifier des fiches dans un formulaire (AllowEdits)
2/ Je veux ajouter des fiches (donc des données). (AllowAdditions)
Pour rendre pratique ces 2 clauses, le mieux est de construire 2 formulaires
distincts ayant le même look mais dont les propriétés pour le 1er sont Tout à
OUI pour les propriétés concernant les données sauf celle "Entrée de données"
qui est NON et pour le second cas toutes sont à OUI y compris "Entrée de
données".
Pour votre cas, il suffit de mettre la propriété Verrouillé à OUI pour tous
les contrôles (Textboxes, Zones de liste, Groupes d'option)...
Vous posez alors un bouton intitulé Modifier par exemple.

Bon par exemple ( à adapter bien entendu ) :

Option Compare Database
Option Explicit

Private m_blnModifActive As Boolean

Private Sub cmdModifier_Click()
'On vérifie l'état de la variable
If m_blnModifActive = True Then
'On est en mode modif
VerrouillerControles False
cmdModifier.Caption = "On peut modifier"
Else
'On est en mode lecture seule
VerrouillerControles True
cmdModifier.Caption = "On peut plus modifier"
End If
m_blnModifActive = Not m_blnModifActive
End Sub

Private Sub VerrouillerControles(ByVal Etat As Boolean)
Texte1.Locked = Etat
Texte3.Locked = Etat
Texte5.Locked = Etat
Texte7.Locked = Etat
Texte9.Locked = Etat
Texte11.Locked = Etat
Cadre1.Locked = Etat
Liste15.Locked = Etat
'..............................etc

'On verrouille à l'inverse d'autres bouton du formulaire
MonBoutonImprimer.Enabled = Etat
MonBoutonEnregistrer.Enabled = Etat
MonBoutonFermer.Enabled = Etat
End Sub

Private Sub MonBoutonEnregistrer_Click()
m_blnModifActive = False
VerrouillerControles True
End Sub

Private Sub Texte1_Change()
'A mettre ne oeuvre pour les contrôles similaires
MonBoutonEnregistrer.Enabled = True
End Sub

Vous pouvez appeler l'événement Change pour chaque contrôle devant recevoir
une donnée de manière à libérer l'état du bouton Enregistrer (où le code est
conséquent au changement d'état des contrôles - donc à adapter)...

Bon courage

--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Bonjour Argy,

La seconde solution me parait plus indiquée à ce que je veux faire.
Cependant, ne m'y connaissant pas en langage VBA, et l'assistant
n'étant pas suffisant pour créer une telle application, je n'arrive
pas à mettre en place ce système...
Pourrais tu m'envoyer ce code que je pourrai mettre dans la propriété
"sur clic" de mon bouton de commande?
D'ailleurs je suis en train de penser q'utiliser un bouton de bascule
serait peut-être encore plus pratique...

Merci par avance pour l'aide que tu pourrais m'apporter.

Salutations

Whitehell


--

Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Bonjour Argy,

La seconde solution me parait plus indiquée à ce que je veux faire.
Cependant, ne m'y connaissant pas en langage VBA, et l'assistant
n'étant pas suffisant pour créer une telle application, je n'arrive
pas à mettre en place ce système...
Pourrais tu m'envoyer ce code que je pourrai mettre dans la propriété
"sur clic" de mon bouton de commande?
D'ailleurs je suis en train de penser q'utiliser un bouton de bascule
serait peut-être encore plus pratique...

Merci par avance pour l'aide que tu pourrais m'apporter.

Salutations

Whitehell




Avatar
whitehell
Rebonjour,

Je me suis amusé! Mais ça à l'air de fonctionner comme il faut, du
moins ça répond à mes attentes.
Merci d'avoir prit le temps de m'expliquer tout ça!

Bonne continuation

Whitehell