Bloquer tous les champs à part UN

Résolu
4rocky4 Messages postés 55 Date d'inscription mercredi 1 novembre 2006 Statut Membre Dernière intervention 16 avril 2009 - 7 févr. 2008 à 15:43
4rocky4 Messages postés 55 Date d'inscription mercredi 1 novembre 2006 Statut Membre Dernière intervention 16 avril 2009 - 8 févr. 2008 à 12:14
Bonjour,

Je voudrais verrouiller tous les champs de mon formulaire de consultation sauf UN, une liste déroulante

Pour verrouiller tous les champs, j'entre ce code :

For Each Ctl In Me.Controls
If Ctl.ControlType = acTextBox Then
Ctl.Locked = True
Ctl.Enabled = False
ElseIf Ctl.ControlType = acComboBox Then
Ctl.Locked = True
Ctl.Enabled = False
End If
Next Ctl

Et je voudrais donc pouvoir autoriser l'accès et la saisie d'un champ.
Je pensais donc mettre ce code :

For Each Ctl In Me.Controls
If Ctl.ControlType = acTextBox Then
Ctl.Locked = True
Ctl.Enabled = False
ElseIf Ctl.ControlType = acComboBox Then
Ctl.Locked = True
Ctl.Enabled = False
End If
Next Ctl
Me."mon_champ".Enabled = true
Me."mon_champ".Locked = false

Mais ca ne marche pas  

Comment pourrais-je faire

Merci

rocky

- Un con qui marche ira plus loin qu'un intellectuel assis -

32 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
8 févr. 2008 à 10:48
Bonjour

Ben :
Public sub LockAll()
...
end sub

Si tu le met dans un module, n'oublie pas de remplacer "Me" par le nom de la form.
Sinon, tu peux mettre la Sub dans le code de la form sans pb.

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
3
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
8 févr. 2008 à 10:52
Re,

Dans un module :

Private Sub CtrlLook(oFrm As Form)
Dim Ctrl As Control
For Each Ctrl In oFrm .Controls
            Select Case Ctrl .ControlType
                Case acTextBox, acComboBox, acCheckBox
                    Ctrl .Locked = True
            End Select
        Next Ctrl
End Sub
A+
Exploreur

 Linux a un noyau, Windows un pépin
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
7 févr. 2008 à 15:46
Bonjour

Tu as réellement fais
Me."NomChamp".Enabled
ou
Me.NomChamp.Enabled
?

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
4rocky4 Messages postés 55 Date d'inscription mercredi 1 novembre 2006 Statut Membre Dernière intervention 16 avril 2009
7 févr. 2008 à 15:49
non non, excusez moi.
la ligne exacte est :

me.ld_recherche.Enabled

/FONT>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
4rocky4 Messages postés 55 Date d'inscription mercredi 1 novembre 2006 Statut Membre Dernière intervention 16 avril 2009
7 févr. 2008 à 15:50
Voilà les deux lignes arpès mon For :

Me.ld_rechercheEnabled = true
Me.ld_recherche.Locked = false

rocky

- Un con qui marche ira plus loin qu'un intellectuel assis -
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
7 févr. 2008 à 16:07
Bonjour

Ne marque réponse acceptée que si ton pb est résolu, sinon, ton message sera moins consulté et donc tu auras mon de réponses.

Si tu met Enabled à False, pas besoin de toucher à Locked.

Essaye en virant les appels à Locked.

De plus, ton test peut être simplifié :

For Each Ctl In Me.Controls
    Select Case Ctl.ControlType
         Case acTextBox,acComboBox
            Ctl.Enabled = False
    End Select
Next Ctl

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
4rocky4 Messages postés 55 Date d'inscription mercredi 1 novembre 2006 Statut Membre Dernière intervention 16 avril 2009
7 févr. 2008 à 16:18
Bien vue pour la simplification. J'avais même pas fait attention.
J'ai donc modifié mon code comme ceci :

For Each Ctl In Me.Controls
            Select Case Ctl.ControlType
                Case acTextBox, acComboBox
                    Ctl.Enabled = False
            End Select
Next Ctl
Me.ld_recherche.Enabled = True

Lorsque je lance le formulaire, j'ai accès à ma liste déroulante, mais je ne peux pas cliquer dessus pour selectionner la donnée que je souhaite.

rocky

- Un con qui marche ira plus loin qu'un intellectuel assis -
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
7 févr. 2008 à 16:27
Salut,

Enlève dans se cas je pense : acComboBox

A+
Exploreur

 Linux a un noyau, Windows un pépin
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
7 févr. 2008 à 16:28
Re,

En simplifiant :

For Each ctl In Me.Controls
  If TypeOf ctl Is TextBox Then ctl.Enabled = False
Next ctl
Me.ld_recherche.Enabled = True

A+
Exploreur

 Linux a un noyau, Windows un pépin
0
4rocky4 Messages postés 55 Date d'inscription mercredi 1 novembre 2006 Statut Membre Dernière intervention 16 avril 2009
7 févr. 2008 à 16:30
Oui j'y avais pensé.
Mais dans mon formulaire, il y a plein d'autres listes déroulantes ...

Si je fais comme tu dit, faut que je bloque toutes les liste une par une.

J'pensais pouvoir tout bloquer puis débloqué seulement les champs que je veux.

rocky

- Un con qui marche ira plus loin qu'un intellectuel assis -
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
7 févr. 2008 à 16:34
Salut,

Quel est le nom de ton SEUL ConboBox que tu ne veux pas bloquer ?

A+
Exploreur

 Linux a un noyau, Windows un pépin
0
4rocky4 Messages postés 55 Date d'inscription mercredi 1 novembre 2006 Statut Membre Dernière intervention 16 avril 2009
7 févr. 2008 à 16:36
Il s'agit de Me.ld_recherche
C'est lui qui me permet de faire une recherche donc faut qu'il soit en état de marche :)

rocky

- Un con qui marche ira plus loin qu'un intellectuel assis -
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
7 févr. 2008 à 16:38
Re,

J'y pense, débloque le en fin de boucle alors...

A+
Exploreur

 Linux a un noyau, Windows un pépin
0
4rocky4 Messages postés 55 Date d'inscription mercredi 1 novembre 2006 Statut Membre Dernière intervention 16 avril 2009
7 févr. 2008 à 16:42
Re,

J'ai fait comme cela :

 For Each Ctl In Me.Controls
            Select Case Ctl.ControlType
                Case acTextBox, acComboBox
                    Ctl.Enabled = False
            End Select
        Next Ctl
        Me.ld_recherche.Enabled = True

J'ai accès à la liste déroulante mais je ne peux pas selectionner

rocky

- Un con qui marche ira plus loin qu'un intellectuel assis -
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
7 févr. 2008 à 16:47
Re,

Je viens de faire l'essai avec le code que je t'ai donné à (16h28..lol)...sur une form avec 2 textbox et un combo et cela fonctionne, j'ai bien accès à mon combo et sa liste déroulante....

A+
Exploreur

 Linux a un noyau, Windows un pépin
0
4rocky4 Messages postés 55 Date d'inscription mercredi 1 novembre 2006 Statut Membre Dernière intervention 16 avril 2009
7 févr. 2008 à 16:51
Re,

Voilà donc le code de 16h28

For Each ctl In Me.Controls
  If TypeOf ctl Is TextBox Then ctl.Enabled = False
Next ctl
Me.ld_recherche.Enabled = True

Seule les textbox sont bloqués ...
il est normal d'accéder au reste, j'me trompe

rocky

- Un con qui marche ira plus loin qu'un intellectuel assis -
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
7 févr. 2008 à 17:00
Re,

Un peu d'astuces....d'espièglerie....c'est la vie de Candy ! lol...

For Each ctl In Me.Controls
  If TypeOf ctl Is TextBox Then ctl.Enabled = False
  If TypeOf ctl Is ComboBox Then ctl.Enabled = False
Next ctl
Me.ld_recherche.Enabled = True

A+
Exploreur

 Linux a un noyau, Windows un pépin
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
7 févr. 2008 à 17:02
Ou :

For Each ctl In Me.Controls
  If TypeOf ctl Is TextBox Then ctl.Enabled = False  If Not ctl.Name ld_recherche Then ctl.Enabled False
Next ctl

A+
Exploreur

 Linux a un noyau, Windows un pépin
0
kakenette Messages postés 218 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 15 novembre 2009 1
7 févr. 2008 à 17:10
Moi pour Locker un Combobox contre la modification, je n'utilise pas le affreux .locked mais je vais directement dans le KeyPress et KeyDown.

Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
KeyCode = 0
End Sub

Private Sub Combo1_KeyPress(KeyAscii As Integer)
KeyAscii = 0
End Sub

kakenette
0
4rocky4 Messages postés 55 Date d'inscription mercredi 1 novembre 2006 Statut Membre Dernière intervention 16 avril 2009
7 févr. 2008 à 17:10
Re,

lol oui ca aide parfois


J'ai un sérieux problème dans mon code là.
Voici le code de tout le formulaire (Va faloir de la place  et j'explique après :

Option Compare Database
Option Explicit



Private Sub bt_annuler_Click()
btannuler
End Sub



Private Sub bt_supprimer_Click()
btsupprimer
End Sub



Private Sub bt_valider_Click()
btvalider
End Sub



Private Sub Form_Load()
Call presentation(Me)
End Sub



Private Sub bt_menu_Click()
btmenu
End Sub



Private Sub ld_recherche_AfterUpdate()
    ' Rechercher l'enregistrement correspondant au contrôle.
    Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[code_ce] = " & Str(Nz(Me![ld_recherche], 0))
    Me.Détail.Visible = True
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub



Private Sub Form_Open(Cancel As Integer)
Select Case Openargs
    Case "ce_ajout"
        'on affiche la partie Détail
        Me.Détail.Visible = True
        'On cache les outils recherche
        Me.boite_rectangle.Visible = False
        Me.za_nom.Visible = False
        Me.ld_recherche.Visible = False
        Me.éti_recherche.Visible = False
        'modification impossible
        Me.AllowEdits = False
       
    Case "ce_modif"
        'Boutons
        Me.bt_annuler.Visible = False
        Me.bt_valider.Visible = False
        'Ajout impossible
        Me.AllowAdditions = False
        'on affiche la partie Détail
        Me.Détail.Visible = False
        'les Champs sont accessible
        For Each Ctl In Me.Controls
            Select Case Ctl.ControlType
                Case acTextBox, acComboBox
                    Ctl.Enabled = True
            End Select
        Next Ctl
        Me.za_titre.Caption = "Modification d'un comité d'engagement"
       
    Case "ce_consultation"
        'boutons
        Me.bt_annuler.Visible = False
        Me.bt_valider.Visible = False
        'ajout impossible
        Me.AllowAdditions = False
        'on affiche la partie Détail
        Me.Détail.Visible = False
        ' on bloque les champs que l'on consulte pour empécher la modification
        For Each Ctl In Me.Controls
            Select Case Ctl.ControlType
                Case acTextBox, acComboBox
                    Ctl.Enabled = False
            End Select
        Next Ctl
        Me.ld_recherche.Enabled = True
        'on change le titre
        Me.za_titre.Caption = "Consultation d'un comité d'engagement"
       
    Case "ce_suppr"
        'boutons
        Me.bt_annuler.Visible = False
        Me.bt_valider.Visible = False
        Me.bt_supprimer.Visible = True
        'ajout impossible
        Me.AllowAdditions = False
        'on affiche la partie Détail
        Me.Détail.Visible = False
        ' on bloque les champs que l'on consulte pour empécher la modification
        For Each Ctl In Me.Controls
            Select Case Ctl.ControlType
                Case acTextBox, acComboBox
                    Ctl.Enabled = False
            End Select
        Next Ctl
        Me.ld_recherche.Enabled = True
        'on change le titre
        Me.za_titre.Caption = "Suppression d'un comité d'engagement"
End Select
End Sub


Donc là si mon formulaire s'ouvre un "modification", j'ai accès à la liste ld_recherche.

Si j'ouvre en "consultation", je n'y ai pas accès.

J'ai éssayé de mettre exactement la même boucle FOR que "modification"dans "consultation" et là ...    Ca ne change rien ... j'ai toujours pas accès à la liste déroulante.

C'est grave docteur ?             







rocky




- Un con qui marche ira plus loin qu'un intellectuel assis -
0
Rejoignez-nous