Empêcher d'écrire dans une liste déroulante sauf les mots qui sont déjà enregistrés

Anonyme
2021-07-14T13:58:25+00:00

Bonjour,

j'ai un formulaire "Ville" avec une liste déroulante pour rechercher une ville en particulier. Par exemple, dans cette liste, j'ai 3 villes : Paris, Lyon et Marseille. Dans la liste, si je commence à taper soit Pa, Ly ou Ma, la ville correspondante s'affiche dans la zone de liste. Par contre, j'aimerai savoir si il y a un moyen de déclencher un message lorsque l'on tape une valeur erronée n'ayant aucune correspondance et non celle de Microsoft qui n'est pas très élégante?

Merci pour votre aide.

Cordialement

Microsoft 365 et Office | Access | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

Réponse acceptée par l’auteur de la question

DanielCo 107.7K Points de réputation
2021-07-15T16:57:41+00:00

Je n'avais pas complétement testé. Essaie :

Private Sub ouvre_ville1_Change()
Dim C, Teste As Boolean, I
Set C = Me.ouvre_ville1.Recordset
For I = 0 To Me.ouvre_ville1.Recordset.RecordCount
If InStr(UCase(Me.ouvre_ville1.ItemData(I)), UCase(Me.ouvre_ville1.Text)) = 1 Then
Teste = True
Exit For
End If
Next I
If Teste = False Then
MsgBox "saisie erronnée"
Me.ouvre_ville1.Value = ""
End If
End Sub

Mais sinon, ne perds pas ton temps...

Cette réponse a-t-elle été utile ?

1 personne a trouvé cette réponse utile.
0 commentaires Aucun commentaire

13 réponses supplémentaires

  1. DanielCo 107.7K Points de réputation
    2021-07-15T09:33:25+00:00

    Bonjour,

    Peux-tu partager le classeur ?

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2021-07-15T08:23:52+00:00

    Bonjour Daniel

    en fait dans le code avec "For Each C In Me.ComboBox1.List", il y a un souci. J'ai remplacé ComboBox1 par le nom de ma zone de liste modifiable. Quand je tape Me., je trouve bien le nom de ma zone de liste. Par contre, après je tape le point, le mot "List" n'est pas proposé dans la liste.

    Merci pour ton aide.

    Cordialement

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. DanielCo 107.7K Points de réputation
    2021-07-14T15:39:27+00:00

    Bonjour,

    Essaie :

    Private Sub ComboBox1_Change()
    Dim C, Teste As Boolean
    For Each C In Me.ComboBox1.List
    If InStr(C, Me.ComboBox1.Value) = 1 Then
    Teste = True
    Exit For
    End If
    Next C
    If Teste = False Then
    MsgBox "saisie erronnée"
    Me.ComboBox1.Value = ""
    End If
    End Sub

    Cordialement.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2021-07-14T15:09:47+00:00

    Nous utilisons un service de traduction pour assister nos utilisateurs. Veuillez nous excuser pour les éventuelles erreurs grammaticales.

    Salut Patrick, je suis un conseiller indépendant et je vais essayer d’aider.

    Non seulement il y a un moyen, mais c’est intégré. Une zone de liste déroulante (ce que vous appelez une liste déroulante) a une propriété Limiter à la liste. Si cette propriété est définie sur Oui, puis si vous entrez une valeur qui ne figure pas dans la liste, Access vous donnera un message qui ne figure pas dans la liste et vous invite à sélectionner dans la liste.

    Si vous n’aimez pas le message par défaut qu’Access fournit, vous pouvez utiliser l’événement NotInList pour non seulement afficher un message personnalisé à l’utilisateur, mais également lui donner la possibilité d’ajouter l’entyry non apparié à la liste. Consultez cet article pour plus d’informations : https://docs.microsoft.com/en-us/office/vba/api....

    Si vous avez besoin d’éclaircissements supplémentaires à ce sujet, n’hésitez pas à demander.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire