Problème détection de doublon aléatoire

Bonjour,

je débute en macro.....

j'ai une userform qui me permet d'alimenter un tableau de suivi de visites de commerciaux sous excel.

je souhaite que parmi les contrôles lors de la validation de ma userform que si le code client a déjà été saisi dans mon tableau de suivi, avoir une alerte msgbox m'avertissant qu'il y a déjà une entrée sous ce code client auquel cas je dois saisir l'optionbutton associé.

J'ai intégré un code dans ma macro reprenant la formule nb.si.

Le problème ;

je me suis rendue compte lors de tests, qu'aléatoirement (en tout cas je n'ai pas saisi la récurrence, je soupçonne un problème d'ordre de contrôles mais sans certitude), la msgbox n'apparait pas et les données sont validées sans msg d'alerte.

J'ai mis le code à 2 endroits au niveau du bouton de validation des données et en évènement du textbox.

<voici le code :

Private Sub TB_CODECLIENT_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim TAILLE As Long, DERNIERE_LIGNE As Long

If Sheets("PLANNING").Range("a2") = "" Then Exit Sub

DERNIERE_LIGNE = Sheets("PLANNING").Range("A65536").End(xlDown).Row
TAILLE = WorksheetFunction.CountIf(Sheets("PLANNING").Range("d2:d" & DERNIERE_LIGNE), TB_CODECLIENT.Value) 'fonction nb.si

If TAILLE > 1 Then
    MsgBox "Une visite a déjà été réalisée dans cette entreprise.", vbInformation
    ElseIf Len(TB_CODECLIENT) <> 9 Then
        MsgBox "Veuillez vérifier le numéro CODECLIENT!", vbExclamation 'vérifie la longueur de la donnée saisie
    ElseIf IsNumeric(TB_CODECLIENT) = False Then
        MsgBox "Attention, le CODECLIENTdoit être sous format numérique", vbExclamation 'n'accepte que les données numériques
    Else
    Exit Sub
End If

If TAILLE > 1 And BUTTON_VISITE2.Value = False Then
    MsgBox "Veuillez indiquer qu'il s'agit d'une seconde visite !", vbCritical
    End If
Exit Sub

If TAILLE > 1 And BUTTON_VISITE1.Value = True Then
    MsgBox "L'entreprise a déjà fait l'objet d'une visite, vous devez indiquer qu'il s'agit d'une seconde visite !", vbCritical
    End If
Exit Sub

End Sub

Et dans le bouton de validation, une partie du code :

Private Sub CB_VALIDER_Click() 'données prises en compte lors de la validation des données saisies
Dim WBK As Workbook
Dim RNG As Range
Dim i As Long
Dim CTRL As Control
Dim TAILLE As Long, DERNIERE_LIGNE As Long

DERNIERE_LIGNE = Sheets("PLANNING").Range("A65536").End(xlDown).Row
TAILLE = WorksheetFunction.CountIf(Sheets("PLANNING").Range("d2:d" & DERNIERE_LIGNE), TB_CODECLIENT.Value) 'fonction nb.si
'éléments essentiels à la saisie
If TB_DATE = "" Then
    MsgBox "Date obligatoire", vbExclamation
    ElseIf TAILLE > 1 And BUTTON_VISITE1.Value = True Then
    MsgBox "L'entreprise a déjà fait l'objet d'une visite, vous devez indiquer qu'il s'agit d'une seconde visite !", vbCritical
   ElseIf TAILLE < 1 And BUTTON_VISITE2.Value = True Then
    MsgBox "Cette entreprise n'a pas fait l'objet d'une visite sur la période, vous devez modifier votre sélection!", vbCritica
......
else
'demander confirmation avant validation des données
If MsgBox("Confirmez-vous l’insertion de ce nouveau contact ?", vbYesNo, "Demande de confirmation d’ajout ") = vbYes Then
Application.Cursor = xlWait 'afficher le sablier
'déverrouiller la page
Sheets("PLANNING").Unprotect Password:="VISITE"
With Sheets("PLANNING")
    i = .Cells(65535, 1).End(xlUp).Row + 1 'report des données dans la feuille excel
.....
end with
.....
l

MERCI D'avance pour votre aide

je pense que le problème vient du fait que ma variable porte sur l'existant et pas sur la valeur figurant dans la value de la textbox.

Ce que j'aimerais rentrer c'est :

si la valeur de ma textebox est déjà saisie, alors msgbox.....

MERCI DE VOTRE AIDE !!

Bonjour,

Un fichier (réduit au nécessaire) et les manip à faire de A à Z pour avoir l'erreur seraient appréciés.

eric

Bonjour,

je viens de trouver la solution à mon problème :

'détermine les doublons
Dim rg As Range
If TB_codeclient.Text = "" Then Exit Sub
 Set rg = Sheets("PLANNING").Range("d2:d" & DERNIERE_LIGNE).Find(TB_codeclient.Text)
If Not rg Is Nothing Then
    BUTTON_VISITE2.Value = True
    MsgBox "Il s'agit d'une 2ième visite !", vbInformation
End If
'Exit Sub

Merci

Rechercher des sujets similaires à "probleme detection doublon aleatoire"