OVH Cloud OVH Cloud

VBA...et les controles

2 réponses
Avatar
cphil
Bonjour/soir,

Je débute, voici mes deux premières questions sur ce forum
très symphatique, merci d'avance :-)

Sous VBA Exel Office XP, :
1) j'ai un Userform avec un Combobox et
un Textbox. A l'ouverture de Userform le Combobox à le focus,
si rien n'est sélectioné ou saisi dans le combo j'aimerai que le combo garde
le focus malgré l'envoi de Tab ou Entrée, comment dois_je faire?
2) Comment valider une saisie dans l'un ou l'autre des contrôles cités
plus haut avec seulement la touche Entrée afin par exemple d'affecter
une valeur à une cellule dans Exel?

Merci pour vos réponses !
A+


-cphil-

2 réponses

Avatar
François Picalausa
"cphil" <cazenave.(suffitspam) a écrit dans le message
de news:%
Sous VBA Exel Office XP, :
1) j'ai un Userform avec un Combobox et
un Textbox. A l'ouverture de Userform le Combobox à le focus,
si rien n'est sélectioné ou saisi dans le combo j'aimerai que le
combo garde le focus malgré l'envoi de Tab ou Entrée, comment dois_je
faire? 2) Comment valider une saisie dans l'un ou l'autre des
contrôles cités
plus haut avec seulement la touche Entrée afin par exemple d'affecter
une valeur à une cellule dans Exel?




Bonjour/soir,

1/Essaye ceci:

'Pour éviter que la sélection passe à un autre contrôle
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If ComboBox1.Text = "" Then
MsgBox "Saisie invalide!"
Cancel = True
End If
End Sub

'Pour éviter qu'on ne puisse quitter (sinon, la croix en haut à droite
fonctionne toujours):
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If ComboBox1.Text = "" Then
MsgBox "Saisie invalide!"
ComboBox1.SetFocus
Cancel = True
End If
End Sub

2/
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)
If KeyCode = vbKeyReturn Then
Excel.Range("A1").FormulaR1C1 = "'Hello!"
KeyCode = 0 'évite que le keycode soit propagé au bouton "default"
End If
End Sub

(fonctionne aussi pour une TextBox)
Toutefois, il n'est pas conseillé de remplacer l'appui sur la touche Enter
parce que dans la conception design des boites de dialogue, il est prévu que
cette touche serve à confirmer le formulaire (propriété default d'un
boutton).

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Avatar
cphil
Merci François, une fois vu celà paraît facile!

-cphil-

"François Picalausa" a écrit dans le message de
news:
"cphil" <cazenave.(suffitspam) a écrit dans le message
de news:%
> Sous VBA Exel Office XP, :
> 1) j'ai un Userform avec un Combobox et
> un Textbox. A l'ouverture de Userform le Combobox à le focus,
> si rien n'est sélectioné ou saisi dans le combo j'aimerai que le
> combo garde le focus malgré l'envoi de Tab ou Entrée, comment dois_je
> faire? 2) Comment valider une saisie dans l'un ou l'autre des
> contrôles cités
> plus haut avec seulement la touche Entrée afin par exemple d'affecter
> une valeur à une cellule dans Exel?


Bonjour/soir,

1/Essaye ceci:

'Pour éviter que la sélection passe à un autre contrôle
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If ComboBox1.Text = "" Then
MsgBox "Saisie invalide!"
Cancel = True
End If
End Sub

'Pour éviter qu'on ne puisse quitter (sinon, la croix en haut à droite
fonctionne toujours):
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If ComboBox1.Text = "" Then
MsgBox "Saisie invalide!"
ComboBox1.SetFocus
Cancel = True
End If
End Sub

2/
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger,


ByVal
Shift As Integer)
If KeyCode = vbKeyReturn Then
Excel.Range("A1").FormulaR1C1 = "'Hello!"
KeyCode = 0 'évite que le keycode soit propagé au bouton "default"
End If
End Sub

(fonctionne aussi pour une TextBox)
Toutefois, il n'est pas conseillé de remplacer l'appui sur la touche Enter
parce que dans la conception design des boites de dialogue, il est prévu


que
cette touche serve à confirmer le formulaire (propriété default d'un
boutton).

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com