La macro suivante calcule la moyenne des valeurs
d'une sélection quelconque de cellules en ignorant
les cellules vides et les cellules contenant une formule :
Sub Moy_Space()
For Each c In Selection
If c.HasFormula = False And c.Value <> "" Then
i = i + 1
s = s + c.Value
End If
Next c
MsgBox "Moyenne : " & s / i
End Sub
J'essaie maintenant de faire le même travail avec une fonction,
mais en vain. Qu'est qui cloche ( de Noël ) ?
J'ai essayé en utilisant ... Areas ... mais je tourne en O !
Function Moy(ici As Range) As Double
For Each c In ici
If c.HasFormula = False And c.Value <> "" Then
i = i + 1
s = s + c.Value
End If
Next c
Moy = s / i
End Function
Vous avez des suggestions ?
Joyeuses Fêtes à tous et à toutes.
Serge
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
isabelle
salut serge,
pas de tintement de cloche par chez nous, c'est quoi, un résultat faux ou un message d'erreur ?
isabelle
Le 2010-12-22 11:18, Tatanka a écrit :
Sub Moy_Space() For Each c In Selection If c.HasFormula = False And c.Value<> "" Then i = i + 1 s = s + c.Value End If Next c MsgBox "Moyenne : "& s / i End Sub
salut serge,
pas de tintement de cloche par chez nous,
c'est quoi, un résultat faux ou un message d'erreur ?
isabelle
Le 2010-12-22 11:18, Tatanka a écrit :
Sub Moy_Space()
For Each c In Selection
If c.HasFormula = False And c.Value<> "" Then
i = i + 1
s = s + c.Value
End If
Next c
MsgBox "Moyenne : "& s / i
End Sub
pas de tintement de cloche par chez nous, c'est quoi, un résultat faux ou un message d'erreur ?
isabelle
Le 2010-12-22 11:18, Tatanka a écrit :
Sub Moy_Space() For Each c In Selection If c.HasFormula = False And c.Value<> "" Then i = i + 1 s = s + c.Value End If Next c MsgBox "Moyenne : "& s / i End Sub
Tatanka
J'ai oublié le cas où des cellules de la sélection contiennent du texte. Correction :
Sub Moy_Space() For Each c In Selection If c.HasFormula = False And Application.IsNumber(c.Value) Then i = i + 1 s = s + c.Value End If Next c If i = 0 Then MsgBox "Ne s'applique pas." Else MsgBox "Moyenne : " & s / i End If End Sub
Mais toujours incapable d'en faire une fonction personnalisée !
Serge
"Tatanka" a écrit dans le message de news: iet8b9$p2v$
Bonjour,
La macro suivante calcule la moyenne des valeurs d'une sélection quelconque de cellules en ignorant les cellules vides et les cellules contenant une formule :
Sub Moy_Space() For Each c In Selection If c.HasFormula = False And c.Value <> "" Then i = i + 1 s = s + c.Value End If Next c MsgBox "Moyenne : " & s / i End Sub
J'essaie maintenant de faire le même travail avec une fonction, mais en vain. Qu'est qui cloche ( de Noël ) ? J'ai essayé en utilisant ... Areas ... mais je tourne en O !
Function Moy(ici As Range) As Double For Each c In ici If c.HasFormula = False And c.Value <> "" Then i = i + 1 s = s + c.Value End If Next c Moy = s / i End Function
Vous avez des suggestions ? Joyeuses Fêtes à tous et à toutes. Serge
J'ai oublié le cas où des cellules de la sélection contiennent du texte.
Correction :
Sub Moy_Space()
For Each c In Selection
If c.HasFormula = False And Application.IsNumber(c.Value) Then
i = i + 1
s = s + c.Value
End If
Next c
If i = 0 Then
MsgBox "Ne s'applique pas."
Else
MsgBox "Moyenne : " & s / i
End If
End Sub
Mais toujours incapable d'en faire une fonction personnalisée !
Serge
"Tatanka" <ramanujan@videotron.ca> a écrit dans le message de news: iet8b9$p2v$1@speranza.aioe.org...
Bonjour,
La macro suivante calcule la moyenne des valeurs
d'une sélection quelconque de cellules en ignorant
les cellules vides et les cellules contenant une formule :
Sub Moy_Space()
For Each c In Selection
If c.HasFormula = False And c.Value <> "" Then
i = i + 1
s = s + c.Value
End If
Next c
MsgBox "Moyenne : " & s / i
End Sub
J'essaie maintenant de faire le même travail avec une fonction,
mais en vain. Qu'est qui cloche ( de Noël ) ?
J'ai essayé en utilisant ... Areas ... mais je tourne en O !
Function Moy(ici As Range) As Double
For Each c In ici
If c.HasFormula = False And c.Value <> "" Then
i = i + 1
s = s + c.Value
End If
Next c
Moy = s / i
End Function
Vous avez des suggestions ?
Joyeuses Fêtes à tous et à toutes.
Serge
J'ai oublié le cas où des cellules de la sélection contiennent du texte. Correction :
Sub Moy_Space() For Each c In Selection If c.HasFormula = False And Application.IsNumber(c.Value) Then i = i + 1 s = s + c.Value End If Next c If i = 0 Then MsgBox "Ne s'applique pas." Else MsgBox "Moyenne : " & s / i End If End Sub
Mais toujours incapable d'en faire une fonction personnalisée !
Serge
"Tatanka" a écrit dans le message de news: iet8b9$p2v$
Bonjour,
La macro suivante calcule la moyenne des valeurs d'une sélection quelconque de cellules en ignorant les cellules vides et les cellules contenant une formule :
Sub Moy_Space() For Each c In Selection If c.HasFormula = False And c.Value <> "" Then i = i + 1 s = s + c.Value End If Next c MsgBox "Moyenne : " & s / i End Sub
J'essaie maintenant de faire le même travail avec une fonction, mais en vain. Qu'est qui cloche ( de Noël ) ? J'ai essayé en utilisant ... Areas ... mais je tourne en O !
Function Moy(ici As Range) As Double For Each c In ici If c.HasFormula = False And c.Value <> "" Then i = i + 1 s = s + c.Value End If Next c Moy = s / i End Function
Vous avez des suggestions ? Joyeuses Fêtes à tous et à toutes. Serge
Tatanka
Si A1 est vide, vraiment vide, alors :
IsNumeric([A1]) renvoie VRAI et Application.IsNumber([A1]) renvoie FAUX
Numérique mais pas un nombre :-)
Serge
Si A1 est vide, vraiment vide, alors :
IsNumeric([A1]) renvoie VRAI
et
Application.IsNumber([A1]) renvoie FAUX
IsNumeric([A1]) renvoie VRAI et Application.IsNumber([A1]) renvoie FAUX
Numérique mais pas un nombre :-)
Serge
Tatanka
Bonjour Isabelle,
Si plage discontinue : #VALEUR!
Serge
"isabelle" a écrit dans le message de news: iet9qu$sfl$
salut serge,
pas de tintement de cloche par chez nous, c'est quoi, un résultat faux ou un message d'erreur ?
isabelle
Le 2010-12-22 11:18, Tatanka a écrit :
Sub Moy_Space() For Each c In Selection If c.HasFormula = False And c.Value<> "" Then i = i + 1 s = s + c.Value End If Next c MsgBox "Moyenne : "& s / i End Sub
Bonjour Isabelle,
Si plage discontinue : #VALEUR!
Serge
"isabelle" <i@v.org> a écrit dans le message de news: iet9qu$sfl$1@speranza.aioe.org...
salut serge,
pas de tintement de cloche par chez nous,
c'est quoi, un résultat faux ou un message d'erreur ?
isabelle
Le 2010-12-22 11:18, Tatanka a écrit :
Sub Moy_Space()
For Each c In Selection
If c.HasFormula = False And c.Value<> "" Then
i = i + 1
s = s + c.Value
End If
Next c
MsgBox "Moyenne : "& s / i
End Sub
"isabelle" a écrit dans le message de news: iet9qu$sfl$
salut serge,
pas de tintement de cloche par chez nous, c'est quoi, un résultat faux ou un message d'erreur ?
isabelle
Le 2010-12-22 11:18, Tatanka a écrit :
Sub Moy_Space() For Each c In Selection If c.HasFormula = False And c.Value<> "" Then i = i + 1 s = s + c.Value End If Next c MsgBox "Moyenne : "& s / i End Sub
michdenis
Bonjour,
C'est bien connu, il y a des différences entre les fonctions écrites pour le VBA et cellules pour la feuille de calcul. C'est quasiment inévitable puisque c'est des équipes de programmeurs différents qui les ont pondus !
Selon le mathématicien, est-ce que ceci est numérique ?
Msgbox IsNumeric("($1,23$)")
MichD -------------------------------------------- "Tatanka" a écrit dans le message de groupe de discussion : ietdbg$5am$
Si A1 est vide, vraiment vide, alors :
IsNumeric([A1]) renvoie VRAI et Application.IsNumber([A1]) renvoie FAUX
Numérique mais pas un nombre :-)
Serge
Bonjour,
C'est bien connu, il y a des différences entre les fonctions
écrites pour le VBA et cellules pour la feuille de calcul. C'est
quasiment inévitable puisque c'est des équipes de programmeurs
différents qui les ont pondus !
Selon le mathématicien, est-ce que ceci est numérique ?
Msgbox IsNumeric("($1,23$)")
MichD
--------------------------------------------
"Tatanka" a écrit dans le message de groupe de discussion : ietdbg$5am$1@speranza.aioe.org...
Si A1 est vide, vraiment vide, alors :
IsNumeric([A1]) renvoie VRAI
et
Application.IsNumber([A1]) renvoie FAUX
C'est bien connu, il y a des différences entre les fonctions écrites pour le VBA et cellules pour la feuille de calcul. C'est quasiment inévitable puisque c'est des équipes de programmeurs différents qui les ont pondus !
Selon le mathématicien, est-ce que ceci est numérique ?
Msgbox IsNumeric("($1,23$)")
MichD -------------------------------------------- "Tatanka" a écrit dans le message de groupe de discussion : ietdbg$5am$
Si A1 est vide, vraiment vide, alors :
IsNumeric([A1]) renvoie VRAI et Application.IsNumber([A1]) renvoie FAUX
Numérique mais pas un nombre :-)
Serge
michdenis
Bonjour Serge,
Et ceci ne fonctionne pas ?
Comme l'expression "Selection" fait référence à tout objet sélectionné dans la feuille de calcul (pas seulement des cellules), il est très souvent utilisé par l'enregistreur de macros d'Excel, mais autrement, son utilisation n'est pas très judicieuse !
'---------------------------------- Sub Moy_Space() Dim C As Range If TypeName(Selection) = "Range" Then For Each c In Selection.SpecialCells(xlCellTypeConstants, 1) i = i + 1 s = s + c Next c MsgBox "Moyenne : " & s / i End If End Sub '----------------------------------
MichD -------------------------------------------- "Tatanka" a écrit dans le message de groupe de discussion : iet8b9$p2v$
Bonjour,
La macro suivante calcule la moyenne des valeurs d'une sélection quelconque de cellules en ignorant les cellules vides et les cellules contenant une formule :
Sub Moy_Space() For Each c In Selection If c.HasFormula = False And c.Value <> "" Then i = i + 1 s = s + c.Value End If Next c MsgBox "Moyenne : " & s / i End Sub
J'essaie maintenant de faire le même travail avec une fonction, mais en vain. Qu'est qui cloche ( de Noël ) ? J'ai essayé en utilisant ... Areas ... mais je tourne en O !
Function Moy(ici As Range) As Double For Each c In ici If c.HasFormula = False And c.Value <> "" Then i = i + 1 s = s + c.Value End If Next c Moy = s / i End Function
Vous avez des suggestions ? Joyeuses Fêtes à tous et à toutes. Serge
Bonjour Serge,
Et ceci ne fonctionne pas ?
Comme l'expression "Selection" fait référence à tout
objet sélectionné dans la feuille de calcul (pas seulement
des cellules), il est très souvent utilisé par l'enregistreur de macros
d'Excel, mais autrement, son utilisation n'est pas très judicieuse !
'----------------------------------
Sub Moy_Space()
Dim C As Range
If TypeName(Selection) = "Range" Then
For Each c In Selection.SpecialCells(xlCellTypeConstants, 1)
i = i + 1
s = s + c
Next c
MsgBox "Moyenne : " & s / i
End If
End Sub
'----------------------------------
MichD
--------------------------------------------
"Tatanka" a écrit dans le message de groupe de discussion : iet8b9$p2v$1@speranza.aioe.org...
Bonjour,
La macro suivante calcule la moyenne des valeurs
d'une sélection quelconque de cellules en ignorant
les cellules vides et les cellules contenant une formule :
Sub Moy_Space()
For Each c In Selection
If c.HasFormula = False And c.Value <> "" Then
i = i + 1
s = s + c.Value
End If
Next c
MsgBox "Moyenne : " & s / i
End Sub
J'essaie maintenant de faire le même travail avec une fonction,
mais en vain. Qu'est qui cloche ( de Noël ) ?
J'ai essayé en utilisant ... Areas ... mais je tourne en O !
Function Moy(ici As Range) As Double
For Each c In ici
If c.HasFormula = False And c.Value <> "" Then
i = i + 1
s = s + c.Value
End If
Next c
Moy = s / i
End Function
Vous avez des suggestions ?
Joyeuses Fêtes à tous et à toutes.
Serge
Comme l'expression "Selection" fait référence à tout objet sélectionné dans la feuille de calcul (pas seulement des cellules), il est très souvent utilisé par l'enregistreur de macros d'Excel, mais autrement, son utilisation n'est pas très judicieuse !
'---------------------------------- Sub Moy_Space() Dim C As Range If TypeName(Selection) = "Range" Then For Each c In Selection.SpecialCells(xlCellTypeConstants, 1) i = i + 1 s = s + c Next c MsgBox "Moyenne : " & s / i End If End Sub '----------------------------------
MichD -------------------------------------------- "Tatanka" a écrit dans le message de groupe de discussion : iet8b9$p2v$
Bonjour,
La macro suivante calcule la moyenne des valeurs d'une sélection quelconque de cellules en ignorant les cellules vides et les cellules contenant une formule :
Sub Moy_Space() For Each c In Selection If c.HasFormula = False And c.Value <> "" Then i = i + 1 s = s + c.Value End If Next c MsgBox "Moyenne : " & s / i End Sub
J'essaie maintenant de faire le même travail avec une fonction, mais en vain. Qu'est qui cloche ( de Noël ) ? J'ai essayé en utilisant ... Areas ... mais je tourne en O !
Function Moy(ici As Range) As Double For Each c In ici If c.HasFormula = False And c.Value <> "" Then i = i + 1 s = s + c.Value End If Next c Moy = s / i End Function
Vous avez des suggestions ? Joyeuses Fêtes à tous et à toutes. Serge
isabelle
pour les plages discontinues ou non ça va bien avec ParamArray,
Function Moy(ByVal FirstRange As Range, ParamArray OtherRanges()) As Double For Each c In FirstRange If c.HasFormula = False And Application.IsNumber(c.Value) Then i = i + 1 s = s + c.Value End If Next c
For y = LBound(OtherRanges) To UBound(OtherRanges) For Each c In OtherRanges(y) If c.HasFormula = False And Application.IsNumber(c.Value) Then i = i + 1 s = s + c.Value End If Next c Next y
If i = 0 Then Moy = 0 Else Moy = s / i End If End Function
passe de bonne fête, bisou* isabelle
Le 2010-12-22 12:21, Tatanka a écrit :
Sub Moy_Space() For Each c In Selection If c.HasFormula = False And Application.IsNumber(c.Value) Then i = i + 1 s = s + c.Value End If Next c If i = 0 Then MsgBox "Ne s'applique pas." Else MsgBox "Moyenne : "& s / i End If End Sub
pour les plages discontinues ou non ça va bien avec ParamArray,
Function Moy(ByVal FirstRange As Range, ParamArray OtherRanges()) As Double
For Each c In FirstRange
If c.HasFormula = False And Application.IsNumber(c.Value) Then
i = i + 1
s = s + c.Value
End If
Next c
For y = LBound(OtherRanges) To UBound(OtherRanges)
For Each c In OtherRanges(y)
If c.HasFormula = False And Application.IsNumber(c.Value) Then
i = i + 1
s = s + c.Value
End If
Next c
Next y
If i = 0 Then
Moy = 0
Else
Moy = s / i
End If
End Function
passe de bonne fête,
bisou*
isabelle
Le 2010-12-22 12:21, Tatanka a écrit :
Sub Moy_Space()
For Each c In Selection
If c.HasFormula = False And Application.IsNumber(c.Value) Then
i = i + 1
s = s + c.Value
End If
Next c
If i = 0 Then
MsgBox "Ne s'applique pas."
Else
MsgBox "Moyenne : "& s / i
End If
End Sub
pour les plages discontinues ou non ça va bien avec ParamArray,
Function Moy(ByVal FirstRange As Range, ParamArray OtherRanges()) As Double For Each c In FirstRange If c.HasFormula = False And Application.IsNumber(c.Value) Then i = i + 1 s = s + c.Value End If Next c
For y = LBound(OtherRanges) To UBound(OtherRanges) For Each c In OtherRanges(y) If c.HasFormula = False And Application.IsNumber(c.Value) Then i = i + 1 s = s + c.Value End If Next c Next y
If i = 0 Then Moy = 0 Else Moy = s / i End If End Function
passe de bonne fête, bisou* isabelle
Le 2010-12-22 12:21, Tatanka a écrit :
Sub Moy_Space() For Each c In Selection If c.HasFormula = False And Application.IsNumber(c.Value) Then i = i + 1 s = s + c.Value End If Next c If i = 0 Then MsgBox "Ne s'applique pas." Else MsgBox "Moyenne : "& s / i End If End Sub
michdenis
Pour ceux qui désirent un peu d'explication pourquoi Msgbox IsNumeric("($1,23$)") retourne Vrai...
Les "programmeurs" ont considéré que la fonction devait tenir compte des parenthèses (les nombres négatifs dans certains formats de cellules) et du symbole monétaire qu'il soit placé au début ou à la fin de la séquence du nombre indiqué pour tenir compte des divers formats possibles.
Par exemple, une cellule pourrait contenir la valeur ($1.25) les parenthèses (valeur négative) et le signe $ étant un format de cellule.
En VBA, la propriété "Text" d'un "Range" retourne ceci : ($1.25) x = Range("A1").Text x = "($1.25)"
Et la fonction Msgbox isnumeric(x) retournerait Vrai on pourrait aussi écrire directement Msgbox isNumeric(Range("A1").text)
Par exemple contenant en dur ($1,25) s'affiche à gauche dans la cellule mais Msgbox isNumeric(Range("A1").Value) retourne Vrai Mais x = Application.IsNumber([A1]) retourne Faux Et pour cause, l'interface de calcul considère cette valeur comme du Texte (affichage à gauche) pourquoi, la fonction "IsNumber" devrait en faire autrement ?
Selon les paramètres régionaux, il y a bien sûr des nuances... Si je tape en dur dans une cellule (1,25$) , Excel applique le format monétaire à la cellule. Résultat, le contenu de la cellule est 1,25 et les parenthèses et le signe monétaire font désormais partie du format de cellule.
Voilà! selon ce que l'on veut faire et selon son application, la fonction IsNumeric() peut-être désarmante...Il faut être attentif!
C'était mes deux cents sur le sujet !
MichD -------------------------------------------- "michdenis" a écrit dans le message de groupe de discussion : ietfeh$b73$
Bonjour,
C'est bien connu, il y a des différences entre les fonctions écrites pour le VBA et cellules pour la feuille de calcul. C'est quasiment inévitable puisque c'est des équipes de programmeurs différents qui les ont pondus !
Selon le mathématicien, est-ce que ceci est numérique ?
Msgbox IsNumeric("($1,23$)")
MichD -------------------------------------------- "Tatanka" a écrit dans le message de groupe de discussion : ietdbg$5am$
Si A1 est vide, vraiment vide, alors :
IsNumeric([A1]) renvoie VRAI et Application.IsNumber([A1]) renvoie FAUX
Numérique mais pas un nombre :-)
Serge
Pour ceux qui désirent un peu d'explication pourquoi
Msgbox IsNumeric("($1,23$)") retourne Vrai...
Les "programmeurs" ont considéré que la fonction devait
tenir compte des parenthèses (les nombres négatifs dans
certains formats de cellules) et du symbole monétaire qu'il
soit placé au début ou à la fin de la séquence du nombre
indiqué pour tenir compte des divers formats possibles.
Par exemple, une cellule pourrait contenir la valeur ($1.25)
les parenthèses (valeur négative) et le signe $ étant un format
de cellule.
En VBA, la propriété "Text" d'un "Range" retourne ceci : ($1.25)
x = Range("A1").Text
x = "($1.25)"
Et la fonction Msgbox isnumeric(x) retournerait Vrai
on pourrait aussi écrire directement Msgbox isNumeric(Range("A1").text)
Par exemple contenant en dur ($1,25) s'affiche à gauche dans la cellule
mais Msgbox isNumeric(Range("A1").Value) retourne Vrai
Mais x = Application.IsNumber([A1]) retourne Faux
Et pour cause, l'interface de calcul considère cette valeur comme du Texte
(affichage à gauche) pourquoi, la fonction "IsNumber" devrait en faire autrement ?
Selon les paramètres régionaux, il y a bien sûr des nuances...
Si je tape en dur dans une cellule (1,25$) , Excel applique le
format monétaire à la cellule. Résultat, le contenu de la cellule
est 1,25 et les parenthèses et le signe monétaire font désormais
partie du format de cellule.
Voilà! selon ce que l'on veut faire et selon son application, la
fonction IsNumeric() peut-être désarmante...Il faut être attentif!
C'était mes deux cents sur le sujet !
MichD
--------------------------------------------
"michdenis" a écrit dans le message de groupe de discussion : ietfeh$b73$1@speranza.aioe.org...
Bonjour,
C'est bien connu, il y a des différences entre les fonctions
écrites pour le VBA et cellules pour la feuille de calcul. C'est
quasiment inévitable puisque c'est des équipes de programmeurs
différents qui les ont pondus !
Selon le mathématicien, est-ce que ceci est numérique ?
Msgbox IsNumeric("($1,23$)")
MichD
--------------------------------------------
"Tatanka" a écrit dans le message de groupe de discussion : ietdbg$5am$1@speranza.aioe.org...
Si A1 est vide, vraiment vide, alors :
IsNumeric([A1]) renvoie VRAI
et
Application.IsNumber([A1]) renvoie FAUX
Pour ceux qui désirent un peu d'explication pourquoi Msgbox IsNumeric("($1,23$)") retourne Vrai...
Les "programmeurs" ont considéré que la fonction devait tenir compte des parenthèses (les nombres négatifs dans certains formats de cellules) et du symbole monétaire qu'il soit placé au début ou à la fin de la séquence du nombre indiqué pour tenir compte des divers formats possibles.
Par exemple, une cellule pourrait contenir la valeur ($1.25) les parenthèses (valeur négative) et le signe $ étant un format de cellule.
En VBA, la propriété "Text" d'un "Range" retourne ceci : ($1.25) x = Range("A1").Text x = "($1.25)"
Et la fonction Msgbox isnumeric(x) retournerait Vrai on pourrait aussi écrire directement Msgbox isNumeric(Range("A1").text)
Par exemple contenant en dur ($1,25) s'affiche à gauche dans la cellule mais Msgbox isNumeric(Range("A1").Value) retourne Vrai Mais x = Application.IsNumber([A1]) retourne Faux Et pour cause, l'interface de calcul considère cette valeur comme du Texte (affichage à gauche) pourquoi, la fonction "IsNumber" devrait en faire autrement ?
Selon les paramètres régionaux, il y a bien sûr des nuances... Si je tape en dur dans une cellule (1,25$) , Excel applique le format monétaire à la cellule. Résultat, le contenu de la cellule est 1,25 et les parenthèses et le signe monétaire font désormais partie du format de cellule.
Voilà! selon ce que l'on veut faire et selon son application, la fonction IsNumeric() peut-être désarmante...Il faut être attentif!
C'était mes deux cents sur le sujet !
MichD -------------------------------------------- "michdenis" a écrit dans le message de groupe de discussion : ietfeh$b73$
Bonjour,
C'est bien connu, il y a des différences entre les fonctions écrites pour le VBA et cellules pour la feuille de calcul. C'est quasiment inévitable puisque c'est des équipes de programmeurs différents qui les ont pondus !
Selon le mathématicien, est-ce que ceci est numérique ?
Msgbox IsNumeric("($1,23$)")
MichD -------------------------------------------- "Tatanka" a écrit dans le message de groupe de discussion : ietdbg$5am$
Si A1 est vide, vraiment vide, alors :
IsNumeric([A1]) renvoie VRAI et Application.IsNumber([A1]) renvoie FAUX
Numérique mais pas un nombre :-)
Serge
Tatanka
Merci Denis pour ce beau discours ! En tous cas : IsExplicit("michdenis") renvoie VRAI :-)
Bon réveillon, Hunkesnit
"michdenis" a écrit dans le message de news: ievlo8$2co$
Pour ceux qui désirent un peu d'explication pourquoi Msgbox IsNumeric("($1,23$)") retourne Vrai...
Les "programmeurs" ont considéré que la fonction devait tenir compte des parenthèses (les nombres négatifs dans certains formats de cellules) et du symbole monétaire qu'il soit placé au début ou à la fin de la séquence du nombre indiqué pour tenir compte des divers formats possibles.
Par exemple, une cellule pourrait contenir la valeur ($1.25) les parenthèses (valeur négative) et le signe $ étant un format de cellule.
En VBA, la propriété "Text" d'un "Range" retourne ceci : ($1.25) x = Range("A1").Text x = "($1.25)"
Et la fonction Msgbox isnumeric(x) retournerait Vrai on pourrait aussi écrire directement Msgbox isNumeric(Range("A1").text)
Par exemple contenant en dur ($1,25) s'affiche à gauche dans la cellule mais Msgbox isNumeric(Range("A1").Value) retourne Vrai Mais x = Application.IsNumber([A1]) retourne Faux Et pour cause, l'interface de calcul considère cette valeur comme du Texte (affichage à gauche) pourquoi, la fonction "IsNumber" devrait en faire autrement ?
Selon les paramètres régionaux, il y a bien sûr des nuances... Si je tape en dur dans une cellule (1,25$) , Excel applique le format monétaire à la cellule. Résultat, le contenu de la cellule est 1,25 et les parenthèses et le signe monétaire font désormais partie du format de cellule.
Voilà! selon ce que l'on veut faire et selon son application, la fonction IsNumeric() peut-être désarmante...Il faut être attentif!
C'était mes deux cents sur le sujet !
MichD -------------------------------------------- "michdenis" a écrit dans le message de groupe de discussion : ietfeh$b73$
Bonjour,
C'est bien connu, il y a des différences entre les fonctions écrites pour le VBA et cellules pour la feuille de calcul. C'est quasiment inévitable puisque c'est des équipes de programmeurs différents qui les ont pondus !
Selon le mathématicien, est-ce que ceci est numérique ?
Msgbox IsNumeric("($1,23$)")
MichD -------------------------------------------- "Tatanka" a écrit dans le message de groupe de discussion : ietdbg$5am$
Si A1 est vide, vraiment vide, alors :
IsNumeric([A1]) renvoie VRAI et Application.IsNumber([A1]) renvoie FAUX
Numérique mais pas un nombre :-)
Serge
Merci Denis pour ce beau discours !
En tous cas :
IsExplicit("michdenis") renvoie VRAI :-)
Bon réveillon,
Hunkesnit
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news: ievlo8$2co$1@speranza.aioe.org...
Pour ceux qui désirent un peu d'explication pourquoi
Msgbox IsNumeric("($1,23$)") retourne Vrai...
Les "programmeurs" ont considéré que la fonction devait
tenir compte des parenthèses (les nombres négatifs dans
certains formats de cellules) et du symbole monétaire qu'il
soit placé au début ou à la fin de la séquence du nombre
indiqué pour tenir compte des divers formats possibles.
Par exemple, une cellule pourrait contenir la valeur ($1.25)
les parenthèses (valeur négative) et le signe $ étant un format
de cellule.
En VBA, la propriété "Text" d'un "Range" retourne ceci : ($1.25)
x = Range("A1").Text
x = "($1.25)"
Et la fonction Msgbox isnumeric(x) retournerait Vrai
on pourrait aussi écrire directement Msgbox isNumeric(Range("A1").text)
Par exemple contenant en dur ($1,25) s'affiche à gauche dans la cellule
mais Msgbox isNumeric(Range("A1").Value) retourne Vrai
Mais x = Application.IsNumber([A1]) retourne Faux
Et pour cause, l'interface de calcul considère cette valeur comme du Texte
(affichage à gauche) pourquoi, la fonction "IsNumber" devrait en faire autrement ?
Selon les paramètres régionaux, il y a bien sûr des nuances...
Si je tape en dur dans une cellule (1,25$) , Excel applique le
format monétaire à la cellule. Résultat, le contenu de la cellule
est 1,25 et les parenthèses et le signe monétaire font désormais
partie du format de cellule.
Voilà! selon ce que l'on veut faire et selon son application, la
fonction IsNumeric() peut-être désarmante...Il faut être attentif!
C'était mes deux cents sur le sujet !
MichD
--------------------------------------------
"michdenis" a écrit dans le message de groupe de discussion : ietfeh$b73$1@speranza.aioe.org...
Bonjour,
C'est bien connu, il y a des différences entre les fonctions
écrites pour le VBA et cellules pour la feuille de calcul. C'est
quasiment inévitable puisque c'est des équipes de programmeurs
différents qui les ont pondus !
Selon le mathématicien, est-ce que ceci est numérique ?
Msgbox IsNumeric("($1,23$)")
MichD
--------------------------------------------
"Tatanka" a écrit dans le message de groupe de discussion : ietdbg$5am$1@speranza.aioe.org...
Si A1 est vide, vraiment vide, alors :
IsNumeric([A1]) renvoie VRAI
et
Application.IsNumber([A1]) renvoie FAUX
Merci Denis pour ce beau discours ! En tous cas : IsExplicit("michdenis") renvoie VRAI :-)
Bon réveillon, Hunkesnit
"michdenis" a écrit dans le message de news: ievlo8$2co$
Pour ceux qui désirent un peu d'explication pourquoi Msgbox IsNumeric("($1,23$)") retourne Vrai...
Les "programmeurs" ont considéré que la fonction devait tenir compte des parenthèses (les nombres négatifs dans certains formats de cellules) et du symbole monétaire qu'il soit placé au début ou à la fin de la séquence du nombre indiqué pour tenir compte des divers formats possibles.
Par exemple, une cellule pourrait contenir la valeur ($1.25) les parenthèses (valeur négative) et le signe $ étant un format de cellule.
En VBA, la propriété "Text" d'un "Range" retourne ceci : ($1.25) x = Range("A1").Text x = "($1.25)"
Et la fonction Msgbox isnumeric(x) retournerait Vrai on pourrait aussi écrire directement Msgbox isNumeric(Range("A1").text)
Par exemple contenant en dur ($1,25) s'affiche à gauche dans la cellule mais Msgbox isNumeric(Range("A1").Value) retourne Vrai Mais x = Application.IsNumber([A1]) retourne Faux Et pour cause, l'interface de calcul considère cette valeur comme du Texte (affichage à gauche) pourquoi, la fonction "IsNumber" devrait en faire autrement ?
Selon les paramètres régionaux, il y a bien sûr des nuances... Si je tape en dur dans une cellule (1,25$) , Excel applique le format monétaire à la cellule. Résultat, le contenu de la cellule est 1,25 et les parenthèses et le signe monétaire font désormais partie du format de cellule.
Voilà! selon ce que l'on veut faire et selon son application, la fonction IsNumeric() peut-être désarmante...Il faut être attentif!
C'était mes deux cents sur le sujet !
MichD -------------------------------------------- "michdenis" a écrit dans le message de groupe de discussion : ietfeh$b73$
Bonjour,
C'est bien connu, il y a des différences entre les fonctions écrites pour le VBA et cellules pour la feuille de calcul. C'est quasiment inévitable puisque c'est des équipes de programmeurs différents qui les ont pondus !
Selon le mathématicien, est-ce que ceci est numérique ?
Msgbox IsNumeric("($1,23$)")
MichD -------------------------------------------- "Tatanka" a écrit dans le message de groupe de discussion : ietdbg$5am$
Si A1 est vide, vraiment vide, alors :
IsNumeric([A1]) renvoie VRAI et Application.IsNumber([A1]) renvoie FAUX