Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment savoir si le contenu d'une cellule est numérique ou non e.

7 réponses
Avatar
Timide
Bonjour ,
Depuis VBA j'aimerai savoir si le contenu d'une cellule cells(i%,4) par
exemple et numérique ou pas (texte, vide, erreur,...).
Comment puis-je faire ?
Merci.

7 réponses

Avatar
Fredo P.
=ESTTEXTE(A1)
égale vrai ou faux
"Timide" a écrit dans le message de news:

Bonjour ,
Depuis VBA j'aimerai savoir si le contenu d'une cellule cells(i%,4) par
exemple et numérique ou pas (texte, vide, erreur,...).
Comment puis-je faire ?
Merci.



Avatar
Michel Gaboly
Bonjour Fredo,

Pas tout à fait d'accord avec toi. Ta solution marche le plus souvent, mais ne suffit pas.

Je suppose que tu déduis qu'une cellule pour laquelle ESTTEXTE() renvoi e FAUX est numérique, mais ce n'est pas forcément
le cas : une valeur d'erreur comme #VALEUR! ou une valeur logique (VRAI o u FAUX) ne sont pas du texte, mais ne sont pas
non plus numériques.

Il est plus simple d'utiliser ESTNUM() qui renvoie directement le résul tat souhaité, ou mieux IsNumeric, qui évite de
devoir faire appel à Evaluate, puisque la demande de Timide est de ré cupérer l'info depuis VBA.

Sub TestNum()
MsgBox IsNumeric(ActiveCell)
End Sub

L'autre solution est d'utiliser la fonction TYPE() qui fournit l'info la plus complète. Elle renvoie :

1 si le contenu est numérique
2 si le contenu est du texte
4 le contenu est une valeur logique
16 si le contenu est une valeur d'erreur
64 si le contenu est une matrice


Sub Test2Num()
MsgBox Evaluate("Type(" & ActiveCell & ")")
End Sub


=ESTTEXTE(A1)
égale vrai ou faux
"Timide" a écrit dans le message d e news:

Bonjour ,
Depuis VBA j'aimerai savoir si le contenu d'une cellule cells(i%,4) pa r
exemple et numérique ou pas (texte, vide, erreur,...).
Comment puis-je faire ?
Merci.







--
Cordialement,

Michel Gaboly
www.gaboly.com


Avatar
Michel Gaboly
Bonjour Fredo,

Pas tout à fait d'accord avec toi. Ta solution marche le plus souvent, mais ne suffit pas.

Je suppose que tu déduis qu'une cellule pour laquelle ESTTEXTE() renvoi e FAUX est numérique, mais ce n'est pas forcément
le cas : une valeur d'erreur comme #VALEUR! ou une valeur logique (VRAI o u FAUX) ne sont pas du texte, mais ne sont pas
non plus numériques.

Il est plus simple d'utiliser ESTNUM() qui renvoie directement le résul tat souhaité, ou mieux IsNumeric, qui évite de
devoir faire appel à Evaluate, puisque la demande de Timide est de ré cupérer l'info depuis VBA.

Sub TestNum()
MsgBox IsNumeric(ActiveCell)
End Sub

L'autre solution est d'utiliser la fonction TYPE() qui fournit l'info la plus complète. Elle renvoie :

1 si le contenu est numérique
2 si le contenu est du texte
4 le contenu est une valeur logique
16 si le contenu est une valeur d'erreur
64 si le contenu est une matrice


Sub Test2Num()
MsgBox Evaluate("Type(" & ActiveCell & ")")
End Sub


=ESTTEXTE(A1)
égale vrai ou faux
"Timide" a écrit dans le message d e news:

Bonjour ,
Depuis VBA j'aimerai savoir si le contenu d'une cellule cells(i%,4) pa r
exemple et numérique ou pas (texte, vide, erreur,...).
Comment puis-je faire ?
Merci.







--
Cordialement,

Michel Gaboly
www.gaboly.com


Avatar
Tatanka
Salut Michel,

Tiens un revenant !
Le 15 novembre 2007, je t'ai fait parvenir un classeur nommé « Henri3.xls » :

Comme on ne te «voit» plus sur le MPFE, je me permets de t'écrire personnelement.
C'est que j'ai un ami qui travaille avec Excel 2004 sur un Mac.
Or je lui ai fait parvenir un classeur Excel 2003 conçu sur Windows et tout ne fonctionne
pas correctement sur sa machine. Je joins ledit document en espérant que tu puisses
me dire ce qui cloche pour rendre mon document acceptable pour son Mac.
En espérant recevoir de tes nouvelles et te revoir sur MPFE.

Voici le fichier :
http://cjoint.com/?miq1ANdFqr

J'aimerais bien avoir l'avis des propriétaires de Mac à ce sujet.

Serge
P.S. Je constate que tes explications sont toujours aussi obscures :-)



"Michel Gaboly" a écrit dans le message de news: %
Bonjour Fredo,

Pas tout à fait d'accord avec toi. Ta solution marche le plus souvent, mais ne suffit pas.

Je suppose que tu déduis qu'une cellule pour laquelle ESTTEXTE() renvoie FAUX est numérique, mais ce n'est pas forcément
le cas : une valeur d'erreur comme #VALEUR! ou une valeur logique (VRAI ou FAUX) ne sont pas du texte, mais ne sont pas
non plus numériques.

Il est plus simple d'utiliser ESTNUM() qui renvoie directement le résultat souhaité, ou mieux IsNumeric, qui évite de
devoir faire appel à Evaluate, puisque la demande de Timide est de récupérer l'info depuis VBA.

Sub TestNum()
MsgBox IsNumeric(ActiveCell)
End Sub

L'autre solution est d'utiliser la fonction TYPE() qui fournit l'info la plus complète. Elle renvoie :

1 si le contenu est numérique
2 si le contenu est du texte
4 le contenu est une valeur logique
16 si le contenu est une valeur d'erreur
64 si le contenu est une matrice


Sub Test2Num()
MsgBox Evaluate("Type(" & ActiveCell & ")")
End Sub


=ESTTEXTE(A1)
égale vrai ou faux
"Timide" a écrit dans le message de news:
Bonjour ,
Depuis VBA j'aimerai savoir si le contenu d'une cellule cells(i%,4) par
exemple et numérique ou pas (texte, vide, erreur,...).
Comment puis-je faire ?
Merci.







--
Cordialement,

Michel Gaboly
www.gaboly.com


Avatar
Michel Gaboly
Bonsoir Serge,

Excuse-moi, ton message du mois dernier m'avait échappé.

Je vais regarder le fichier, et je te tiens au courant.


Salut Michel,

Tiens un revenant !
Le 15 novembre 2007, je t'ai fait parvenir un classeur nommé « Henr i3.xls » :

Comme on ne te «voit» plus sur le MPFE, je me permets de t'écrire personnelement.
C'est que j'ai un ami qui travaille avec Excel 2004 sur un Mac.
Or je lui ai fait parvenir un classeur Excel 2003 conçu sur Windows e t tout ne fonctionne
pas correctement sur sa machine. Je joins ledit document en espérant que tu puisses
me dire ce qui cloche pour rendre mon document acceptable pour son Mac.
En espérant recevoir de tes nouvelles et te revoir sur MPFE.

J'aimerais bien avoir l'avis des propriétaires de Mac à ce sujet.

Serge




P.S. Je constate que tes explications sont toujours aussi obscures :-)


Hé oui, je n'ai pas changé complètement, ni beaucoup progressé ;- )))



--
A bientôt,

Michel Gaboly
www.gaboly.com

Avatar
Fredo P.
"Michel Gaboly" a écrit dans le message de news:
%
Bonjour Fredo,

Pas tout à fait d'accord avec toi. Ta solution marche le plus souvent, mais
ne suffit pas.

Je suppose que tu déduis qu'une cellule pour laquelle ESTTEXTE() renvoie
FAUX est numérique, mais ce n'est pas forcément
le cas : une valeur d'erreur comme #VALEUR! ou une valeur logique (VRAI ou
FAUX) ne sont pas du texte, mais ne sont pas
non plus numériques.

Il est plus simple d'utiliser ESTNUM() """d'accord""" qui renvoie
directement le résultat souhaité, ou mieux IsNumeric"""encore d'accord""",
qui évite de
devoir faire appel à Evaluate, puisque la demande de Timide est de récupérer
l'info depuis VBA."""mdr"""
C'est aujoud'hui samedi, il fait grand vent, c'est connu, ça saoul quelque
peu la cervelle :o)

Sub TestNum()
MsgBox IsNumeric(ActiveCell)
End Sub

L'autre solution est d'utiliser la fonction TYPE() qui fournit l'info la
plus complète. Elle renvoie :

1 si le contenu est numérique
2 si le contenu est du texte
4 le contenu est une valeur logique
16 si le contenu est une valeur d'erreur
64 si le contenu est une matrice


Sub Test2Num()
MsgBox Evaluate("Type(" & ActiveCell & ")")
End Sub


=ESTTEXTE(A1)
égale vrai ou faux
"Timide" a écrit dans le message de
news:
Bonjour ,
Depuis VBA j'aimerai savoir si le contenu d'une cellule cells(i%,4) par
exemple et numérique ou pas (texte, vide, erreur,...).
Comment puis-je faire ?
Merci.







--
Cordialement,

Michel Gaboly
www.gaboly.com


Avatar
Michel Gaboly
Bonjour Serge,

Volà j'ai regardé. Le problème (celui que j'ai repéré ; il y en a peut-être d'autres ;-(() vient de ce que
dans les versions d'Excel Mac, VBA est toujours basé sur la version 5 d e VB, comme Excel 95.

Par conséquent, la fonction Replace, utilisable dans les versions Win d epuis Excel 2000 provoque une erreur de compilation.

Il faut donc faire appel à la fonction de feuille de calcul Substitute( ) à la place.

Pour simplifier l'écriture du code, j'utilise dans mes développements la fonction Remplace, avec un "m" comme en français) :

Public Function Remplace(Chaine$, Ancien$, Nouveau$)
#If Mac Then
Remplace = Application.WorksheetFunction.Substitute(Chaine , Ancien, Nouveau)
#ElseIf VBA6 Then
Remplace = Remplace(Chaine, Ancien, Nouveau)
#Else
Remplace = Application.WorksheetFunction.Substitute(Chaine , Ancien, Nouveau)
#End If
End Function

Il suffit de faire un recherche/remplace de "Replace" par "Remplace" dans tout le code, en choisissant "Projet" et non
"Module" ou "Procédure".

NB - Il faut faire le recherche/remplace AVANT d'écrire ou de coller le code de la fonction Remplace, sous peine d'avoir
une correction manualle à faire ensuite pour conserver les 4 occurrence s de "Remplace" dans la fonction.

Le raccourci clavier diffère selon l'environnement, je l'ai indiqué d ans le fichier modifié, et mis sur cjoint :

http://cjoint.com/?mkoWtrwbXK



Bonsoir Serge,

Excuse-moi, ton message du mois dernier m'avait échappé.

Je vais regarder le fichier, et je te tiens au courant.


Salut Michel,

Tiens un revenant !
Le 15 novembre 2007, je t'ai fait parvenir un classeur nommé «
Henri3.xls » :

Comme on ne te «voit» plus sur le MPFE, je me permets de t'écrir e
personnelement.
C'est que j'ai un ami qui travaille avec Excel 2004 sur un Mac.
Or je lui ai fait parvenir un classeur Excel 2003 conçu sur Windows et
tout ne fonctionne
pas correctement sur sa machine. Je joins ledit document en espérant
que tu puisses
me dire ce qui cloche pour rendre mon document acceptable pour son Mac .
En espérant recevoir de tes nouvelles et te revoir sur MPFE.

J'aimerais bien avoir l'avis des propriétaires de Mac à ce sujet.

Serge




P.S. Je constate que tes explications sont toujours aussi obscures :-)


Hé oui, je n'ai pas changé complètement, ni beaucoup progressé ;-)))






--
Cordialement,

Michel Gaboly
www.gaboly.com