Re,
Je comprends mieux, vous avez l'erreur si vous êtes passé dans le TextBox sans rien saisir (ce que je n'ais pas fait)
C'est pour cela qu'il vaudrait mieux prendre l'évènement "AfterUpdate" que "Exit"
Voici le code modifié
Private Sub txtn_carte_AfterUpdate()
Dim LigF As Long
' Si aucune valeur dans n° de carte, on sort
If Me.txtn_carte.Value = "" Then Exit Sub
' Cherche si le numéro de carte existe déjà
LigF = LigFind("Source[N° Carte]", Me.txtn_carte.Value)
' On teste si la valeur a été trouvée.
If LigF > 0 Then
Me.lblmessage_carte = "Le Numéro de l'Adhérent [" & Me.txtn_carte & "] existe déjà dans la base."
Me.txtn_carte = ""
Me.txtn_carte.SetFocus
Else
Me.lblmessage_carte = ""
Exit Sub
End If
End Sub
Avec la fonction qui est appelée
Function LigFind(sPlage As String, sQuoi As String)
LigFind = 0
' Si on ne trouve pas de valeur et pour éviter le message d'erreur
On Error Resume Next
With Range(sPlage)
LigFind = .Find(What:=sQuoi, LookIn:=xlValues, LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False).Row
End With
On Error GoTo 0
End Function
Et votre fichier ainsi modifié
Nota : Mieux vaut se passer des "Select"
A+