Contraindre la sélection dans une liste déroulante

Bonjour,

Dans une combobox, j'utilise une liste déroulante qui me permet d'afficher les 12 mois de l'année.

Lorsque je clique sur la flèche de la liste déroulante, je ne peux que choisir la plage d'élément dont elle fait partie. Jusque là tout est parfait.

Seulement si l'idée vient à un utilisateur d'écrire directement sur la liste déroulante, il le peut. C'est embêtant surtout quand on peu écrire n'importe qu'elle nombre (et inventer des nouveaux mois ).

Voici deux idées mais aucune des deux ne marche

La première

Private Sub mois_Change()

    If mois.Value <> 1 Or mois.Value <> 2 Or mois.Value <> 3 Or mois.Value <> 4 Or mois.Value <> 5 Or mois.Value <> 6 Or mois.Value <> 7 Or mois.Value <> 8 Or mois.Value <> 9 Or mois.Value <> 10 Or mois.Value <> 11 Or mois.Value <> 12 Then
        MsgBox "Merci de sélectioner un élément de la liste"
    End If
End Sub

Et la seconde

Private Sub mois_Change()

    If mois.Value <> Worksheet("Base de données").Range("A2:A13").Value Then
        MsgBox "Merci de sélectionner un élément de la liste"
    End If
End Sub

Merci d'avance,

Antoine

Hello!

Il faut que tu regardes dans les propriétés de ta combobox.

Il y a une ligne MatchRequired. Il faut le passer en True

Bonjour,

Tu peux essayer ce code à mettre dans ton userform

Private Sub Mois_Change()
mois.MatchRequired = True
End Sub

Crdlt

edit : déso funky, nous avons posté en même temps

Re-bonjour,

Tout d'abord merci à vous deux pour votre réponse aussi rapide !

Vos deux solutions fonctionnent.

Maintenant je souhaiterai améliorer le message d'erreur affiché (Valeur de propriété non valide) dans le cas où l'utilisateur rentre un chiffre non compris dans ma liste de donnée (non compris entre 1 et 12).

Pour cela, j'ai essayé de modifier votre solution Dan, tout en écrivant gardant le MatchRequired dans les propriétés de la combobox en False :

Private Sub Mois_Change()

If mois.MatchRequired = False Then
    MsgBox "Merci de rentrer un chiffre entre 1 et 12"
End If

End Sub

En voulant écrire le mois dans la combobox, j'ai directement mon message d'erreur "Merci de rentrer un chiffre entre 1 et 12".

Je ne comprends pas pourquoi je l'ai directement et même si le chiffre est compris en 1 et 12.

Pouvez-vous m'éclairez à ce sujet ?

Une fois de plus, merci d'avance

Re.

Dans ce cas oublie la propriété de ta combobox MatchRequired. Laisse-là en False.

Ensuite tu ajoutes ce code à ton userform

Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If ComboBox1.MatchFound = False Then
MsgBox ("Qu'essayes-tu de faire petit malin?")
ComboBox1.Value = ""
End If

End Sub

En changeant bien sur le nom de ta combobox

Rechercher des sujets similaires à "contraindre selection liste deroulante"