Comparer valeur dans ComboBox

Résolu
DavyBernhard -  
 HellCowBoy -
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
Configuration: Windows Vista Internet Explorer 7.0

4 réponses

  1. calibos
     
    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
  2. DavyBernhard
     
    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
  3. calibos
     
    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
    1. DavyBernhard
       
      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
  4. HellCowBoy
     
    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