XL 2016 Textbox avec validation de données

Chessnocoma

XLDnaute Junior
Bonjour,

Je souhaite imposer des valeurs à ma textbox en fonction des éléments renseigné dans une colonne du classeur ? Si l'utilisateur ne renseigne pas un élément de la liste, il reçoit un message d'erreur par exemple.

Est ce que c'est faisable ?

Ca ressemble un peu à une listbox mais je suis obligé de passer par une textbox pour le faire.

Est ce que vous auriez une idée ?

Merci de votre temps et de votre aide,

A bientôt,

Jessy
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Jessy, bonjour le forum,

Peut-être avec ce code à adapter, à la sortie de la TextBox concernée :

VB:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire)

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A (à adapter à ton cas) de l'onglet O
TV = O.Range("A1:A" & DL) 'définit le tableau des valeurs TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
  D(TV(I, 1)) = "" 'alimente le dictionnaire D
Next I 'prochaine ligne de la boucle
TMP = D.Keys 'récupère dans le tableau temporaire TMP, la liste des éléments du dictionnsire D sans doublon
For I = 0 To UBound(TMP) 'boucle sur tous les élément du tableau TMP
  If Me.TextBox1.Value = TMP(I) Then GoTo suite 'si la valeur de la TextBox1 correspond à l'élément de la boucle, va à l'étiquette "suite"
Next I 'prochain élément de la boucle
MsgBox "Donnée non valide !" 'message
With Me.TextBox1 'prend en compte la TextBox1
  .SelStart = 0 'début de la sélection
  .SelLength = Len(.Value) 'longueur de la sélection
End With 'fin de la prise en compte de la TextBox1
Cancel = True 'empêche la sortie de la Textbox
suite: 'étiquette
End Sub
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa