Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Bonjour
je souhaiterai identifier le debut d'une chaine de caractere savoir si C un chiffre ou une lettre pour l'utiliser dans une condition.
merci de m'eclairer
If IsNumeric(Left(Range("A1"), 1)) then
ca C pour savoir si le premier caractere est numerique mais pour dire le contraire comment l'exprimer
en PHP on utilise le point d'exclamation mais VBA?
pour la fonction je sais pas comment l'utiliser🙁
merci
Problème :
Le contenu d'une cellule commence-t-il par un chiffre ? Répondre par VRAI ou FAUX. Solution :
Première observation : il faut rendre un résultat booléen. On commence donc par :
Code:
Function chiffreOuiNon(c) [COLOR="Red"]As Boolean[/COLOR]
Envisageons les cas possibles :
La cellule est vide ; elle ne commence donc pas par un chiffre. Réponse : FAUX.
La cellule n'est pas vide ; elle contient un nombre ou une chaîne de caractères.
Pour unifier les possibilités, on considérera les nombres comme chaîne de caractères.
Pour ce faire on commence par :
Code:
Function chiffreOuiNon(c [COLOR="Red"]As String[/COLOR]) As Boolean
Cette chaîne peut être de longueur nulle. Réponse : FAUX. D'où :
Code:
chiffreOuiNon = Len(c)
qui renvoie FAUX si c est de longueur nulle, VRAI sinon. c étant supposé de longueur non nulle, si elle commence par un chiffre alors le code ASCII de son premier caractère est strictement supérieur à 47 et strictement inférieur à 58. Par conséquent :
Code:
chiffreOuiNon = (Asc(c) > 47) And (Asc(c) < 58)
renvoie VRAI si la chaîne c commence par un chiffre, FAUX dans tous les autres cas.
Malheureusement, Asc(c) renvoie une erreur si c est de longueur nulle. On remédie à cet inconvénient en écrivant :
La fonction Asc(c) ne prenant en compte que le premier caractère de son argument, Asc(c & Space(1)) renverra 32 (code ASCII de l'espace) si c est de longueur nulle.
En regroupant toutes les conditions, on obtient finalement :
Code:
chiffreOuiNon = Len(c) And (Asc(c & Space(1)) > 47) And (Asc(c & Space(1)) < 58)
Mes neurones vous remercient
Etant un peu primaire je ne voyais guere que: len(c) est un chiffre
Il me faut donc bien voir que traduit en booléen tout chiffre hormis 1 est traduit comme Faux
Par ailleurs je n'imaginais pas ce que pouvait donner Asc sur plus d'un caractere
Je viens donc d'apprendre qu'Asc s'interesse exclusivement au premier caractere d'un string
Merci encore
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD