Verification d'une valeur par textbox

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

karinette

XLDnaute Occasionnel
Bonsoir à tous,

Je recherche une solution pour pouvoir verifier dans un texbox qu'une valeur existe.

Dans mon USF, j'aimerais pouvoir verifier que la valeur saisie dans le textbox est bien présente dans ma colonne A de la feuille BASE ...

L'idéal serait un msgbox d'alerte avec un Exit:Sub ....

Je ne vois pas trop comment faire ... 😕

Merci d'avance.
 

Pièces jointes

Re : Verification d'une valeur par textbox

Bonsoir
Avec une ComboBox au lieu d'une TextBox, dont la liste est alimentée par ce contenu de la colonne A, la vérification serait simple puisque son ListIndex serait égal au numéro de ligne dans celle ci. En outre la saisie partielle est possible.
À +
 
Re : Verification d'une valeur par textbox

Bonsoir
Avec une ComboBox au lieu d'une TextBox, dont la liste est alimentée par ce contenu de la colonne A, la vérification serait simple puisque son ListIndex serait égal au numéro de ligne dans celle ci. En outre la saisie partielle est possible.
À +

Mais comment empecher de saisir la valeur si elle n'est pas dans la liste ?? 😕
 
Re : Verification d'une valeur par textbox

Extrait de l'aide
MatchRequired, propriété


Spécifie si une valeur saisie dans la partie texte d'un contrôle ComboBox doit correspondre à une entrée de la partie liste existante du contrôle. L'utilisateur peut taper des valeurs non correspondantes, mais ne peut pas quitter le contrôle sans qu'une valeur correspondante soit saisie.
Syntaxe
object.MatchRequired [= Boolean]
La syntaxe de la propriété MatchRequired comprend les éléments suivants :
ÉlémentDescriptionobjectObjet valide.BooleanFacultatif. Spécifie si le texte saisi doit correspondre à un élément existant de la liste.

Valeurs
Les valeurs de Boolean sont les suivantes :
ValeurDescription TrueLe texte saisi doit correspondre à une entrée de la liste.FalseLe texte saisi peut être différent de toutes les entrées existantes de la liste (par défaut).

Remarques
Si valeur de la propriété MatchRequired est True, l'utilisateur ne peut pas quitter le contrôle ComboBox tant que le texte saisi ne correspond pas à une entrée de la liste existante. MatchRequired maintient l'intégrité de la liste en exigeant de l'utilisateur qu'il sélectionne une entrée existante.
Note Tous les conteneurs n'imposent pas cette propriété.
 
Re : Verification d'une valeur par textbox

Bonsoir Dranreb, karinette
Bonsoir à tous,

Remplaces la Textbox par une ComboBox

A placer dans UserForm1

VB:
Private Sub UserForm_Initialize()
With Sheets("BASE")
    ComboBox1.List = .Range("A1", .Range("A65536").End(xlUp)).Value
End With
End Sub

Private Sub CommandButton1_Click()
If ComboBox1.Value <> "" Then
  If IsError(Application.Match(ComboBox1.Value, ComboBox1.List, 0)) Then
    If MsgBox("Karinette, cet élément ne figure pas dans la liste!" & vbCrLf & _
    Space(20) & "Voulez-vous le rajouter ?", vbYesNo) = vbYes Then
      Sheets("BASE").Range("A65536").End(xlUp)(2).Value = ComboBox1.Value
      ComboBox1.AddItem ComboBox1.Value
      With Sheets("BASE").Range("A1", Range("A65536").End(xlUp))
        .Sort key1:=Sheets("BASE").Range("A1")
      End With
    End If
    Else: MsgBox "Karinette, cet élément est déjà dans la liste !"
  End If
End If
ComboBox1.Value = ""
End Sub

Klin89
 
Dernière édition:
Re : Verification d'une valeur par textbox

Bonsoir Dranreb, karinette
Bonsoir à tous,

Remplaces la Textbox par une ComboBox

A placer dans UserForm1

VB:
Private Sub UserForm_Initialize()
With Sheets("BASE")
    ComboBox1.List = .Range("A1", .Range("A65536").End(xlUp)).Value
End With
End Sub

Private Sub CommandButton1_Click()
If ComboBox1.Value <> "" Then
  If IsError(Application.Match(ComboBox1.Value, ComboBox1.List, 0)) Then
    If MsgBox("Karinette, cet élément ne figure pas dans la liste!" & vbCrLf & _
    Space(20) & "Voulez-vous le rajouter ?", vbYesNo) = vbYes Then
      Sheets("BASE").Range("A65536").End(xlUp)(2).Value = ComboBox1.Value
      ComboBox1.AddItem ComboBox1.Value
      With Sheets("BASE").Range("A1", Range("A65536").End(xlUp))
        .Sort key1:=Sheets("BASE").Range("A1")
      End With
    End If
    Else: MsgBox "Karinette, cet élément est déjà dans la liste !"
  End If
End If
ComboBox1.Value = ""
End Sub

Klin89

J'ai modifié un peu le code, mais c'est exactement ce que je voulais ... Merci à tous 🙂
 
Re : Verification d'une valeur par textbox

Oui, mais encore une fois:
If IsError(Application.Match(ComboBox1.Value, ComboBox1.List, 0)) Then
pourrait être avantageusement remplacé par:
VB:
If ComboBox1.ListIndex = -1 Then
ListIndex, propriété


Identifie l'élément actuellement sélectionné dans un contrôle ListBox ou ComboBox.
Syntaxe
object.ListIndex [= Variant]
La syntaxe de la propriété ListIndex comprend les éléments suivants :
ÉlémentDescriptionobjectObjet valide.VariantFacultatif. Élément actuellement sélectionné dans le contrôle

Remarques
La propriété ListIndex contient un index de la ligne sélectionnée dans la liste. Les valeurs de la propriété ListIndex sont comprises entre –1 et le nombre total de lignes de la liste moins 1 (c'est-à-dire, ListCount – 1). Lorsqu'aucune ligne n'est sélectionnée, la propriété ListIndex renvoie la valeur –1. Quand l'utilisateur sélectionne une ligne d'un contrôle ListBox ou ComboBox, le système définit la valeur de la propriété ListIndex. La valeur de la propriété ListIndex de la première ligne de la liste est zéro, la valeur de la deuxième liste est 1, et ainsi de suite.
Note Si vous utilisez la propriété MultiSelect pour créer un contrôle ListBox permettant plusieurs sélections, la propriété Selected du contrôle ListBox (plutôt que la propriété ListIndex) identifie les lignes sélectionnées. La propriété Selected est un tableau ayant le même nombre de valeurs que le nombre de lignes du contrôle ListBox. Pour chaque ligne de la zone de liste, la propriété Selected contient la valeur True si la ligne est sélectionnée, et False si elle ne l'est pas. Dans un contrôle ListBox permettant plusieurs sélections, la propriété ListIndex renvoie l'index de la ligne ayant le focus, que celle-ci soit ou non actuellement sélectionnée.
La valeur de la propriété ListIndex est aussi disponible en affectant la valeur 0 à la propriété BoundColumn pour une liste modifiable ou une zone de liste. Si la valeur de la propriété BoundColumn est 0, la source de données sous-jacente de laquelle dépend la liste modifiable ou la zone de liste contient la même valeur d'index de liste que la propriété ListIndex.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour