Interdire la saisie de doublon dans un userform
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 <>"" thenEn 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