Identifier debut chaine!

  • Initiateur de la discussion Initiateur de la discussion demax
  • Date de début Date de début

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 !

demax

XLDnaute Occasionnel
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
 
Re : Identifier debut chaine!

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
 
Re : Identifier debut chaine!

Bonjour pierrejean,
Je réponds bien volontiers à votre demande.
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 :
Code:
	chiffreOuiNon = (Asc(c & Space(1)) > 47) And (Asc(c & Space(1)) < 58)
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)
J'espère être assez clair.​
Cordialement,
ROGER2327
 
Dernière édition:
Re : Identifier debut chaine!

Re

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

Discussions similaires

Réponses
16
Affichages
629
Réponses
7
Affichages
283
Réponses
2
Affichages
303
Réponses
5
Affichages
234
Retour