Bonjour à tous et mille bisous à celui qui va m'aider!!! Cela fait plusieurs heures que je galère avec un truc certainement trop facile... De plus (si possible ce serait parfait si cela fonctionne avec Excel 2007 et 2019)
J'ai un UserForm avec 8 TextBox et un Conbo
je voudrais bloquer le Btn enregistrer si les champs ne sont pas remplis
pas de format à respecter (c'est tout du texte)
J'y suis arrivé avec text1
Pprivate Sub txt1_change()
If txt1 <>"" Then
btn enregistrer .Enable=True
Else
btn enregistrer.Enable=False
End if
End Sub
Super ça marche
ça se complique quand je veux ajouter les autres, je cherche de l'aide!!!
au secourt...
Merci d'avance
JBJ
Désolé, je ne voudrais pas abuser, mais j'ai fait un excès de confiance et j'ai un peu de mal à intégrer vos solutions dans mon code. Je joins mon Userform pour plus de compréhension. Pour les affectations des résultats dans mon tableur pas de soucis, ça marche. Pour le moment, lol… PS fichier sans code. Un simple .Show pour frm et listes pour les Combo. Merci
Function keycode_to_keyascii(KeyCode)
'converti le keycode en keyascii pour les touche de a à z et 0 à 9 by patricktoulon
Select Case KeyCode
Case 65 To 90: KeyCode = KeyCode + 32
Case 96 To 105: KeyCode = KeyCode - 48
End Select
keycode_to_keyascii = KeyCode
End Function
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim touches
touches = keycode_to_keyascii(KeyCode)
Select Case touches
Case 97 To 122: 'les lettres
'msgbox c'est la lettre(" & chr(touches) &")"
Case 48 To 57: 'le pavé numerique
MsgBox "c'est le nummero(" & Chr(touches) & ")"
'le reste on les a pas touché le keycode reste le keycode
'donc
Case 9: 'la touche TAB
Case 13 'la touche ENTER
'les touchee fleches
Case 37: 'fleche gauche
Case 38: 'fleche heut
Case 39: 'fleche droite
Case 40: 'fleche basse
Case 48 'la touche suppr
Case 8 'la touche retour en arrier (back)
Case 17 'touche CTRL
Case 18 'touche ALT ou ALTGR
Case 16 'touche majuscule
Case 32 'touche espace
Case 27 'touche ESCAPE
'etc..etc...
End Select
MsgBox touches
End Sub
re
j'ai joint un fichier avec l'Userform pour le visualiser et le comprendre. Il y a un nombre conséquent de Textboxs et de combo. je voudrais simplement bloquer mon bouton valider quand certaines de mes textboxs et combo ne sont pas remplis. Style si txt1 et txt3 et txt6 et cbo1 et cbo5 sont vides = Btn Valider est false.
Une solution très simple dans le fichier joint avec :
- dans l'UserForm, pour lancer le processus :
VB:
Private Sub UserForm_Initialize()
'ici les codes pour les ComBoBoxes
Application.OnTime 1, "Boutons_Enabled" 'lance le processus
End Sub
- dans le module standard Module1 :
Code:
Sub Boutons_Enabled()
While UserForms.Count
With frmSaisie
.BtnValider.Enabled = .CboContact <> "" And .CboModCasq <> "" And .TxtCasque <> "" And .CboEcheance <> "" And .TxtDateLivraison <> "" And .CboModePaiement <> ""
.BtnEnregistrer.Enabled = .TxtSociete <> "" And .TxtAdresse <> "" And .TxtCodePost <> "" And .TxtVille <> "" And .TxtNomResponsable <> "" And .TxtEmail <> "" And .TxtTel <> ""
End With
DoEvents
Wend
End Sub
On aura compris que la macro tourne en arrière-plan...
re
les deux boutons son non enabled au départ
des que les controls qui leur sont lie sont dûment remplis il se débloquent si tu en re vide un il se re bloque
Je n'ai pas repris le fichier de JOELJBJ car j'ai poursuivi (durant le film du soir ... pas évident pour un jeunot du Vba comme moi) sur le fichier presque similaire à celui de notre ami Robert que je voulais mettre en ligne hier soir. Avec la participation de notre ami Patrick, je suis parvenu à ce que je voulais, à savoir l'inefficacité du code si l'on effaçait le TextBox via sa sélection et l'utilisation de la touche "Espace".
Sur ce bonne nuit (quoique le second film n'est pas terminé) à toutes & à tous
@+ Eric c
Pièces jointes
Vérifier que certains TxtBox ou Cbo sont bien remplis - Touche Espace indispo -.xlsm
Une solution très simple dans le fichier joint avec :
- dans l'UserForm, pour lancer le processus :
VB:
Private Sub UserForm_Initialize()
'ici les codes pour les ComBoBoxes
Application.OnTime 1, "Boutons_Enabled" 'lance le processus
End Sub
- dans le module standard Module1 :
Code:
Sub Boutons_Enabled()
While UserForms.Count
With frmSaisie
.BtnValider.Enabled = .CboContact <> "" And .CboModCasq <> "" And .TxtCasque <> "" And .CboEcheance <> "" And .TxtDateLivraison <> "" And .CboModePaiement <> ""
.BtnEnregistrer.Enabled = .TxtSociete <> "" And .TxtAdresse <> "" And .TxtCodePost <> "" And .TxtVille <> "" And .TxtNomResponsable <> "" And .TxtEmail <> "" And .TxtTel <> ""
End With
DoEvents
Wend
End Sub
On aura compris que la macro tourne en arrière-plan...
Bonjour job75, bonjour à tous. Cette solution est parfaite pour mon projet ! Ça marche très bien, je peux modifier les valeurs une fois le Btn Valider valide. C'est parfait pour moi!!! Les autres solutions proposées sont excellentes aussi et je les garde précieusement (ça peut toujours servir dans d'autres cas ...). Merci à tous pour votre aide, je vous aime... Bisous