Interdire la saisie de doublon dans un userform

Bonjour à tous,

J'ai utiliser ce code pour interdire la saisie de doublon dans une textbox.
Elle marche mais inconvénient est que je ne peut sortir du champs sans mettre une valeur.
Le code considère le vide comme une valeur déjà présente dans la base.

Pouvez-vous svp m'aider à corriger

Dim O As Worksheet 'déclare la variable O (Onglet)
Dim COL As Byte 'déclare la variable COL (COLonne)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)

Set O = Worksheets("VENTE") 'définit l'onglet O (à adapter à ton cas)
COL = 1 'définit la colonne COL (à adapter à ton cas)
DL = O.Cells(Application.Rows.Count, COL).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne COL de l'onglet O
TV = O.Range(O.Cells(1, COL), O.Cells(DL, COL)) 'définit le tableau des valeurs TV
For I = 1 To DL 'boucles sur toutes les lignes I du tableau des valeurs TV
If CStr(TV(I, 1)) = Me.txtPCR.Value Then 'si la donnée de la boucle (convertie en texte) est égale à la valeur de la TextBox1
Cancel = True 'annule la sortie de la TextBox1

MsgBox "Ce Numéro de Pièce de Caisse Recette existe déjà dans la base !

Veuillez ressaisir un nouveau SVP afin de continuer la saisie !!!."

'message
With Me.txtPCR '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
Exit For 'sort de la boucle
End If 'fin de la condition
Next I 'prochaine ligne de la boucle

Bonsoir,

essayez ceci :

If CStr(TV(I, 1)) = Me.txtPCR.Value And Me.txtPCR.Value <>"" then

En ajoutant la condition textbox différent de rien.
Pas essayé... Sur du texte de toutes façons cela ne marche pas... Sur un fichier on peut tester.

@ bientôt

LouReeD

Merci @LouReed ça fonctionne... Impeccable

Toujours dans le même esprit st, je veux appliquer la même condition à la textbox suivante, à quel niveau dois je mettre la mention pour la seconde colonne afin que la vérification se fasse?

Private Sub txtPCR_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'à la sortie de la TextBox1

' ********************************
' Procédure permettant d'interdire la saisie
' d'un doublon dans la base
' ********************************

Dim O As Worksheet 'déclare la variable O (Onglet)
Dim COL As Byte 'déclare la variable COL (COLonne)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)

Set O = Worksheets("VENTE") 'définit l'onglet O (à adapter à ton cas)
COL = 1 'définit la colonne COL (à adapter à ton cas)
DL = O.Cells(Application.Rows.Count, COL).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne COL de l'onglet O
TV = O.Range(O.Cells(1, COL), O.Cells(DL, COL)) 'définit le tableau des valeurs TV
For I = 1 To DL 'boucles sur toutes les lignes I du tableau des valeurs TV
If CStr(TV(I, 1)) = Me.txtPCR.Value And Me.txtPCR.Value <> "" Then 'si la donnée de la boucle (convertie en texte) est égale à la valeur de la TextBox1
Cancel = True 'annule la sortie de la TextBox1
MsgBox "Ce Numéro de Pièce de Caisse Recette existe déjà dans la base ! Veuillez ressaisir un nouveau SVP afin de continuer la saisie !!!." 'message
With Me.txtPCR '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
Exit For 'sort de la boucle
End If 'fin de la condition
Next I 'prochaine ligne de la boucle

End Sub

Pas tout compris là...

@ bientôt

LouReeD

Rechercher des sujets similaires à "interdire saisie doublon userform"