Magic_Doctor
XLDnaute Barbatruc
Bonjour,
Avec l'aide du Forum, j'ai rédigé un fonction très simple et courte pour un contrôle de saisies qui vérifie si l'entrée est numérique et positive. Suivant la valeur de "dilemme" (0 ou 1) la valeur "0" sera acceptée ou pas :
Public Function ControleSaisie(saisie As Range, dilemme As Byte) As Byte
If saisie = "" Then
ControleSaisie = 0 'la cellule vide est autorisée
ElseIf dilemme = 1 And saisie <= 0 Or Not IsNumeric(saisie) Or TypeName(saisie.Value) = "String" Or TypeName(saisie.Value) = "Error" Then
ControleSaisie = 1 'cellule avec contenu non numérique ou <= 0 pas autorisée
ElseIf dilemme = 0 And saisie < 0 Or Not IsNumeric(saisie) Or TypeName(saisie.Value) = "String" Or TypeName(saisie.Value) = "Error" Then
ControleSaisie = 1 'cellule avec contenu non numérique ou < 0 pas autorisée
Else
ControleSaisie = 0 'tout le reste est autorisé
End If
'If IsError(ControleSaisie) Then ControleSaisie = 1
End Function
La fonction marche bien mais pas dans tous les cas.
Par exemple si je rentre une valeur tout à fait erronée comme "-ñ" ou "-lolo" par ex., la fonction ne marche plus.
J'ai bien essayé d'y intercaler :
If IsError(ControleSaisie) Then ControleSaisie = 1
Mais sans succès...
Merci d'avance pour tout tuyau.
Avec l'aide du Forum, j'ai rédigé un fonction très simple et courte pour un contrôle de saisies qui vérifie si l'entrée est numérique et positive. Suivant la valeur de "dilemme" (0 ou 1) la valeur "0" sera acceptée ou pas :
Public Function ControleSaisie(saisie As Range, dilemme As Byte) As Byte
If saisie = "" Then
ControleSaisie = 0 'la cellule vide est autorisée
ElseIf dilemme = 1 And saisie <= 0 Or Not IsNumeric(saisie) Or TypeName(saisie.Value) = "String" Or TypeName(saisie.Value) = "Error" Then
ControleSaisie = 1 'cellule avec contenu non numérique ou <= 0 pas autorisée
ElseIf dilemme = 0 And saisie < 0 Or Not IsNumeric(saisie) Or TypeName(saisie.Value) = "String" Or TypeName(saisie.Value) = "Error" Then
ControleSaisie = 1 'cellule avec contenu non numérique ou < 0 pas autorisée
Else
ControleSaisie = 0 'tout le reste est autorisé
End If
'If IsError(ControleSaisie) Then ControleSaisie = 1
End Function
La fonction marche bien mais pas dans tous les cas.
Par exemple si je rentre une valeur tout à fait erronée comme "-ñ" ou "-lolo" par ex., la fonction ne marche plus.
J'ai bien essayé d'y intercaler :
If IsError(ControleSaisie) Then ControleSaisie = 1
Mais sans succès...
Merci d'avance pour tout tuyau.