Bonjour.
J'ai un textbox qui envoie des valeurs dans une feuille de calcul
dans la colonne A3:A5000 les valeurs du textbox1
je souhaite que si une valeur se trouve déjà dans la plage A3:A5000 un
msgbox se lance afin de prévenir l'utilisateur que la valeur a déjà été
saisi.
Mais le pb est que parfois je dois modifier le userform, et alors avec cette
procédure, il refuse de valider le userfrom, car la valeur est déjà dans la
feuille.
Comment dois-je m'y prendre ?
Merci beaucoup
Flo riant
If TextBox1 <> "" Then
If IsNumeric(Application.Match(TextBox1.Value, [Ref!A3:A5000], 0)) Then
MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" & vbNewLine &
_
"Le numéro * " & TextBox1.Value & " * apparaît déjà dans le
programme !", vbCritical, _
" Numéro déjà saisi !"
TextBox1.SetFocus
Exit Sub
End If
End If
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
LSteph
Bonjour,
une solution peut être
dans la feuille en A3:A5000 Validation Personnalisé la formule: =NB.SI($a$3:$a$5000;a3)<2
'lSteph
"Florian" a écrit dans le message de news:
Bonjour. J'ai un textbox qui envoie des valeurs dans une feuille de calcul dans la colonne A3:A5000 les valeurs du textbox1 je souhaite que si une valeur se trouve déjà dans la plage A3:A5000 un msgbox se lance afin de prévenir l'utilisateur que la valeur a déjà été saisi. Mais le pb est que parfois je dois modifier le userform, et alors avec cette procédure, il refuse de valider le userfrom, car la valeur est déjà dans la feuille. Comment dois-je m'y prendre ? Merci beaucoup Flo riant
If TextBox1 <> "" Then If IsNumeric(Application.Match(TextBox1.Value, [Ref!A3:A5000], 0)) Then MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" & vbNewLine & _ "Le numéro * " & TextBox1.Value & " * apparaît déjà dans le programme !", vbCritical, _ " Numéro déjà saisi !" TextBox1.SetFocus Exit Sub End If End If
Bonjour,
une solution peut être
dans la feuille en A3:A5000
Validation Personnalisé
la formule:
=NB.SI($a$3:$a$5000;a3)<2
'lSteph
"Florian" <florian@toto.fr> a écrit dans le message de news:
eKTkrAufFHA.3936@TK2MSFTNGP14.phx.gbl...
Bonjour.
J'ai un textbox qui envoie des valeurs dans une feuille de calcul
dans la colonne A3:A5000 les valeurs du textbox1
je souhaite que si une valeur se trouve déjà dans la plage A3:A5000 un
msgbox se lance afin de prévenir l'utilisateur que la valeur a déjà été
saisi.
Mais le pb est que parfois je dois modifier le userform, et alors avec
cette procédure, il refuse de valider le userfrom, car la valeur est déjà
dans la feuille.
Comment dois-je m'y prendre ?
Merci beaucoup
Flo riant
If TextBox1 <> "" Then
If IsNumeric(Application.Match(TextBox1.Value, [Ref!A3:A5000], 0)) Then
MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" & vbNewLine
& _
"Le numéro * " & TextBox1.Value & " * apparaît déjà dans le
programme !", vbCritical, _
" Numéro déjà saisi !"
TextBox1.SetFocus
Exit Sub
End If
End If
dans la feuille en A3:A5000 Validation Personnalisé la formule: =NB.SI($a$3:$a$5000;a3)<2
'lSteph
"Florian" a écrit dans le message de news:
Bonjour. J'ai un textbox qui envoie des valeurs dans une feuille de calcul dans la colonne A3:A5000 les valeurs du textbox1 je souhaite que si une valeur se trouve déjà dans la plage A3:A5000 un msgbox se lance afin de prévenir l'utilisateur que la valeur a déjà été saisi. Mais le pb est que parfois je dois modifier le userform, et alors avec cette procédure, il refuse de valider le userfrom, car la valeur est déjà dans la feuille. Comment dois-je m'y prendre ? Merci beaucoup Flo riant
If TextBox1 <> "" Then If IsNumeric(Application.Match(TextBox1.Value, [Ref!A3:A5000], 0)) Then MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" & vbNewLine & _ "Le numéro * " & TextBox1.Value & " * apparaît déjà dans le programme !", vbCritical, _ " Numéro déjà saisi !" TextBox1.SetFocus Exit Sub End If End If
Florian
Bonjour LSteph Le problème est que la saisie se fait sur le userform et je souhaiterai qu'avant la validation l'utilisateur soit prévenu. Merci pour l'aide apportée Flo riant
"LSteph" a écrit dans le message de news:
Bonjour,
une solution peut être
dans la feuille en A3:A5000 Validation Personnalisé la formule: =NB.SI($a$3:$a$5000;a3)<2
'lSteph
"Florian" a écrit dans le message de news:
Bonjour. J'ai un textbox qui envoie des valeurs dans une feuille de calcul dans la colonne A3:A5000 les valeurs du textbox1 je souhaite que si une valeur se trouve déjà dans la plage A3:A5000 un msgbox se lance afin de prévenir l'utilisateur que la valeur a déjà été saisi. Mais le pb est que parfois je dois modifier le userform, et alors avec cette procédure, il refuse de valider le userfrom, car la valeur est déjà dans la feuille. Comment dois-je m'y prendre ? Merci beaucoup Flo riant
If TextBox1 <> "" Then If IsNumeric(Application.Match(TextBox1.Value, [Ref!A3:A5000], 0)) Then MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" & vbNewLine & _ "Le numéro * " & TextBox1.Value & " * apparaît déjà dans le programme !", vbCritical, _ " Numéro déjà saisi !" TextBox1.SetFocus Exit Sub End If End If
Bonjour LSteph
Le problème est que la saisie se fait sur le userform et je souhaiterai
qu'avant la validation l'utilisateur soit prévenu.
Merci pour l'aide apportée
Flo riant
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
O6hszeufFHA.3788@tk2msftngp13.phx.gbl...
Bonjour,
une solution peut être
dans la feuille en A3:A5000
Validation Personnalisé
la formule:
=NB.SI($a$3:$a$5000;a3)<2
'lSteph
"Florian" <florian@toto.fr> a écrit dans le message de news:
eKTkrAufFHA.3936@TK2MSFTNGP14.phx.gbl...
Bonjour.
J'ai un textbox qui envoie des valeurs dans une feuille de calcul
dans la colonne A3:A5000 les valeurs du textbox1
je souhaite que si une valeur se trouve déjà dans la plage A3:A5000 un
msgbox se lance afin de prévenir l'utilisateur que la valeur a déjà été
saisi.
Mais le pb est que parfois je dois modifier le userform, et alors avec
cette procédure, il refuse de valider le userfrom, car la valeur est déjà
dans la feuille.
Comment dois-je m'y prendre ?
Merci beaucoup
Flo riant
If TextBox1 <> "" Then
If IsNumeric(Application.Match(TextBox1.Value, [Ref!A3:A5000], 0)) Then
MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" & vbNewLine
& _
"Le numéro * " & TextBox1.Value & " * apparaît déjà dans le
programme !", vbCritical, _
" Numéro déjà saisi !"
TextBox1.SetFocus
Exit Sub
End If
End If
Bonjour LSteph Le problème est que la saisie se fait sur le userform et je souhaiterai qu'avant la validation l'utilisateur soit prévenu. Merci pour l'aide apportée Flo riant
"LSteph" a écrit dans le message de news:
Bonjour,
une solution peut être
dans la feuille en A3:A5000 Validation Personnalisé la formule: =NB.SI($a$3:$a$5000;a3)<2
'lSteph
"Florian" a écrit dans le message de news:
Bonjour. J'ai un textbox qui envoie des valeurs dans une feuille de calcul dans la colonne A3:A5000 les valeurs du textbox1 je souhaite que si une valeur se trouve déjà dans la plage A3:A5000 un msgbox se lance afin de prévenir l'utilisateur que la valeur a déjà été saisi. Mais le pb est que parfois je dois modifier le userform, et alors avec cette procédure, il refuse de valider le userfrom, car la valeur est déjà dans la feuille. Comment dois-je m'y prendre ? Merci beaucoup Flo riant
If TextBox1 <> "" Then If IsNumeric(Application.Match(TextBox1.Value, [Ref!A3:A5000], 0)) Then MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" & vbNewLine & _ "Le numéro * " & TextBox1.Value & " * apparaît déjà dans le programme !", vbCritical, _ " Numéro déjà saisi !" TextBox1.SetFocus Exit Sub End If End If
Jacky
Bonjour,
Une piste peut-être '--------- nom = textbox1.Value If Application.CountIf(Worksheets("Feuil1").Range("a3:a5000"), "=" & nom) > 1 Then MsgBox "Saisie de doublon" End If '---------- Salutations JJ
"Florian" a écrit dans le message de news:
Bonjour. J'ai un textbox qui envoie des valeurs dans une feuille de calcul dans la colonne A3:A5000 les valeurs du textbox1 je souhaite que si une valeur se trouve déjà dans la plage A3:A5000 un msgbox se lance afin de prévenir l'utilisateur que la valeur a déjà été saisi. Mais le pb est que parfois je dois modifier le userform, et alors avec cette
procédure, il refuse de valider le userfrom, car la valeur est déjà dans la
feuille. Comment dois-je m'y prendre ? Merci beaucoup Flo riant
If TextBox1 <> "" Then If IsNumeric(Application.Match(TextBox1.Value, [Ref!A3:A5000], 0)) Then MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" & vbNewLine &
_ "Le numéro * " & TextBox1.Value & " * apparaît déjà dans le programme !", vbCritical, _ " Numéro déjà saisi !" TextBox1.SetFocus Exit Sub End If End If
Bonjour,
Une piste peut-être
'---------
nom = textbox1.Value
If Application.CountIf(Worksheets("Feuil1").Range("a3:a5000"), "=" & nom) > 1 Then
MsgBox "Saisie de doublon"
End If
'----------
Salutations
JJ
"Florian" <florian@toto.fr> a écrit dans le message de
news:eKTkrAufFHA.3936@TK2MSFTNGP14.phx.gbl...
Bonjour.
J'ai un textbox qui envoie des valeurs dans une feuille de calcul
dans la colonne A3:A5000 les valeurs du textbox1
je souhaite que si une valeur se trouve déjà dans la plage A3:A5000 un
msgbox se lance afin de prévenir l'utilisateur que la valeur a déjà été
saisi.
Mais le pb est que parfois je dois modifier le userform, et alors avec
cette
procédure, il refuse de valider le userfrom, car la valeur est déjà dans
la
feuille.
Comment dois-je m'y prendre ?
Merci beaucoup
Flo riant
If TextBox1 <> "" Then
If IsNumeric(Application.Match(TextBox1.Value, [Ref!A3:A5000], 0)) Then
MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" & vbNewLine
&
_
"Le numéro * " & TextBox1.Value & " * apparaît déjà dans le
programme !", vbCritical, _
" Numéro déjà saisi !"
TextBox1.SetFocus
Exit Sub
End If
End If
Une piste peut-être '--------- nom = textbox1.Value If Application.CountIf(Worksheets("Feuil1").Range("a3:a5000"), "=" & nom) > 1 Then MsgBox "Saisie de doublon" End If '---------- Salutations JJ
"Florian" a écrit dans le message de news:
Bonjour. J'ai un textbox qui envoie des valeurs dans une feuille de calcul dans la colonne A3:A5000 les valeurs du textbox1 je souhaite que si une valeur se trouve déjà dans la plage A3:A5000 un msgbox se lance afin de prévenir l'utilisateur que la valeur a déjà été saisi. Mais le pb est que parfois je dois modifier le userform, et alors avec cette
procédure, il refuse de valider le userfrom, car la valeur est déjà dans la
feuille. Comment dois-je m'y prendre ? Merci beaucoup Flo riant
If TextBox1 <> "" Then If IsNumeric(Application.Match(TextBox1.Value, [Ref!A3:A5000], 0)) Then MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" & vbNewLine &
_ "Le numéro * " & TextBox1.Value & " * apparaît déjà dans le programme !", vbCritical, _ " Numéro déjà saisi !" TextBox1.SetFocus Exit Sub End If End If
Florian
Bonjour Jacky je te remercie pour ta syntaxe qui est plus lisible que la mienne qui d'ailleurs ne provient pas de moi ;-) Je vais contourner le pb en mettant simplement if activecell ="" then etc. Merci pour l'aide apportée Flo riant
"Jacky" a écrit dans le message de news:
Bonjour,
Une piste peut-être '--------- nom = textbox1.Value If Application.CountIf(Worksheets("Feuil1").Range("a3:a5000"), "=" & nom)
1 Then MsgBox "Saisie de doublon"
End If '---------- Salutations JJ
"Florian" a écrit dans le message de news:
Bonjour. J'ai un textbox qui envoie des valeurs dans une feuille de calcul dans la colonne A3:A5000 les valeurs du textbox1 je souhaite que si une valeur se trouve déjà dans la plage A3:A5000 un msgbox se lance afin de prévenir l'utilisateur que la valeur a déjà été saisi. Mais le pb est que parfois je dois modifier le userform, et alors avec cette
procédure, il refuse de valider le userfrom, car la valeur est déjà dans la
feuille. Comment dois-je m'y prendre ? Merci beaucoup Flo riant
If TextBox1 <> "" Then If IsNumeric(Application.Match(TextBox1.Value, [Ref!A3:A5000], 0)) Then MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" & vbNewLine &
_ "Le numéro * " & TextBox1.Value & " * apparaît déjà dans le programme !", vbCritical, _ " Numéro déjà saisi !" TextBox1.SetFocus Exit Sub End If End If
Bonjour Jacky
je te remercie pour ta syntaxe qui est plus lisible que la mienne
qui d'ailleurs ne provient pas de moi ;-)
Je vais contourner le pb en mettant simplement if activecell ="" then etc.
Merci pour l'aide apportée
Flo riant
"Jacky" <nospam@bidon.fr> a écrit dans le message de news:
OJNUECvfFHA.272@TK2MSFTNGP15.phx.gbl...
Bonjour,
Une piste peut-être
'---------
nom = textbox1.Value
If Application.CountIf(Worksheets("Feuil1").Range("a3:a5000"), "=" & nom)
1 Then
MsgBox "Saisie de doublon"
End If
'----------
Salutations
JJ
"Florian" <florian@toto.fr> a écrit dans le message de
news:eKTkrAufFHA.3936@TK2MSFTNGP14.phx.gbl...
Bonjour.
J'ai un textbox qui envoie des valeurs dans une feuille de calcul
dans la colonne A3:A5000 les valeurs du textbox1
je souhaite que si une valeur se trouve déjà dans la plage A3:A5000 un
msgbox se lance afin de prévenir l'utilisateur que la valeur a déjà été
saisi.
Mais le pb est que parfois je dois modifier le userform, et alors avec
cette
procédure, il refuse de valider le userfrom, car la valeur est déjà dans
la
feuille.
Comment dois-je m'y prendre ?
Merci beaucoup
Flo riant
If TextBox1 <> "" Then
If IsNumeric(Application.Match(TextBox1.Value, [Ref!A3:A5000], 0)) Then
MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" &
vbNewLine
&
_
"Le numéro * " & TextBox1.Value & " * apparaît déjà dans le
programme !", vbCritical, _
" Numéro déjà saisi !"
TextBox1.SetFocus
Exit Sub
End If
End If
Bonjour Jacky je te remercie pour ta syntaxe qui est plus lisible que la mienne qui d'ailleurs ne provient pas de moi ;-) Je vais contourner le pb en mettant simplement if activecell ="" then etc. Merci pour l'aide apportée Flo riant
"Jacky" a écrit dans le message de news:
Bonjour,
Une piste peut-être '--------- nom = textbox1.Value If Application.CountIf(Worksheets("Feuil1").Range("a3:a5000"), "=" & nom)
1 Then MsgBox "Saisie de doublon"
End If '---------- Salutations JJ
"Florian" a écrit dans le message de news:
Bonjour. J'ai un textbox qui envoie des valeurs dans une feuille de calcul dans la colonne A3:A5000 les valeurs du textbox1 je souhaite que si une valeur se trouve déjà dans la plage A3:A5000 un msgbox se lance afin de prévenir l'utilisateur que la valeur a déjà été saisi. Mais le pb est que parfois je dois modifier le userform, et alors avec cette
procédure, il refuse de valider le userfrom, car la valeur est déjà dans la
feuille. Comment dois-je m'y prendre ? Merci beaucoup Flo riant
If TextBox1 <> "" Then If IsNumeric(Application.Match(TextBox1.Value, [Ref!A3:A5000], 0)) Then MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" & vbNewLine &
_ "Le numéro * " & TextBox1.Value & " * apparaît déjà dans le programme !", vbCritical, _ " Numéro déjà saisi !" TextBox1.SetFocus Exit Sub End If End If
Hervé
Bonjour Florian, En utilisant une collection, colle tout le code dans le module de ta Form et adapte ce qui ne te convient pas : '------------------- Dim Col As New Collection 'en tête du module de la Form
Private Sub UserForm_Initialize() Dim Plage As Range Dim I As Long
Set Plage = Range([A1], [A65536].End(3)) For I = 1 To Plage.Count 'au cas où il y a malgré tout des doublons 'si la liste est saine, supprime le gestionnaire d'erreur On Error Resume Next Col.Add Plage(I), CStr(Plage(I)) If Err.Number <> 0 Then MsgBox "Un doublon se trouve dans la liste " & _ "dans la cellule A" & I 'colore en rouge les doublons Range("A" & I).Interior.ColorIndex = 3 End If Next I
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Set Col = Nothing End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) With TextBox1 If .Value <> "" Then 'ajoute la valeur à la collection 'si existe, une erreur est générée On Error Resume Next Col.Add .Value, .Value If Err.Number <> 0 Then MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" & vbCr _ & "Le numéro * " & .Value & " * apparaît déjà dans le " _ & "programme !", vbCritical, _ " Numéro déjà saisi !" Cancel = True 'laisse le focus sur le textbox Else 'ajout de la valeur à la fin de la liste 'en colonne A (à adapter !) [A65536].End(3)(2) = .Value End If End If End With
End Sub '----------------
Hervé.
"Florian" a écrit dans le message de news:
Bonjour. J'ai un textbox qui envoie des valeurs dans une feuille de calcul dans la colonne A3:A5000 les valeurs du textbox1 je souhaite que si une valeur se trouve déjà dans la plage A3:A5000 un msgbox se lance afin de prévenir l'utilisateur que la valeur a déjà été saisi. Mais le pb est que parfois je dois modifier le userform, et alors avec cette
procédure, il refuse de valider le userfrom, car la valeur est déjà dans la
feuille. Comment dois-je m'y prendre ? Merci beaucoup Flo riant
If TextBox1 <> "" Then If IsNumeric(Application.Match(TextBox1.Value, [Ref!A3:A5000], 0)) Then MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" & vbNewLine &
_ "Le numéro * " & TextBox1.Value & " * apparaît déjà dans le programme !", vbCritical, _ " Numéro déjà saisi !" TextBox1.SetFocus Exit Sub End If End If
Bonjour Florian,
En utilisant une collection, colle tout le code dans le module de ta Form et
adapte ce qui ne te convient pas :
'-------------------
Dim Col As New Collection 'en tête du module de la Form
Private Sub UserForm_Initialize()
Dim Plage As Range
Dim I As Long
Set Plage = Range([A1], [A65536].End(3))
For I = 1 To Plage.Count
'au cas où il y a malgré tout des doublons
'si la liste est saine, supprime le gestionnaire d'erreur
On Error Resume Next
Col.Add Plage(I), CStr(Plage(I))
If Err.Number <> 0 Then
MsgBox "Un doublon se trouve dans la liste " & _
"dans la cellule A" & I
'colore en rouge les doublons
Range("A" & I).Interior.ColorIndex = 3
End If
Next I
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Set Col = Nothing
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With TextBox1
If .Value <> "" Then
'ajoute la valeur à la collection
'si existe, une erreur est générée
On Error Resume Next
Col.Add .Value, .Value
If Err.Number <> 0 Then
MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" &
vbCr _
& "Le numéro * " & .Value & " * apparaît déjà dans le
" _
& "programme !", vbCritical, _
" Numéro déjà saisi !"
Cancel = True 'laisse le focus sur le textbox
Else
'ajout de la valeur à la fin de la liste
'en colonne A (à adapter !)
[A65536].End(3)(2) = .Value
End If
End If
End With
End Sub
'----------------
Hervé.
"Florian" <florian@toto.fr> a écrit dans le message de news:
eKTkrAufFHA.3936@TK2MSFTNGP14.phx.gbl...
Bonjour.
J'ai un textbox qui envoie des valeurs dans une feuille de calcul
dans la colonne A3:A5000 les valeurs du textbox1
je souhaite que si une valeur se trouve déjà dans la plage A3:A5000 un
msgbox se lance afin de prévenir l'utilisateur que la valeur a déjà été
saisi.
Mais le pb est que parfois je dois modifier le userform, et alors avec
cette
procédure, il refuse de valider le userfrom, car la valeur est déjà dans
la
feuille.
Comment dois-je m'y prendre ?
Merci beaucoup
Flo riant
If TextBox1 <> "" Then
If IsNumeric(Application.Match(TextBox1.Value, [Ref!A3:A5000], 0)) Then
MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" & vbNewLine
&
_
"Le numéro * " & TextBox1.Value & " * apparaît déjà dans le
programme !", vbCritical, _
" Numéro déjà saisi !"
TextBox1.SetFocus
Exit Sub
End If
End If
Bonjour Florian, En utilisant une collection, colle tout le code dans le module de ta Form et adapte ce qui ne te convient pas : '------------------- Dim Col As New Collection 'en tête du module de la Form
Private Sub UserForm_Initialize() Dim Plage As Range Dim I As Long
Set Plage = Range([A1], [A65536].End(3)) For I = 1 To Plage.Count 'au cas où il y a malgré tout des doublons 'si la liste est saine, supprime le gestionnaire d'erreur On Error Resume Next Col.Add Plage(I), CStr(Plage(I)) If Err.Number <> 0 Then MsgBox "Un doublon se trouve dans la liste " & _ "dans la cellule A" & I 'colore en rouge les doublons Range("A" & I).Interior.ColorIndex = 3 End If Next I
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Set Col = Nothing End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) With TextBox1 If .Value <> "" Then 'ajoute la valeur à la collection 'si existe, une erreur est générée On Error Resume Next Col.Add .Value, .Value If Err.Number <> 0 Then MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" & vbCr _ & "Le numéro * " & .Value & " * apparaît déjà dans le " _ & "programme !", vbCritical, _ " Numéro déjà saisi !" Cancel = True 'laisse le focus sur le textbox Else 'ajout de la valeur à la fin de la liste 'en colonne A (à adapter !) [A65536].End(3)(2) = .Value End If End If End With
End Sub '----------------
Hervé.
"Florian" a écrit dans le message de news:
Bonjour. J'ai un textbox qui envoie des valeurs dans une feuille de calcul dans la colonne A3:A5000 les valeurs du textbox1 je souhaite que si une valeur se trouve déjà dans la plage A3:A5000 un msgbox se lance afin de prévenir l'utilisateur que la valeur a déjà été saisi. Mais le pb est que parfois je dois modifier le userform, et alors avec cette
procédure, il refuse de valider le userfrom, car la valeur est déjà dans la
feuille. Comment dois-je m'y prendre ? Merci beaucoup Flo riant
If TextBox1 <> "" Then If IsNumeric(Application.Match(TextBox1.Value, [Ref!A3:A5000], 0)) Then MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" & vbNewLine &
_ "Le numéro * " & TextBox1.Value & " * apparaît déjà dans le programme !", vbCritical, _ " Numéro déjà saisi !" TextBox1.SetFocus Exit Sub End If End If
Florian
Merci beaucoup Hervé c'est vraiment très intéressant je te remercie beaucoup bonne soirée Flo riant
"Hervé" a écrit dans le message de news: %
Bonjour Florian, En utilisant une collection, colle tout le code dans le module de ta Form et adapte ce qui ne te convient pas : '------------------- Dim Col As New Collection 'en tête du module de la Form
Private Sub UserForm_Initialize() Dim Plage As Range Dim I As Long
Set Plage = Range([A1], [A65536].End(3)) For I = 1 To Plage.Count 'au cas où il y a malgré tout des doublons 'si la liste est saine, supprime le gestionnaire d'erreur On Error Resume Next Col.Add Plage(I), CStr(Plage(I)) If Err.Number <> 0 Then MsgBox "Un doublon se trouve dans la liste " & _ "dans la cellule A" & I 'colore en rouge les doublons Range("A" & I).Interior.ColorIndex = 3 End If Next I
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Set Col = Nothing End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) With TextBox1 If .Value <> "" Then 'ajoute la valeur à la collection 'si existe, une erreur est générée On Error Resume Next Col.Add .Value, .Value If Err.Number <> 0 Then MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" & vbCr _ & "Le numéro * " & .Value & " * apparaît déjà dans le " _ & "programme !", vbCritical, _ " Numéro déjà saisi !" Cancel = True 'laisse le focus sur le textbox Else 'ajout de la valeur à la fin de la liste 'en colonne A (à adapter !) [A65536].End(3)(2) = .Value End If End If End With
End Sub '----------------
Hervé.
"Florian" a écrit dans le message de news:
Bonjour. J'ai un textbox qui envoie des valeurs dans une feuille de calcul dans la colonne A3:A5000 les valeurs du textbox1 je souhaite que si une valeur se trouve déjà dans la plage A3:A5000 un msgbox se lance afin de prévenir l'utilisateur que la valeur a déjà été saisi. Mais le pb est que parfois je dois modifier le userform, et alors avec cette
procédure, il refuse de valider le userfrom, car la valeur est déjà dans la
feuille. Comment dois-je m'y prendre ? Merci beaucoup Flo riant
If TextBox1 <> "" Then If IsNumeric(Application.Match(TextBox1.Value, [Ref!A3:A5000], 0)) Then MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" & vbNewLine &
_ "Le numéro * " & TextBox1.Value & " * apparaît déjà dans le programme !", vbCritical, _ " Numéro déjà saisi !" TextBox1.SetFocus Exit Sub End If End If
Merci beaucoup Hervé
c'est vraiment très intéressant
je te remercie beaucoup
bonne soirée
Flo riant
"Hervé" <hmsilve-sanspub@wanadoo.fr> a écrit dans le message de news:
%23eWSnCxfFHA.2268@TK2MSFTNGP15.phx.gbl...
Bonjour Florian,
En utilisant une collection, colle tout le code dans le module de ta Form
et
adapte ce qui ne te convient pas :
'-------------------
Dim Col As New Collection 'en tête du module de la Form
Private Sub UserForm_Initialize()
Dim Plage As Range
Dim I As Long
Set Plage = Range([A1], [A65536].End(3))
For I = 1 To Plage.Count
'au cas où il y a malgré tout des doublons
'si la liste est saine, supprime le gestionnaire d'erreur
On Error Resume Next
Col.Add Plage(I), CStr(Plage(I))
If Err.Number <> 0 Then
MsgBox "Un doublon se trouve dans la liste " & _
"dans la cellule A" & I
'colore en rouge les doublons
Range("A" & I).Interior.ColorIndex = 3
End If
Next I
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Set Col = Nothing
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With TextBox1
If .Value <> "" Then
'ajoute la valeur à la collection
'si existe, une erreur est générée
On Error Resume Next
Col.Add .Value, .Value
If Err.Number <> 0 Then
MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" &
vbCr _
& "Le numéro * " & .Value & " * apparaît déjà dans
le
" _
& "programme !", vbCritical, _
" Numéro déjà saisi !"
Cancel = True 'laisse le focus sur le textbox
Else
'ajout de la valeur à la fin de la liste
'en colonne A (à adapter !)
[A65536].End(3)(2) = .Value
End If
End If
End With
End Sub
'----------------
Hervé.
"Florian" <florian@toto.fr> a écrit dans le message de news:
eKTkrAufFHA.3936@TK2MSFTNGP14.phx.gbl...
Bonjour.
J'ai un textbox qui envoie des valeurs dans une feuille de calcul
dans la colonne A3:A5000 les valeurs du textbox1
je souhaite que si une valeur se trouve déjà dans la plage A3:A5000 un
msgbox se lance afin de prévenir l'utilisateur que la valeur a déjà été
saisi.
Mais le pb est que parfois je dois modifier le userform, et alors avec
cette
procédure, il refuse de valider le userfrom, car la valeur est déjà dans
la
feuille.
Comment dois-je m'y prendre ?
Merci beaucoup
Flo riant
If TextBox1 <> "" Then
If IsNumeric(Application.Match(TextBox1.Value, [Ref!A3:A5000], 0)) Then
MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" &
vbNewLine
&
_
"Le numéro * " & TextBox1.Value & " * apparaît déjà dans le
programme !", vbCritical, _
" Numéro déjà saisi !"
TextBox1.SetFocus
Exit Sub
End If
End If
Merci beaucoup Hervé c'est vraiment très intéressant je te remercie beaucoup bonne soirée Flo riant
"Hervé" a écrit dans le message de news: %
Bonjour Florian, En utilisant une collection, colle tout le code dans le module de ta Form et adapte ce qui ne te convient pas : '------------------- Dim Col As New Collection 'en tête du module de la Form
Private Sub UserForm_Initialize() Dim Plage As Range Dim I As Long
Set Plage = Range([A1], [A65536].End(3)) For I = 1 To Plage.Count 'au cas où il y a malgré tout des doublons 'si la liste est saine, supprime le gestionnaire d'erreur On Error Resume Next Col.Add Plage(I), CStr(Plage(I)) If Err.Number <> 0 Then MsgBox "Un doublon se trouve dans la liste " & _ "dans la cellule A" & I 'colore en rouge les doublons Range("A" & I).Interior.ColorIndex = 3 End If Next I
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Set Col = Nothing End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) With TextBox1 If .Value <> "" Then 'ajoute la valeur à la collection 'si existe, une erreur est générée On Error Resume Next Col.Add .Value, .Value If Err.Number <> 0 Then MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" & vbCr _ & "Le numéro * " & .Value & " * apparaît déjà dans le " _ & "programme !", vbCritical, _ " Numéro déjà saisi !" Cancel = True 'laisse le focus sur le textbox Else 'ajout de la valeur à la fin de la liste 'en colonne A (à adapter !) [A65536].End(3)(2) = .Value End If End If End With
End Sub '----------------
Hervé.
"Florian" a écrit dans le message de news:
Bonjour. J'ai un textbox qui envoie des valeurs dans une feuille de calcul dans la colonne A3:A5000 les valeurs du textbox1 je souhaite que si une valeur se trouve déjà dans la plage A3:A5000 un msgbox se lance afin de prévenir l'utilisateur que la valeur a déjà été saisi. Mais le pb est que parfois je dois modifier le userform, et alors avec cette
procédure, il refuse de valider le userfrom, car la valeur est déjà dans la
feuille. Comment dois-je m'y prendre ? Merci beaucoup Flo riant
If TextBox1 <> "" Then If IsNumeric(Application.Match(TextBox1.Value, [Ref!A3:A5000], 0)) Then MsgBox "Vous ne pouvez pas saisir 2 fois le même numéro !" & vbNewLine &
_ "Le numéro * " & TextBox1.Value & " * apparaît déjà dans le programme !", vbCritical, _ " Numéro déjà saisi !" TextBox1.SetFocus Exit Sub End If End If