Comparer valeur dans ComboBox

Résolu/Fermé
DavyBernhard - 29 oct. 2009 à 11:23
 HellCowBoy - 8 avril 2011 à 09:52
Bonjour,

Question sur ComboBox dans un Userform sous EXCEL.

Je remplie une ComboBox dans un Userform, dans initialise.
La liste provient d'une plage de par exemple Sheets("Feuil1").Range("A1:A50")

Mais l'utilisateur a le droit d'inscrire aussi autre chose dans cet ComboBox.

Et voilà mon problème:
Les valeurs de la liste renvoie aussi d'autres informations de couleurs ou d'autres value de cellules. Je voudrais comparer la valeur entrée dans le combobox à sa liste de valeur, et dans ComboBox_change dire si la valeur entrée est pas égale à une valeur de la liste alors faire : mgsbox("Attention") sinon il doit apporter des modifications dans certains TextBox ou autre colorbutton.

Prenons un exemple:
Dans la colonne A --> 1234
Dans la colonne B --> abcd
Dans la colonne C --> une couleur jaune

Donc dans ma ComboBox j'aurais seulement dans la liste "1234".

[code]
Sub ComboBox_change()
Dim h as Intenger
FindName=ComboBox.value
For h = 7 To Range("A65536").End(xlUp).Row
If Range("A" & h) = FindName Then
TextBox1=Range("B"&h).value
ColorButton1=Range("C"&h).Interior.ColorIndex
End if
Next h
End sub
/code

Manuellement j'écris 1, donc il me propose "1234", et la TextBox1 et ColorButton1 se mette à jour. Mais si je continue à écrire "1435" la TextBox1 et colorbutton1 ne se réinitialise plus.

C'est pour cela que je veux rajouter cette comparaison entre la valeur entrée et la liste de cette ComboBox et dire que si elle ne trouve pas donc:
TextBox1=""
ColorButton1.color=0

J'espère que vous avez pu me comprendre et merci de votre aide

Davy

4 réponses

Bonjour,

La procédure ComboBox_Change() ne convient pas pour ce que tu veux faire.
Utilise plutot
- ComboBox_Click() qui agit quand tu selectionnes un élément de la liste
- ComboBox1_KeyDown() qui agit quand tu entres du texte à la main

Exemple:
il faut desactiver la procédure ComboBox_Change() en la renommant CB_Change().

'choisir un élément de la liste
Private Sub ComboBox_Click()
   MsgBox ComboBox.Text
End Sub

'taper du texte et appuyer sur Entrée
Private Sub ComboBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
   If KeyCode = 13 Then
        MsgBox ComboBox.Text
   End If
End Sub


Remplaces MsgBox par ce que tu veux faire

A+.
0
DavyBernhard
29 oct. 2009 à 16:31
Bonjour calibos,

J'ai apporté les modifications que tu m'as dis, cela fonctionne bien. Mais il reste encore quelque chose:
Quand je commance à taper le mot dans la combobox par exemple "12" il me met en suggestion "1234", le 3 et 4 sont grisés, quand je quitte le combobox, il garde le "1234" mais ne met rien à jour.

Y-a t il aussi une fonction quand on quitte la combobox?

Merci par avance
Davy
0
Oui,

il y a Sub ComboBox_Exit() qui s'execute quand le combobox perd le focus.

exemple:
Private Sub ComboBox_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  MsgBox ComboBox.Text
End Sub


A+.
0
DavyBernhard
30 oct. 2009 à 14:02
Bonjour calibos,

Merci beaucoup, tu m'as vraiment aidé.

@+

Davy

PS: Bonjour Admin, si vous voyez ce message vous pouvez le mettre en temps que résolu. Merci.
0
Il suffit que tu mettes :
TextBox.Clear
ColorButton."valeurdetonchoix"
Si tu mets cela au tout début de ton programme ComboBox_Change(), il remettra à zéro à chaque fois que tu modifiera ton ComboBox


BornToBeWild
0