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®
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.
Les nb sacs se remplissent automatiquement dans le calcul de besoin, par pour ce qui des autres je souhaite faire intervenir l'utilisateur pour qu'il renseigne lui même l'info après contrôle des valeurs
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 !
4 – La question doit être posée le plus clairement possible en comprenant bien que le lecteur ne peut pas s’imaginer le problème.

5 – La possibilité de joindre des fichiers est donnée sur ce forum. Ne pas hésiter à utiliser cette fonction, tout en veillant que les données soient bidons et donc qu’aucune donnée confidentielle, nominative ne soit dans le fichier.
 
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:
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 !
 
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

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
Retour