OVH Cloud OVH Cloud

désactiver contrôles par procédure

16 réponses
Avatar
Alain V
Bonjour à tous,

Sous Access 2000, je voudrais désactiver les contrôles d'un formulaire par
une procédure du genre :

For Each Ctrl In Me.Controls
Ctrl.Enabled = False
Next Ctrl

Mais je ne trouve pas la syntaxe (Si cela est possible évidemment)

merci pour votre aide

Alain

6 réponses

1 2
Avatar
Alain V
Merci Eric

J'ai vérifié et le contrôle CdeEntCode est bien le bon et c'est un contrôle
de type Zone de Texte.
J'ai un test avant de passer par la désactivation des contrôles et quand je
ne passe pas par ce test, tous mes contrôles du formulaire sont bien actifs.
J'ai le pb avec tous les autres contrôles du formulaire qui se trouvent
dans le détail du formulaire???

A+

Alain

"Eric" a écrit dans le message de news:
OBPBV$
Bonjour Alain

Même disposition que toi et je n'ai aucun problème. Par contre le On Eror
Resume Next, il faut le mettre avant la boucle, juste au dessous de
Private Sub Form_Current et au dessus de Dim c as Control

Le On Error Goto 0 ne sert à rien

A mon avis, le CdeEntCode ne doit pas être le bon nom du contôle ou alors
il s'agit d'un contrôle qui ne possède pas la Propriété Enabled.

Voila mon code:
Private Sub Form_Current()
On Error Resume Next
Dim c As Control
For Each c In Me.Controls
c.Enabled = False
Next c
CdeEntCode.Enabled = True
Recherche.Enabled = True
Fermer.Enabled = True
End Sub

où Recherche est un bouton de commande en entête
Fermer en pied de formulaire (bouton de commande)
et CdeEntCode une zone de texte dans le détail.

A+
Eric


OK, voilà mon Pb

Private Sub Form_Current()

For Each Ctrl In Me.Controls
On Error Resume Next
Ctrl.Enabled = False
Next Ctrl
On Error GoTo 0
CdeEntCode.Enabled = True
Fermer.Enabled = True
Recherche.Enabled = True
...

"Recherche" se trouve dans l'entète du formulaire
"Fermer" se trouve dans le pied du formulaire
"CdeEntCode" se trouve dans la section détail

Recherche et Fermer se réactivent normalement, CdeEntCode ne se réactive
pas.
J'ai aussi essayé de réactiver les onglets présents dans le formulaire,
mais cela ne fonctionne pas...
Je dois oublier de réactiver quelque chose et je ne vois vraiment pas
quoi.
Si tu as une idée.

Merci

Alain

"3stone" a écrit dans le message de news:
uP$
Salut,

"Alain V"
| Mais n'as tu pas de réponse à mon problème de contrôles que je ne peux
pas
| réactiver?


Pourquoi pas ? Quel est le problème ?

Ils font parties de la collection "Controls" comme les autres...





Avatar
3stone
Salut,

"Alain V"
| Private Sub Form_Current()
|
| For Each Ctrl In Me.Controls
| On Error Resume Next
| Ctrl.Enabled = False
| Next Ctrl
| On Error GoTo 0
| CdeEntCode.Enabled = True
| Fermer.Enabled = True
| Recherche.Enabled = True
| ...
|
| "Recherche" se trouve dans l'entète du formulaire
| "Fermer" se trouve dans le pied du formulaire
| "CdeEntCode" se trouve dans la section détail
|
| Recherche et Fermer se réactivent normalement, CdeEntCode ne se réactive
| pas.
| J'ai aussi essayé de réactiver les onglets présents dans le formulaire, mais
| cela ne fonctionne pas...
| Je dois oublier de réactiver quelque chose et je ne vois vraiment pas quoi.


Oui... le On Error Resume Next est bien pratique, il masque les erreurs...
mais il masque *toutes* les erreurs...

Essaies d'écrire : Me.CdeEntCode
question de voir s'ils font partie de la collections...

Ou, regarde la version avec l'utilisation de la propriété Tag (Remarque)
Avec ca, tu maîtrise réellement la dé-activation des contrôles souhaités.


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
Eric
re,

N'ayant pas vu que tu travaillé avec des onglets, il faut donc corriger.
Donc rapidement, si la paget contenant le controle CdeEntCode est la
1ere du controle Contrôle Onglet (CtlTab), avec ceci ca devrait marcher:

Private Sub Form_Current()
On Error Resume Next
Dim c As Control
For Each c In Me.Controls
c.Enabled = False
Next c
CtlTab.Enabled = True ' Activation du Controle Onglet
Me.CtlTab.Pages.Item(0).Enabled = True ' et du 1ere page
For Each c In Me.CtlTab.Pages.Item(0).Controls
If c.Name = "CdeEntCode" Then
c.Enabled = Not (c.Enabled)
c.SetFocus
Exit For
End If
Next c
Recherche.Enabled = True
Fermer.Enabled = True
End Sub

A+
Eric

Merci Eric

J'ai vérifié et le contrôle CdeEntCode est bien le bon et c'est un contrôle
de type Zone de Texte.
J'ai un test avant de passer par la désactivation des contrôles et quand je
ne passe pas par ce test, tous mes contrôles du formulaire sont bien actifs.
J'ai le pb avec tous les autres contrôles du formulaire qui se trouvent
dans le détail du formulaire???

A+

Alain

"Eric" a écrit dans le message de news:
OBPBV$

Bonjour Alain

Même disposition que toi et je n'ai aucun problème. Par contre le On Eror
Resume Next, il faut le mettre avant la boucle, juste au dessous de
Private Sub Form_Current et au dessus de Dim c as Control

Le On Error Goto 0 ne sert à rien

A mon avis, le CdeEntCode ne doit pas être le bon nom du contôle ou alors
il s'agit d'un contrôle qui ne possède pas la Propriété Enabled.

Voila mon code:
Private Sub Form_Current()
On Error Resume Next
Dim c As Control
For Each c In Me.Controls
c.Enabled = False
Next c
CdeEntCode.Enabled = True
Recherche.Enabled = True
Fermer.Enabled = True
End Sub

où Recherche est un bouton de commande en entête
Fermer en pied de formulaire (bouton de commande)
et CdeEntCode une zone de texte dans le détail.

A+
Eric



OK, voilà mon Pb

Private Sub Form_Current()

For Each Ctrl In Me.Controls
On Error Resume Next
Ctrl.Enabled = False
Next Ctrl
On Error GoTo 0
CdeEntCode.Enabled = True
Fermer.Enabled = True
Recherche.Enabled = True
...

"Recherche" se trouve dans l'entète du formulaire
"Fermer" se trouve dans le pied du formulaire
"CdeEntCode" se trouve dans la section détail

Recherche et Fermer se réactivent normalement, CdeEntCode ne se réactive
pas.
J'ai aussi essayé de réactiver les onglets présents dans le formulaire,
mais cela ne fonctionne pas...
Je dois oublier de réactiver quelque chose et je ne vois vraiment pas
quoi.
Si tu as une idée.

Merci

Alain

"3stone" a écrit dans le message de news:
uP$
Salut,

"Alain V"
| Mais n'as tu pas de réponse à mon problème de contrôles que je ne peux
pas
| réactiver?


Pourquoi pas ? Quel est le problème ?

Ils font parties de la collection "Controls" comme les autres...









Avatar
Alain V
OK ça marche

Il fallait juste réactiver le contrôle Onglet "CtlTab0"
Je n'avais pas compris l'utilité de ce contrôle.

Merci encore

Alain


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

re,

N'ayant pas vu que tu travaillé avec des onglets, il faut donc corriger.
Donc rapidement, si la paget contenant le controle CdeEntCode est la 1ere
du controle Contrôle Onglet (CtlTab), avec ceci ca devrait marcher:

Private Sub Form_Current()
On Error Resume Next
Dim c As Control
For Each c In Me.Controls
c.Enabled = False
Next c
CtlTab.Enabled = True ' Activation du Controle Onglet
Me.CtlTab.Pages.Item(0).Enabled = True ' et du 1ere page
For Each c In Me.CtlTab.Pages.Item(0).Controls
If c.Name = "CdeEntCode" Then
c.Enabled = Not (c.Enabled)
c.SetFocus
Exit For
End If
Next c
Recherche.Enabled = True
Fermer.Enabled = True
End Sub

A+
Eric

Merci Eric

J'ai vérifié et le contrôle CdeEntCode est bien le bon et c'est un
contrôle de type Zone de Texte.
J'ai un test avant de passer par la désactivation des contrôles et quand
je ne passe pas par ce test, tous mes contrôles du formulaire sont bien
actifs.
J'ai le pb avec tous les autres contrôles du formulaire qui se trouvent
dans le détail du formulaire???

A+

Alain

"Eric" a écrit dans le message de news:
OBPBV$

Bonjour Alain

Même disposition que toi et je n'ai aucun problème. Par contre le On Eror
Resume Next, il faut le mettre avant la boucle, juste au dessous de
Private Sub Form_Current et au dessus de Dim c as Control

Le On Error Goto 0 ne sert à rien

A mon avis, le CdeEntCode ne doit pas être le bon nom du contôle ou alors
il s'agit d'un contrôle qui ne possède pas la Propriété Enabled.

Voila mon code:
Private Sub Form_Current()
On Error Resume Next
Dim c As Control
For Each c In Me.Controls
c.Enabled = False
Next c
CdeEntCode.Enabled = True
Recherche.Enabled = True
Fermer.Enabled = True
End Sub

où Recherche est un bouton de commande en entête
Fermer en pied de formulaire (bouton de commande)
et CdeEntCode une zone de texte dans le détail.

A+
Eric



OK, voilà mon Pb

Private Sub Form_Current()

For Each Ctrl In Me.Controls
On Error Resume Next
Ctrl.Enabled = False
Next Ctrl
On Error GoTo 0
CdeEntCode.Enabled = True
Fermer.Enabled = True
Recherche.Enabled = True
...

"Recherche" se trouve dans l'entète du formulaire
"Fermer" se trouve dans le pied du formulaire
"CdeEntCode" se trouve dans la section détail

Recherche et Fermer se réactivent normalement, CdeEntCode ne se réactive
pas.
J'ai aussi essayé de réactiver les onglets présents dans le formulaire,
mais cela ne fonctionne pas...
Je dois oublier de réactiver quelque chose et je ne vois vraiment pas
quoi.
Si tu as une idée.

Merci

Alain

"3stone" a écrit dans le message de news:
uP$
Salut,

"Alain V"
| Mais n'as tu pas de réponse à mon problème de contrôles que je ne peux
pas
| réactiver?


Pourquoi pas ? Quel est le problème ?

Ils font parties de la collection "Controls" comme les autres...










Avatar
Alain V
Hello Pierre

Comme je viens de répondre à Eric, c'était le contrôle onglet CtlTab0 qui me
causait ces soucis.
Je n'avais pas bien compris l'utilité de ce contrôle. Maintenant c'est
réglé.
Mais je pense que je vais utiliser la propriété "Tag" des contrôles comme tu
me l'avais déjà indiqué.

Merci encore et A+

Alain

"3stone" a écrit dans le message de news:
%
Salut,

"Alain V"
| Private Sub Form_Current()
|
| For Each Ctrl In Me.Controls
| On Error Resume Next
| Ctrl.Enabled = False
| Next Ctrl
| On Error GoTo 0
| CdeEntCode.Enabled = True
| Fermer.Enabled = True
| Recherche.Enabled = True
| ...
|
| "Recherche" se trouve dans l'entète du formulaire
| "Fermer" se trouve dans le pied du formulaire
| "CdeEntCode" se trouve dans la section détail
|
| Recherche et Fermer se réactivent normalement, CdeEntCode ne se réactive
| pas.
| J'ai aussi essayé de réactiver les onglets présents dans le formulaire,
mais
| cela ne fonctionne pas...
| Je dois oublier de réactiver quelque chose et je ne vois vraiment pas
quoi.


Oui... le On Error Resume Next est bien pratique, il masque les erreurs...
mais il masque *toutes* les erreurs...

Essaies d'écrire : Me.CdeEntCode
question de voir s'ils font partie de la collections...

Ou, regarde la version avec l'utilisation de la propriété Tag (Remarque)
Avec ca, tu maîtrise réellement la dé-activation des contrôles souhaités.


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
Eric
OK ça marche

Il fallait juste réactiver le contrôle Onglet "CtlTab0"
Je n'avais pas compris l'utilité de ce contrôle.

Merci encore

Alain


Mais aussi la page, du moins sous A2K sinon le controle reste

non activé.

A+
Eric

1 2