Microsoft 365 TEXTBOX

dadaze

XLDnaute Nouveau
Bonjour à tous,

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

End Sub
 

dadaze

XLDnaute Nouveau
Bonjour dadaze,
VB:
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
A+
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.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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
 

Pièces jointes

  • Dadaze.xlsm
    18.9 KB · Affichages: 2

dadaze

XLDnaute Nouveau
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
Merci Sylvanu

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.

Sylvanu & JOB 75 bonne soirée

👍
 

Statistiques des forums

Discussions
312 209
Messages
2 086 274
Membres
103 168
dernier inscrit
isidore33