4 votes

Vérifiez que la valeur est numérique et ne comporte pas plus de n chiffres.

J'essaie d'ajouter une validation à un sous VBA et je dois m'assurer que l'utilisateur saisit un nombre et qu'il ne dépasse pas la limite fixée, j'utilise une fonction car cela varie selon l'équipe.

Je peux obtenir la longueur du texte

With Selection.Validation
    .Add Type:=xlValidateTextLength, AlertStyle:=xlValidAlertStop, _
    Operator:=xlBetween, Formula1:="0", Formula2:=ValidMaxLength

Mais il est évident que cela peut permettre le texte.

Toute aide est la bienvenue.

2voto

Raystafarian Points 21292

Oui, ajoutez un isnumeric et une longueur :

If IsNumeric(Range("A1")) Then

    If Len(Range("A1").Value) < 3 Then

        'do stuff

    End If

End If

Il est probablement aussi préférable de vérifier d'abord qu'il n'est pas vide, entre autres choses. Comme vous ne nous avez donné qu'un extrait, je ne m'adresse qu'à un extrait.

-1voto

Mike Grace Points 197

Len ne fonctionnera pas ici car il pourrait prendre 1,0 comme 3 chiffres et 100 comme 3 chiffres. Comme il s'agit d'un nombre, vous devrez simplement vérifier si la valeur est inférieure à un certain montant (et probablement supérieure à 0 selon vos besoins). Quelque chose comme le code ci-dessous devrait vous aider à démarrer.

Sub ValidateEntry()
    Dim rngToValidate As Range
    Dim val_UpperLimit As Double
    Dim val_LowerLimit As Double
    Set rngToValidate = Range("A1")
    val_UpperLimit = 100
    val_LowerLimit = 0

    If IsNumeric(rngToValidate) _
    And rngToValidate.Value < val_UpperLimit _
    And rngToValidate.Value > val_LowerLimit Then
        'passed validation
    Else
        'failed validation
    End If
End Sub

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X