Bien naïvement , je pensait ne pas rencontrer de problème avec cette macro.
Et bien c'est raté, alors je m'explique.
Je demande de vérifier si les informations que je m'apprête à insérer dans ma base de données existent déjà si tel est le cas en retour le message suivant devrait s'afficher" Une correspondance a été trouvée" sinon "Aucune correspondance".
Le souci c'est que correspondance ou pas j'ai le même retour : "Aucune correspondance".
Il s'agit de numéro de sécu sans espace pour plus de commodité.
Je me suis dit probablement un problème de format car avec les TXTBOX c'est toujours plus compliqué de leur faire avaler des nombres.
C'est pourquoi, j'ai rajouté du texte dans la colonne A "PAPA" par exemple sans plus de résultat ou plutôt le même retour "Aucune correspondance"
Voilà, si vous avez un peu de temps à me consacrer solutionner mon problème, je vous en remercie.
Pour ma part, je vais continuer à chercher
Private Sub Txt1_AfterUpdate()
Me.Txt1 = Format(Me.Txt1, "0")
Set F = Sheets("BD2")
For L = 2 To F.Range("a" & Rows.Count).End(xlUp).Row
If F.Cells(L, 1) = Me.Txt1 Then
MsgBox ("Une correspondance a été trouvée")
Else
MsgBox ("Aucune correspondance")
Exit Sub
End If
Next L
Private Sub Txt1_AfterUpdate()
Set F = Sheets("BD2")
If Application.CountIf(F.Columns(1), Txt1) Then
MsgBox ("Une correspondance a été trouvée")
Else
MsgBox ("Aucune correspondance")
End If
End Sub
Private Sub Txt1_AfterUpdate()
Set F = Sheets("BD2")
If Application.CountIf(F.Columns(1), Txt1) Then
MsgBox ("Une correspondance a été trouvée")
Else
MsgBox ("Aucune correspondance")
End If
End Sub
Merci pour votre intervention job 75.
Ça fonctionne parfaitement.
Encore merci sans votre aide je n'aurai pas trouvé.
Je vous souhaite une bonne soirée.
Bonjour Dadaze,
En utilisant la balise </> le code est plus lisible.
Et un petit ficher test aurait été le bienvenu, ne serait que pour éviter de se le retaper.
N'oubliez pas qu'un TextBox renvoie ... du texte. Donc vous ne pouvez pas le comparer à des nombres. On peut convertir ce texte en nombre via CDbl.
En PJ un essai avec :
VB:
Private Sub TextBox1_Change()
On Error GoTo Fin ' Si l'utilisateur entre des lettres
Nombre = CDbl(TextBox1)
Set F = Sheets("BD2")
Set Plage = F.Range("A1:A" & F.Range("a" & Rows.Count).End(xlUp).Row)
If Application.CountIf(Plage, Nombre) > 0 Then
Ligne = Application.Match(Nombre, Plage, 0)
MsgBox ("Une correspondance a été trouvée" & Chr(10) & "En ligne " & Ligne)
Else
MsgBox ("Aucune correspondance")
End If
Fin:
End Sub
Private Sub Txt1_AfterUpdate()
MsgBox IIf(Application.CountIf(Sheets("BD2").Columns(1), Txt1), "Une correspondance a été trouvée", "Aucune correspondance")
End Sub
Bonjour Dadaze,
En utilisant la balise </> le code est plus lisible.
Et un petit ficher test aurait été le bienvenu, ne serait que pour éviter de se le retaper.
N'oubliez pas qu'un TextBox renvoie ... du texte. Donc vous ne pouvez pas le comparer à des nombres. On peut convertir ce texte en nombre via CDbl.
En PJ un essai avec :
VB:
Private Sub TextBox1_Change()
On Error GoTo Fin ' Si l'utilisateur entre des lettres
Nombre = CDbl(TextBox1)
Set F = Sheets("BD2")
Set Plage = F.Range("A1:A" & F.Range("a" & Rows.Count).End(xlUp).Row)
If Application.CountIf(Plage, Nombre) > 0 Then
Ligne = Application.Match(Nombre, Plage, 0)
MsgBox ("Une correspondance a été trouvée" & Chr(10) & "En ligne " & Ligne)
Else
MsgBox ("Aucune correspondance")
End If
Fin:
End Sub
A l’instar du code proposé par JOB 75 le votre fonctionne très bien également.
Encore une fois merci à tous les deux de m'avoir consacré un peu de votre temps et surtout de me faire partager vos compétences.
Je vous remercie pour votre contribution.
L'aide de chacun m'aura été très utile.
En effet, ça me permet de progresser.
Je vous souhaite une bonne soirée