Bonjour à tous,
Je viens de faire ce petit code pour m'assurer que la valeur saise dans le
textbox NumDos n'esixte pas déja dans la plage "BaseAFNum"
Ca marche presque bien !
Mon problème c'est que BaseAFNum contient du texte uniquement (parfois que
des chiffres mais au format texte.)
Hors si je saisie "123" dans le textbox alors que cette valeur existe dans
un nombre dans "BaseAFNum",il la laisse passer
Comment fait-on pour indiquer à un texbox que ce qu'il contient est du TEXTE
? A l'inisialisation du userform ?
Merci
Domi
Private Sub NumDos_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Interdit la saisie d'un n° qui existe déja
For Each cel In Range("BaseAFNum")
If cel.Value = Me.NumDos.Value Then
MsgBox "Ce n° existe déjà dans la base, veuiller en saisir un nouveau"
Me.NumDos.Value = ""
Cancel = True
End If
Next
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
papou
Bonjour Personnellement je te propose Cstr, et par la même occasion je te suggère plutôt d'utiliser la méthode Find, à toi de voir : Private Sub NumDos_Exit(ByVal Cancel As MSForms.ReturnBoolean) NumDos = CStr(NumDos) Dim ATrouver With Range("BaseAFNum") Set ATrouver = .Find(NumDos, , xlValues, xlWhole, xlByRows) If Not ATrouver Is Nothing Then MsgBox "Ce n° existe déjà dans la base, veuiller en saisir un nouveau" NumDos = "" Cancel = True End If End With End Sub
Cordialement pascal
"Domi" a écrit dans le message de news: %23rEu34$
Bonjour à tous, Je viens de faire ce petit code pour m'assurer que la valeur saise dans le textbox NumDos n'esixte pas déja dans la plage "BaseAFNum" Ca marche presque bien ! Mon problème c'est que BaseAFNum contient du texte uniquement (parfois que des chiffres mais au format texte.) Hors si je saisie "123" dans le textbox alors que cette valeur existe dans un nombre dans "BaseAFNum",il la laisse passer Comment fait-on pour indiquer à un texbox que ce qu'il contient est du TEXTE ? A l'inisialisation du userform ? Merci Domi
Private Sub NumDos_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'Interdit la saisie d'un n° qui existe déja For Each cel In Range("BaseAFNum") If cel.Value = Me.NumDos.Value Then MsgBox "Ce n° existe déjà dans la base, veuiller en saisir un nouveau" Me.NumDos.Value = "" Cancel = True End If Next End Sub
Bonjour
Personnellement je te propose Cstr, et par la même occasion je te suggère
plutôt d'utiliser la méthode Find, à toi de voir :
Private Sub NumDos_Exit(ByVal Cancel As MSForms.ReturnBoolean)
NumDos = CStr(NumDos)
Dim ATrouver
With Range("BaseAFNum")
Set ATrouver = .Find(NumDos, , xlValues, xlWhole, xlByRows)
If Not ATrouver Is Nothing Then
MsgBox "Ce n° existe déjà dans la base, veuiller en saisir un nouveau"
NumDos = ""
Cancel = True
End If
End With
End Sub
Cordialement
pascal
"Domi" <scrat83@free.fr> a écrit dans le message de news:
%23rEu34$IFHA.3916@TK2MSFTNGP14.phx.gbl...
Bonjour à tous,
Je viens de faire ce petit code pour m'assurer que la valeur saise dans le
textbox NumDos n'esixte pas déja dans la plage "BaseAFNum"
Ca marche presque bien !
Mon problème c'est que BaseAFNum contient du texte uniquement (parfois que
des chiffres mais au format texte.)
Hors si je saisie "123" dans le textbox alors que cette valeur existe dans
un nombre dans "BaseAFNum",il la laisse passer
Comment fait-on pour indiquer à un texbox que ce qu'il contient est du
TEXTE
? A l'inisialisation du userform ?
Merci
Domi
Private Sub NumDos_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Interdit la saisie d'un n° qui existe déja
For Each cel In Range("BaseAFNum")
If cel.Value = Me.NumDos.Value Then
MsgBox "Ce n° existe déjà dans la base, veuiller en saisir un nouveau"
Me.NumDos.Value = ""
Cancel = True
End If
Next
End Sub
Bonjour Personnellement je te propose Cstr, et par la même occasion je te suggère plutôt d'utiliser la méthode Find, à toi de voir : Private Sub NumDos_Exit(ByVal Cancel As MSForms.ReturnBoolean) NumDos = CStr(NumDos) Dim ATrouver With Range("BaseAFNum") Set ATrouver = .Find(NumDos, , xlValues, xlWhole, xlByRows) If Not ATrouver Is Nothing Then MsgBox "Ce n° existe déjà dans la base, veuiller en saisir un nouveau" NumDos = "" Cancel = True End If End With End Sub
Cordialement pascal
"Domi" a écrit dans le message de news: %23rEu34$
Bonjour à tous, Je viens de faire ce petit code pour m'assurer que la valeur saise dans le textbox NumDos n'esixte pas déja dans la plage "BaseAFNum" Ca marche presque bien ! Mon problème c'est que BaseAFNum contient du texte uniquement (parfois que des chiffres mais au format texte.) Hors si je saisie "123" dans le textbox alors que cette valeur existe dans un nombre dans "BaseAFNum",il la laisse passer Comment fait-on pour indiquer à un texbox que ce qu'il contient est du TEXTE ? A l'inisialisation du userform ? Merci Domi
Private Sub NumDos_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'Interdit la saisie d'un n° qui existe déja For Each cel In Range("BaseAFNum") If cel.Value = Me.NumDos.Value Then MsgBox "Ce n° existe déjà dans la base, veuiller en saisir un nouveau" Me.NumDos.Value = "" Cancel = True End If Next End Sub
AV
Plutôt que de faire une boucle.... :
If Application.CountIf(Range("BaseAFNum"), NumDos) > 0 Then MsgBox "blabla"
AV
Plutôt que de faire une boucle.... :
If Application.CountIf(Range("BaseAFNum"), NumDos) > 0 Then MsgBox "blabla"