Limiter la saisie d'une combobox

  • Initiateur de la discussion Initiateur de la discussion Geraldine
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Geraldine

XLDnaute Occasionnel
Bonjour,

Dans une combobox, je voudrais limiter les possibilités de saisie et autoriser uniquement

- chiffre
- le point du clavier numerique

et interdire
- Lettre et caractère du genre $ £ & * etc ..


merci à tous, géraldine
 
Re : Limiter la saisie d'une combobox

bonjour geraldine le forum combobox ou textbox !!! si textbox
Dim Chge As Boolean
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
Case Is = 8
Chge = True
Case Is = 13, 110, 96 To 105
Case Else
KeyCode = 0
End Select
End Sub
Private Sub TextBox1_KeyUP(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
Case Is = 46
Chge = True
TextBox1 = ""
End Select
End Sub
salutations
 
Dernière édition:
Re : Limiter la saisie d'une combobox

bonjour Géraldine,

une solution ressemblant à ça devrait pouvoir fonctionner
J'imagine que le "." c'est la virgule?

sub Combobox_Change()
V=Combobox.value
if not is numeric(V) then exit sub

end sub
 
Re : Limiter la saisie d'une combobox

Je viens d'essayer, essaie plutot ça...

Private Sub ComboBox1_Change()
If Not IsNumeric(ComboBox1.Value) Then
saisie = Left(ComboBox1.Value, Len(ComboBox1.Value) - 1)
ComboBox1.Value = saisie
End If
End Sub
 
Re : Limiter la saisie d'une combobox

re smotty, ça fonctionne pas chez moi le code complet

Private Sub ComboBox1_Change()
If Not IsNumeric(ComboBox1.Value) Then
saisie = Left(ComboBox1.Value, Len(ComboBox1.Value) - 1)
ComboBox1.Value = saisie
End If
Dim Lig As Integer
Lig = Me.ComboBox1.ListIndex
Me.TextBoxP1.Value = ShtC.Range("A" & 7 + Lig + 1).Value
'Me.TextBoxT1.Value = Me.TextBoxP1.Value * 0
Me.TextBoxQ2.Value = ShtC.Range("I6").Value
Me.TextBoxP2.Value = ShtC.Range("A" & 7 + Lig + 1).Value
Me.TextBoxT2.Value = Me.TextBoxQ2.Value * Me.TextBoxP2.Value
Me.TextBoxQ3.Value = ShtC.Range("J6").Value
Me.TextBoxP3.Value = ShtC.Range("A" & 7 + Lig + 1).Value
Me.TextBoxT3.Value = Me.TextBoxQ3.Value * Me.TextBoxP3.Value
Me.TextBoxP10.Value = Me.TextBoxP1.Value / 6.55957
TextBoxP10 = Format(TextBoxP10.Value, "#,##0.00")
Me.TextBoxP20.Value = Me.TextBoxP2.Value / 6.55957
TextBoxP20 = Format(TextBoxP20.Value, "#,##0.00")
Me.TextBoxP30.Value = Me.TextBoxP3.Value / 6.55957
TextBoxP30 = Format(TextBoxP30.Value, "#,##0.00")
'Me.TextBoxT10.Value = Me.TextBoxT1.Value / 6.55957
'TextBoxT10 = Format(TextBoxT10.Value, "#,##0.00")
Me.TextBoxT20.Value = Me.TextBoxT2.Value / 6.55957
TextBoxT20 = Format(TextBoxT20.Value, "#,##0.00")
Me.TextBoxT30.Value = Me.TextBoxT3.Value / 6.55957
TextBoxT30 = Format(TextBoxT30.Value, "#,##0.00")
Me.TextBoxM2.Value = ShtC.Range("B" & 7 + Lig + 1).Value
TextBoxM2 = Format(TextBoxM2.Value, "#,##0.00")
End Sub

merci géraldine
 
Re : Limiter la saisie d'une combobox

attenttion!! Le listindex =-1 si la saisie dans le combobox ne fait pas partie de la liste.
- Toute les valeurs de la liste doivent être numériques avec "," et non "." pour virgule

En espérant que ça t'aidera....
 
Re : Limiter la saisie d'une combobox

Bonjour à tous,

Avec la célèbre formule du Docteur Pierrot!
Code:
Private Sub Combobox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("0123456789.", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Un must!

Cordialement
 
Re : Limiter la saisie d'une combobox

Re et merci à vous deux,

mais j'ai du mal à adapter tout ça,

La valeur saisie est une valeur de la liste mais au lieu de la chercher, la personne peut taper directement cette valeur. Et c'est là mon problème ...

@
 
Re : Limiter la saisie d'une combobox

dame géraldine comprend pas grand chose ...

le code et ça bug sur le point du clavier numérique "erreur d'execution 13", mais le keypress marche puisque tout les lettres virgule ne sont pas accepté.

Private Sub Combobox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("0123456789.", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

Private Sub ComboBox1_Change()
Dim Lig As Integer
Lig = Me.ComboBox1.ListIndex
Me.TextBoxP1.Value = ShtC.Range("A" & 7 + Lig + 1).Value
Me.TextBoxQ2.Value = ShtC.Range("I6").Value
Me.TextBoxP2.Value = ShtC.Range("A" & 7 + Lig + 1).Value
Me.TextBoxT2.Value = Me.TextBoxQ2.Value * Me.TextBoxP2.Value
Me.TextBoxQ3.Value = ShtC.Range("J6").Value
Me.TextBoxP3.Value = ShtC.Range("A" & 7 + Lig + 1).Value
Me.TextBoxT3.Value = Me.TextBoxQ3.Value * Me.TextBoxP3.Value
Me.TextBoxP10.Value = Me.TextBoxP1.Value / 6.55957
TextBoxP10 = Format(TextBoxP10.Value, "#,##0.00")
Me.TextBoxP20.Value = Me.TextBoxP2.Value / 6.55957
TextBoxP20 = Format(TextBoxP20.Value, "#,##0.00")
Me.TextBoxP30.Value = Me.TextBoxP3.Value / 6.55957
TextBoxP30 = Format(TextBoxP30.Value, "#,##0.00")
'Me.TextBoxT10.Value = Me.TextBoxT1.Value / 6.55957
'TextBoxT10 = Format(TextBoxT10.Value, "#,##0.00")
Me.TextBoxT20.Value = Me.TextBoxT2.Value / 6.55957
TextBoxT20 = Format(TextBoxT20.Value, "#,##0.00")
Me.TextBoxT30.Value = Me.TextBoxT3.Value / 6.55957
TextBoxT30 = Format(TextBoxT30.Value, "#,##0.00")
Me.TextBoxM2.Value = ShtC.Range("B" & 7 + Lig + 1).Value
TextBoxM2 = Format(TextBoxM2.Value, "#,##0.00")
End Sub
 
Re : Limiter la saisie d'une combobox

re et merci aussi pierrot93, mais dame géraldine confirme toujours arret à

Me.TextBoxT2.Value = CDbl(TextBoxQ2.Value) * CDbl(TextBoxP2.Value)

j'espère ne pas vous faire perdre votre temps pour une erreur basique, donc je cherche, j'adore lire le chinois ...


dans la liste c'est le separateur automatique de mise en forme 0,00 deux chiffres après la virgule. je tape 1 il met 1,00
@

dame géraldine confirme encore pierrot93
"On se trouve toujours suffisamment intelligent, vu que c'est avec ce que l'on a qu'on juge !!!"
 
Dernière édition:
Re : Limiter la saisie d'une combobox

Re

modifie le code ci dessous alors :

Code:
Private Sub Combobox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("0123456789[B][COLOR="Red"],[/COLOR][/B]", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

en espérant...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
37
Affichages
1 K
  • Question Question
Microsoft 365 Combobox
Réponses
6
Affichages
305
Réponses
5
Affichages
418
Retour