Ajouter une valeur supplémentaire a la saisie de la textbox

Bonjour,

J'ai créé un userform avec une textbox et 2 checkbox ,une se decoche si l'autre cochée et vis versa (une ou l'autre)

La premiére ajoute "kl" la deuieme "t" (kilo ou tone) dans la textbox

J’aimerai que le valeur "kl" ou "t" renvoyé dans la textbox par les checkbox ne soit pas supprimable lors de la saisie

en gros

l'utilisateur coche la mesure kilo et saisie la valeur "330" dans la textbox, automatiquement elle affiche "330 kilo " pour renvoyer vers le classeur

Si il coche tone et saisie "2" elle affiche "2 tones

Merci

Bonjour

Un exemple de ton fichier serait le bienvenu pour plus de compréhension

Crdlt

Voila merci

7check-box.xlsm (17.58 Ko)

existe il un double bouton pour userform de ce type ?

double

C'est ce que tu appelles un exemple de ton fichier une cellule avec 34455 kl

Dans la vision vba il y a l userform et sont code

j'ai créé le fichier juste pour le forum

je demande juste la méthode en code après j’adapte

Un volontaire ?

Bonjour,

ce que l'on peut faire c'est à l'ouverture de l'USF vous désactivez les checkbox et le bouton.
Ils restent inaccessibles tant que vous n'avez pas remplit la textbox
Une fois la textbox remplie, on active les deux checkbox pour faire un choix
Lorsque vous avez coché une des deux checkbox, on active le bouton Command

Avant que je ne poste les codes, merci de votre avis ?

Crdlt

oui je pense que c'est mieux ca permet d assurer la saisie d une mesure

Dans le fichier que vous avez posté sur ce fil, faites ceci

1 Code initialize

Private Sub UserForm_Initialize()
Call controle
End Sub

2. Ajoutez le code ci-dessous

Private Sub controle()
With CheckBox1
    .Value = False
    .Enabled = False
End With
With CheckBox2
    .Value = False
    .Enabled = False
End With
CommandButton1.Enabled = False
End Sub

3. Code Textbox1 : ajoutez ce code qui permet de rendre les deux checkbox active si la textbox contient une valeur. Si la valeur dans la textbox est effacée, les checkbox et le bouton command seront inactifs

Private Sub TextBox1_Change()
If TextBox1 = vbNullString Then Call controle: Exit Sub
CheckBox1.Enabled = True
CheckBox2.Enabled = True
End Sub

4. code Checkbox : ajoutez les deux codes ci-dessous. Le bouton sera actif si vous cochez une des 2 checkbox

Private Sub CheckBox1_Click() 'decoche checkkbox 2 si 1 cochée

Select Case CheckBox1
    Case Is = True: CheckBox2 = False: CommandButton1.Enabled = True
    Case Is = False: CommandButton1.Enabled = False
End Select
End Sub

Private Sub CheckBox2_Click() 'decoche checkkbox 1 si 2 cochée

Select Case CheckBox2
    Case Is = True: CheckBox1 = False: CommandButton1.Enabled = True
    Case Is = False: CommandButton1.Enabled = False
End Select
End Sub

Si ok, pensez à

Cordialement

CA FONCTIONNE MAIS CA EFFACE LA VALEUR RENSEIGNE

Bah non.
faites le test dans le fichier que vous avez posté sur ce fil.

J'ai beau essayer dans tout les sens

je saisie une valeur les textbox deviennent clickable

Mais quand je coche elle efface la valeur pour laisser "kl" ou "t"

MON COE

Private Sub UserForm_Initialize()
Call controle
End Sub
Private Sub controle()
With CheckBox1
    .Value = False
    .Enabled = False
End With
With CheckBox2
    .Value = False
    .Enabled = False
End With
CommandButton1.Enabled = False
End Sub
Private Sub TextBox1_Change()
If TextBox1 = vbNullString Then Call controle: Exit Sub
CheckBox1.Enabled = True
CheckBox2.Enabled = True
End Sub
Private Sub CheckBox1_Click() 'decoche checkkbox 2 si 1 cochée

Select Case CheckBox1
    Case Is = True: CheckBox2 = False: CommandButton1.Enabled = True
    Case Is = False: CommandButton1.Enabled = False
End Select

TextBox1.Value = "kl"
End Sub

Private Sub CheckBox2_Click() 'decoche checkkbox 1 si 2 cochée

Select Case CheckBox2
    Case Is = True: CheckBox1 = False: CommandButton1.Enabled = True
    Case Is = False: CommandButton1.Enabled = False
End Select

TextBox1.Value = "t"
End Sub

Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("A1") = TextBox1.Value
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'Remplissage textbox uniquement en valeur numérique
If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

je saisie une valeur les textbox deviennent clickable

Mais quand je coche elle efface la valeur pour laisser "kl" ou "t"

.... Hum, normal si vous changez ce que je vous donne.
Vous ajoutez des instructions Textbox1.value = ... avant le END SUB du code Checkbox.

Si vous voulez ajouter l'unité de mesure dans la feuille, remplacez votre code lié au bouton par celui ci-dessous

Private Sub CommandButton1_Click()
Dim unite As String
If CheckBox1 = True Then unite = "Kl" Else: unite = "t"
Sheets("Feuil1").Range("A1") = TextBox1.Value & " " & unite
End Sub

Vous ne devez rien avoir dans la textbox. Vous mettez votre valeur puis vous cocher la checkbox pour faire le choix del'unité

Bonjour Anarium, Dan,

Une autre proposition basée sur un Spin-Button (Bouton Toupie) permettant de basculer sur le choix Kilo/Tonne.

Le formulaire s'ouvre par le bouton couleur et s'initialise sur 1Tonne. Un clic sur la gauche du symbole < permet de passer à 1 Kilo.

Ou revenir à la Tonne par un clic sur la droite du symbole >

Modifier le chiffre pour le remplacer par la valeur souhaitée.

2a-adaptermodif.xlsm (240.19 Ko)

Vous ne devez rien avoir dans la textbox. Vous mettez votre valeur puis vous cocher la checkbox pour faire le choix del'unité

effectivement j ai mal copie le code

cet fonction est parfaite et marche du tonnerre merci

Une autre proposition basée sur un Spin-Button (Bouton Toupie) permettant de basculer sur le choix Kilo/Tonne.

Merci pour cet option différente je vais utiliser celle de dan mais je pense qu'elle sera certainement utile pour les autres utilisateur du forum

merci à tous pour votre aide

Rechercher des sujets similaires à "ajouter valeur supplementaire saisie textbox"