XL 2016 Textbox protéger lors de la consultation

ngexcel

XLDnaute Occasionnel
Bonjour
j ai pris comme exemple un model existant
ma question j ai des textbox je voudrais le locked quand je les consultes et les déprotéger quand je suis en saisie
dans l'exemple quand je clic sur fiche vierge je peux saisir mais quand je consulte par la listbox je veux que toutes les textbox soient protégés contre un mauvaise manip
merci de votre aide
 

Pièces jointes

  • saisie.xlsm
    26.6 KB · Affichages: 20

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

quand je clic sur fiche vierge je peux saisir mais quand je consulte par la listbox je veux que toutes les textbox soient protégés contre un mauvaise manip
Où est le bouton 'Fiche vierge' ?
Où est la listbox ? Ne serait-ce pas la Combobox du Userform ?

voici une macro à mettre dans le code du userForm et à appeler quand vous voulez :

LoquerTextBox True 'pour loquer les textbox
LoquerTextBox False ' pour les déloquer

VB:
Private Sub LoquerTextBox(bLocked As Boolean)
    Dim ctl As Control
    For Each ctl In Me.Controls
        If TypeOf ctl Is MSForms.TextBox Then
            ctl.Locked = bLocked
            '
            ' Les textbox pourront ou non être atteint
            ctl.Enabled = Not bLocked ' Facultatif
        End If
    Next
End Sub

Cordialement
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Dans userForm_initialize peut-être ? Mais je doute que ce soit ce que vous voulez ?

Essayez, testez, adaptez, c'est comme ça que vous apprendrez.

On peut en faire une méthode publique du UserForm en changeant simplement le mot Private par Public.
Vous pourrez alors l'appelez à partir d'un autre module :

Exemple dans un module de code deux macros.
Avant CHANGEZ LE PRIVATE SUB en PUBLIC SUB dans le code du userform
Code:
Sub Consultation()
    With F_Consult
        .LoquerTextBox True
        .Show
    End With
End Sub

Sub Edition()
    With F_Consult
        .LoquerTextBox False
        .Show
    End With
End Sub


Soyez plus précis dans votre question.

vous ne répondez pas à :
Où est le bouton 'Fiche vierge' ?
Où est la listbox ? Ne serait-ce pas la Combobox du Userform ?

Cordialement
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, ngexcel, Roblochon ;)

[aparté]
Roblochon
L'histoire a commencé ici
[/aparté]
Cette fois-ci on part sur un fichier basé sur du JB pur jus ;)

=>ngexcel
Il manque la fin de ta phrase dans ton dernier message
Tu veux avoir accès à quoi ?
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Ci-dessous le code associé à Fiche vierge
(j'ai ajouté des commentaires)
Code:
Private Sub B_ajout_Click()
'f= Sheets("bd")
  ligneEnreg = f.[a65000].End(xlUp).Row + 1 '1ère cellule vide en colonne A
Me.enreg = ligneEnreg
'on efface les valeurs dans les contrôles ci-dessous
  Me.nom = ""
  Me.Marié = False
  Me.Date_naissance = ""
  Me.Service = ""
  Me.Ville = ""
  Me.Salaire = ""
  For j = 0 To Me.Loisirs.ListCount - 1: Me.Loisirs.Selected(j) = False: Next j
  Me.nom.SetFocus '<- donc ici cela te mène sur le TextBox nom
End Sub
 

ngexcel

XLDnaute Occasionnel
Bonjour
dans le fichier création j ai un userform je veux l'ors de la consultation bloquer les textbox
et quand je fais un nouvelle fiche je retrouve l'accès aux textbox
merci
 

Pièces jointes

  • copie d'ecran.jpg
    copie d'ecran.jpg
    64.4 KB · Affichages: 5

Staple1600

XLDnaute Barbatruc
Re

J'ai ajouté une ligne (pour test)
VB:
Private Sub B_suivant_Click()
 If Me.CléCherchée.ListIndex < Me.CléCherchée.ListCount - 1 Then
   Me.CléCherchée.ListIndex = Me.CléCherchée.ListIndex + 1
   Me.nom.Locked = True ' ajout
  End If
End Sub
Private Sub b_précédent_Click()
  If Me.CléCherchée.ListIndex > 0 Then
    Me.CléCherchée.ListIndex = Me.CléCherchée.ListIndex - 1
    Me.nom.Locked = True ' ajout
  End If
End Sub
Et j'ai aussi ajouté cette autre ligne dans cette autre procédure
VB:
Private Sub CléCherchée_Click()
   ligneEnreg = f.[A:A].Find(Me.CléCherchée, LookIn:=xlValues).Row
   Me.enreg = ligneEnreg
   Me.nom = f.Cells(ligneEnreg, 1)
   Me.nom.Locked = True '< -ajout
   Me.Marié = f.Cells(ligneEnreg, 3)
[...]
End Sub
Quand tu consultes, tu ne peux pas modifier le TextBox Nom
Il faudrait donc suivre le même principe pour les autres TextBox.
 

Staple1600

XLDnaute Barbatruc
Re

=>ngexcel
En guise de mise du pied à l'étrier
Remplace la procédure existante par celle-ci
VB:
Private Sub UserForm_Initialize()
Dim c As Control
   Set f = Sheets("bd")
   lignefin = f.[a65000].End(xlUp).Row
   If lignefin > 2 Then
     Clé = f.Range("A2:A" & f.[a65000].End(xlUp).Row)
     Tri Clé, LBound(Clé), UBound(Clé)
     Me.CléCherchée.List = Clé
     Me.CléCherchée.ListIndex = -1
   Else
     If lignefin = 2 Then Me.CléCherchée.AddItem f.Range("A2")
   End If
   Me.Service.List = Array("Etudes", "Informatique", "Marketing", "Production")
   Me.Loisirs.List = Array("Lecture", "Cinéma", "Vélo", "Natation", "Internet")
   'ajout ------------------------
   For Each c In Me.Controls
        If TypeName(c) = "TextBox" Then
            c.Locked = True
        End If
    Next
    ' fin ajout ------------------
   B_ajout_Click
End Sub
Puis consulte ton Userform
 

Staple1600

XLDnaute Barbatruc
Re

=>Roblochon
J'avions point vue ton hommage à La Lockheed Corporation (cf message#2)
Je comprends mieux ton désarroi et donc ton emoticone.
;)
Par contre je m'en veux d'avoir taper du code dans mon VBE alors qu'il me tendait les ailes dans le message#2.
Ca doit être un effet délétère de trop de masque sur le pif!
;)
 

ngexcel

XLDnaute Occasionnel
Bonjour j ai bien mis en remplacement tes codes en supprimant les miens (le code associé à Fiche vierge, B_suivant_Click(),b_précédent_Click(),CléCherchée_Click(),UserForm_Initialize())
cela bloque les textbox cest bon mais quand je fais nouvel fiche ca reste bloqué
merci de ta patience
 

Discussions similaires

Statistiques des forums

Discussions
315 136
Messages
2 116 633
Membres
112 819
dernier inscrit
Trivet