[VBA Excel] Verifier validité valeur Combobox

Résolu
zabouall Messages postés 6 Statut Membre -  
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour,
j'ai mis en place une combobox avec une liste de valeur. J'ai choisi la propriété fmStyleDropDownCombo, qui autorise la saisie manuelle de valeurs.

Je souhaite m'assurer que la valeur inscrite est valide afin de ne pas générer d'erreur. J'aimerai l'affichage d'un avertissement.

Je crois q'uil faut utiliser l'evenement "'Change", mais je ne sais pas comment!
Merci pour votre aide!!
Configuration: Windows XP
Internet Explorer 6.0

1 réponse

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Pour arriver à tester le texte du combo c'est pas aussi simple que tu dit.
    Colle ce code dans la feuille du combo
    Dim EditLigne As Boolean

    Private Sub ComboBox1_Change()
        If ComboBox1.ListIndex = -1 Then '-1 quand la ligne est éditée
            EditLigne = True
        End If
    End Sub

    Ensuite deux solutions sont possibles ou les deux ensemble
    Première solution, l'utilisateur doit taper enter pour valider sa modif.
    Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Dim Txt As String
    'Pour tester l'appuit de la touche Enter.
        If KeyCode = 13 And EditLigne Then
            'vérifier le texte du combo.
            Txt = ComboBox1.Text
            Stop
            'si bon valider
            '...
            ComboBox1.AddItem Txt
            EditLigne = False
        End If
            
    End Sub

    Deuxième solution, le test est fait quand l'utilisateur sélectionne autre chose que le combo.
    Private Sub ComboBox1_LostFocus()
    'Pour pas tester l'appuit de la touche Enter.
    'Tester quand quitte le combo
        If EditLigne Then
            'vérifier le texte du combo.
            Txt = ComboBox1.Text
            Stop
            'si bon valider
            '...
            ComboBox1.AddItem Txt
            EditLigne = False
        End If
    End Sub

    Voila deux solutions possibels.
    A+
    2