bonjour,
j'ai une vérification qui tourne sur un fichier de saisie depuis des années et qui consiste à vérifier si la valeur 1 est supérieur à la valeur 2 associée
les cellules sont protégées et en format nombre dans le fichier de saisi fourni aux utilisateurs qui entre les valeurs 1 et 2
pour la première fois j'ai un problème sur trois valeurs: excel les considère comme du texte et me dit du coup qu'elle sont supérieur à la valeur 2 associée
je ne comprends pas pourquoi et ne comprenant pas je ne trouve pas de solution, je me demande si je rate un truc évident ou si il n'y a pas de solution
les données ne viennent pas de format exotique passant par le web ou autre c'est une saisie manuelle directement dans excel, je ne vois pas d'espace ni de caractères cachés, si je revalide la valeur avec entrée le problème disparaît mais ça ne solutionne pas mon problème
Bonjour Nicopec, Rouge,
S'agissant d'un outil, le problème est que l'utilisateur peut refaire l'erreur.
Le plus simple à mes yeux pour contourner le problème est de transformer les chaines en nombres avec :
j'imagine que l'utilisateur a fait une saisie ailleurs dans un format texte pour le coller dans le fichier de saisie en passant outre les validations au format décimal...
mais du coup comment détecter qu'il "considère" que c'est du texte car je pensais que IsNumeric(cells(4,1)) me renverrait false mais pas du tout... ce qui est une grande certitude qui vient de s'effondrer...
j'imagine que l'utilisateur a fait une saisie ailleurs dans un format texte pour le coller dans le fichier de saisie en passant outre les validations au format décimal...
mais du coup comment détecter qu'il "considère" que c'est du texte car je pensais que IsNumeric(cells(4,1)) me renverrait false mais pas du tout... ce qui est une grande certitude qui vient de s'effondrer...
Bonjour à Tous,
...et pour la fonction Excel (pas en VBA) ESTNUM(A4) renvoie bien FAUX, du coup, peut-être une MFC pour alerter d'une "erreur" de saisie
Re,
Après essais, il s'avère qu'avant de regarder si la valeur est numérique, il évalue si la valeur pourrait être numérique, et si c'est le cas il prend cette valeur transformée. Il est futé.
En fait il fait :
Valeur=Val(Cellule)
Isnumeric(Valeur)
Par ex :
a1=3 isnumeric=VRAI
a1='3 ( donc commentaire ) isnumeric=VRAI
a1=3 en format texte, isnumeric=VRAI
je voulais dire: si je veux détecter une valeur non numérique j'utilise IsNumeric mais dans ce cas il n'arrive pas à détecter que ce n'est pas numérique du coup je me demandais s'il y avait un autre moyen
après oui merci pour Val() que je ne connaissais pas
J'ai l'impression qu'en tout début le VBA va évaluer si cela pourrait être numérique, et si ça l'est il convertit.
Je n'ai rien trouvé permettant de lever l'ambiguïté, je ne suis pas arrivé à tricher.
Mais peut être que cela existe.
merci à tous pour votre aide et vos éclaircissements, cette vérif fait partie d'un ensemble de vérifs et j'ai construit mon code en testant si la valeur est numérique ou non avant de décider quoi en faire mais je vais peut être devoir reconsidérer cette approche