Textbox

Résolu
vincendie Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
vincendie Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
bonjour a tous,
j'ai créé un fichier excel (2013) avec lequel j'introduits des données, dès l'ouverture du classeur un mot de passe est demandé, celui ci est lié a un nom ID.
en tant q'administrateur du fichier j'ai la possibilité d'afficher ou non certaines feuilles du classeur aux autres utilisateurs.
je fais cette opération a l'aide d'un userform qui fonctionne tres bien, en inscrivant dans les textbox correspondants un "x" ça donne accès aux feuilles et lorsqu'il n'y a pas de "X", pas d'accès.
ma question est la suivante:
serait-il possible de faire en sorte d'inscrire le fameux "X" d'un simple clic dans le textbox?
voici le code utilisé pour le moment:

Private Sub ValiderSaisie_Click()

num = Sheets("parametrage").Range("A65536").End(xlUp).Row + 1 'on part du bas de la colonne, on cherche
Sheets("parametrage").Activate

Range("A" & num).Value = TextBox1.Value
Range("B" & num).Value = TextBox2.Value
Range("C" & num).Value = TextBox3.Value
Range("D" & num).Value = TextBox4.Value
Range("E" & num).Value = TextBox5.Value
Range("F" & num).Value = TextBox6.Value
Range("G" & num).Value = TextBox7.Value
Range("H" & num).Value = TextBox8.Value
Unload Saisir
Accueil.Show
End Sub


d'avance merci a tous :-)

4 réponses

PlacageGranby Messages postés 393 Date d'inscription   Statut Membre Dernière intervention   26
 
Bonjour,
Dans le fond, tu veux convertir un textbox en une sorte de checkbox.

On peut utiliser l'évènement gotfocus.
S'il y a déjà un X, on l'enlève, sinon, on en met un.
Private TextBox1_GotFocus()
If TextBox1.Text = "X" Then
    TextBox1.Text = ""
Else
    TextBox1.Text = "X"
End If
End Sub


Si tu n'aime pas la façon de réagir de gotfocus, une autre options serait l'évènement double click qui selon moi serait préférable.

Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.Text = "X" Then
    TextBox1.Text = ""
Else
    TextBox1.Text = "X"
End If
End Sub
0
PlacageGranby Messages postés 393 Date d'inscription   Statut Membre Dernière intervention   26
 
Si l'un ou l'autre de ces bout de code te convient, il faut donc l'appliquer pour chaque Textbox dans leur événement choisit respectif.
0
vincendie Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour PlacageGranby,
en fait il n'est pas important de conserver la textbox, une case a cocher ferait tout aussi bien l'affaire, le hic c'est que je ne parviens pas a l'intégrer dans le code (que j'ai inscrit dans ma demande plus haut) afin qu'elle agisse de la même manière que mes textbox actuelles.
en gros chaque fois que je remplis mon formulaire et que je valide, l'encodage suivant est fait sur la ligne suivante du dernier encodage et ainsi de suite..
0
vincendie Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour a tous,
j'ai trouvé la solution a mon problème:
j'ai simplement remplacé les TextBox par des CheckBox et adapté le code comme ceci:
Private Sub RetourAccueil_Click()
Unload Saisir
Accueil.Show

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

If CloseMode = vbFormControlMenu Then Cancel = True

End Sub


Private Sub ValiderSaisie_Click()

num = Sheets("parametrage").Range("A65536").End(xlUp).Row + 1 'on part du bas de la colonne, on cherche
Sheets("parametrage").Activate

Range("A" & num).Value = TextBox1.Value
Range("B" & num).Value = TextBox2.Value

Range("C" & num).Value = CheckBox1.Value
If CheckBox1.Value Then
 Range("C" & num).Value = "X"
 Else
 Range("C" & num).Value = ""
 End If
 
 Range("D" & num).Value = CheckBox2.Value
If CheckBox2.Value Then
 Range("D" & num).Value = "X"
 Else
 Range("D" & num).Value = ""
 End If
 
Range("E" & num).Value = CheckBox3.Value
If CheckBox3.Value Then
 Range("E" & num).Value = "X"
 Else
 Range("E" & num).Value = ""
 End If
 
Range("F" & num).Value = CheckBox4.Value
If CheckBox4.Value Then
 Range("F" & num).Value = "X"
 Else
 Range("F" & num).Value = ""
 End If

Range("G" & num).Value = CheckBox5.Value
If CheckBox5.Value Then
 Range("G" & num).Value = "X"
 Else
 Range("G" & num).Value = ""
 End If

Range("H" & num).Value = CheckBox6.Value
If CheckBox6.Value Then
 Range("H" & num).Value = "X"
 Else
 Range("H" & num).Value = ""
 End If
Unload Saisir
Accueil.Show
End Sub



Merci a PlacageGranby pour s'être impliqué si rapidement, bonne journée :-)
0