Textbox

Résolu/Fermé
vincendie Messages postés 3 Date d'inscription vendredi 21 novembre 2014 Statut Membre Dernière intervention 22 novembre 2014 - 21 nov. 2014 à 20:33
vincendie Messages postés 3 Date d'inscription vendredi 21 novembre 2014 Statut Membre Dernière intervention 22 novembre 2014 - 22 nov. 2014 à 11:05
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 mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 26
Modifié par PlacageGranby le 21/11/2014 à 21:22
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 mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 26
21 nov. 2014 à 21:23
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 vendredi 21 novembre 2014 Statut Membre Dernière intervention 22 novembre 2014
22 nov. 2014 à 08:32
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 vendredi 21 novembre 2014 Statut Membre Dernière intervention 22 novembre 2014
Modifié par vincendie le 22/11/2014 à 11:08
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