Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Cellule avec chiffres ou texte ou les 2

  • Initiateur de la discussion Initiateur de la discussion loiclass
  • 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 !

loiclass

XLDnaute Occasionnel
Bonjour,
Existe t'il une macro permettant de dire si dans une cellule nous avons saisi uniquement des chiffres (entier ou non), ou uniquement du texte, où les deux ?

Merci de votre aide.
 
Bonsour®
un fichier exemple avec les diverses écritures possibles et les résultats attendus
aurait évité 15 messages non productifs ...

la lecture ou relecture de la charte aurait été bienvenue !
 
Bonjour,

Voyez le fichier joint et cette fonction VBA :
VB:
Function Test$(x As Variant)
Dim i%, t1 As Boolean, t2 As Boolean
If IsError(x) Then x = ""
For i = 1 To Len(x)
    If IsNumeric(Mid(x, i, 1)) Then t1 = True Else t2 = True
Next
If Not t1 Then Test = "Aucun chiffre" Else If IsNumeric(Left(x, 1)) And Not t2 Then Test = "Chiffres seulement" Else Test = "Mélange"
End Function
Edit : ajouté le traitement des valeurs d'erreur.

A+
 

Pièces jointes

Dernière édition:
Bonjour Job75
Il est à craindre que les deux propositions faites (celles par vba et celle par formule) ignorent les précisions apportées en message #11

PS : et ma question à loiclass est toujours sans réponse.
 
Maintenant si l'on s'intéresse aux nombres il faut traiter le séparateur décimal de l'ordi :
VB:
Function Test$(x As Variant)
Dim ds$, i%, t1 As Boolean, t2 As Boolean
ds = Application.DecimalSeparator
If IsError(x) Then x = ""
For i = 1 To Len(x)
    If i > 1 And Mid(x, i, 1) = ds Then If IsNumeric(Mid(x, i - 1, 1)) And IsNumeric(Mid(x, i + 1, 1)) Then i = i + 1 'le séparateur est ignoré
    If IsNumeric(Mid(x, i, 1)) Then t1 = True Else t2 = True
Next
If Not t1 Then Test = "Aucun nombre" Else If IsNumeric(Left(x, 1)) And Not t2 Then Test = "Nombres seulement" Else Test = "Mélange"
End Function
 

Pièces jointes

C'est pour du calcul de besoin à partir d'un inventaire.
Certaines cellules de l'inventaire sont en nombre de sacs par exemple, d'autres sont en gr et d'autres sont en nb sacs + gr.
Dans ce cas, tester si la cellule contient du texte ou non n'apporterait une solution qu'au travers d'une véritable usine à gaz en VBA alors que la solution d'Eric au post #16 (une colonne dédiée aux unités) résoudrait le problème de la façon la simple possible !
 
d'autres sont en nb sacs + gr.
Ben voyons 🙂
Tu as oublié d'y mettre la date 😉
Ca confirme que mettre plusieurs infos dans une même cellule est rarement une bonne idée
 
Puisqu'on a parlé de "sacs" et de "gr" voyez le fichier joint qui utilise ces 2 unités de mesure.

L'inventaire est en colonne B, en colonne C tout est converti en "gr" par cette fonction VBA :
VB:
Function Gr(x$, sac#)
Dim s, i%
s = Split(Replace(x & " ", ",", ".")) 'le séparateur décimal n'a pas d'importance
For i = 0 To UBound(s)
    If Val(s(i)) Then Gr = Gr + IIf(LCase(s(i + 1)) Like "sac*", sac, 1) * Val(s(i))
Next
End Function
Le total en C6 est reconverti en B6 par la formule :
Code:
=ENT(C6/F2)&" sac"&REPT("s";ENT(C6/F2)>1)&REPT(" + "&ARRONDI(C6-F2*ENT(C6/F2);2)&" gr";ARRONDI(C6-F2*ENT(C6/F2);2)>0)
 

Pièces jointes

Bonjour jmfmarques,

La virgule sera toujours dans un nombre décimal.

J'ai utilisé la fonction isnumeric et ça a l'air de fonctionner.
Je joins un fichier exemple dès que possible.

Merci
 
Bonjour eriiic,
Je suis d'accord avec vous, le mélange d'info n'est jamais bon.
Pour info, je récupère ces données dans un fichier créé par qqn d'autre.
Le but étant de simplifier certaines choses.
 
Pour info, je récupère ces données dans un fichier créé par qqn d'autre.
Le but étant de simplifier certaines choses.
Dans ce cas le fait de savoir que c'est un mélange ou pas va t'aider ? Que comptes-tu faire de cette info ?
Moi j'aurais demandé qu'on m'éclate les données dans 4 colonnes. Au moins j'y verrai clair pour travailler avec...
 
Le but étant de simplifier certaines choses.

La simplification ultime eut été de fournir un fichier contenant différents exemples d'expressions à traiter et les résultats souhaités. Les répondeurs aurait sans doute trouvé une solution depuis belle lurette sans être contraints à créer de toutes pièces un fichier. On préfère ne rien faire et attendre que les autres fassent. Bon, ce doit être le confinement qui me met à cran.
J'avais élaboré trois ou quatre formules et codes mais j'ai abandonné devant le manque d’information fournie et les précisions distillées au compte-gouttes, je suis très mauvais en devinette (pas comme @job75 que je salue 😉 - et tous les autres aussi, je les salue 😉 - et @loiclass aussi, je le salue 🙂)
 
Dernière édition:
- 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
15
Affichages
251
Réponses
2
Affichages
281
Réponses
9
Affichages
404
Réponses
18
Affichages
419
Réponses
18
Affichages
183
Réponses
17
Affichages
380
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…