OVH Cloud OVH Cloud

Nombre d'entier dans une formule

4 réponses
Avatar
Christine Imbeault
Bonjour à tous,
Excel 2000

Formule = "=2+3+4"

Existe-t-il une fonction qui me permettre de connaître le nombre de valeur
dans cette formule? Normalement, la réponse devrait me donner (3) entiers.

Merci
Christine

4 réponses

Avatar
isabelle
bonjour Christine,

c'est possible avec une fonction personnalisé,

Function CompteEntiers(formule As Range)
For i = 1 To Len(formule.Formula)
If Not IsNumeric(Mid(formule.Formula, i, 1)) Then _
CompteEntiers = CompteEntiers + 1
Next
End Function

isabelle


Bonjour à tous,
Excel 2000

Formule = "=2+3+4"

Existe-t-il une fonction qui me permettre de connaître le nombre de v aleur
dans cette formule? Normalement, la réponse devrait me donner (3) en tiers.

Merci
Christine


Avatar
isabelle
oui, mais rien n'empêche d'y ajouter des conditions pour éliminer ces
inconvénients ;-)

isabelle


Bonsoir Isabelle,

Cela ne marche que dans les cas les plus simples :

Si on insère des espaces, pour améliorer la lisibilité, chaque es pace est
considéré comme un entier :

Si la cellule testée contient :

 + 5

la fonction renvoie 4 ;-))

Également des problèmes avec les valeurs non entières ; avec cett e formule :

+5,8
(la virgule étant le séparateur décimal)

la fonction renvoie 3.

Ce genre d'évaluation est souvent + complexe que ce que laisse croire la 1ère impression ;-(((


bonjour Christine,

c'est possible avec une fonction personnalisé,

Function CompteEntiers(formule As Range)
For i = 1 To Len(formule.Formula)
If Not IsNumeric(Mid(formule.Formula, i, 1)) Then _
CompteEntiers = CompteEntiers + 1
Next
End Function

isabelle


Bonjour à tous,
Excel 2000

Formule = "=2+3+4"

Existe-t-il une fonction qui me permettre de connaître le nombre de valeur
dans cette formule? Normalement, la réponse devrait me donner (3 ) entiers.

Merci
Christine



--
Cordialement,

Michel Gaboly
http://www.gaboly.com




Avatar
Frédéric Sigonneau
Bonsoir,

Puisque tu utilises Excel 2000 la fonction Split te tend les bras. Avec le
renfort de la fonction MultiSubstitute de Daniel M. (dont il oublie rarement de
rappeler qu'il en fait une promo intensive :), tu peux construire une petite
fonction perso de ce style :

'===================== Function NbNombres(S)
Dim tmp$
If Left(S, 1) = "=" Then tmp = Mid(S, 2) Else tmp = S
tmp = MultiSubstitute(tmp, "+-/*", "____")
NbNombres = UBound(Split(tmp, "_")) + 1
End Function

Function MultiSubstitute(InputStr As String, _
ToBeReplacedChars As String, ByChars As String) As String

Dim S As String, i As Integer
Dim anOffset As Integer, len_Input As Integer, len_ByChars As Integer

len_Input = Len(InputStr)
len_ByChars = Len(ByChars)
For i = 1 To len_Input
S = Mid(InputStr, i, 1)
anOffset = InStr(ToBeReplacedChars, S)
If anOffset > 0 Then
If anOffset <= len_ByChars Then
MultiSubstitute = MultiSubstitute & _
Mid(ByChars, anOffset, 1)
End If
Else
MultiSubstitute = MultiSubstitute & S
End If
Next

End Function
'=====================
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour à tous,
Excel 2000

Formule = "=2+3+4"

Existe-t-il une fonction qui me permettre de connaître le nombre de valeur
dans cette formule? Normalement, la réponse devrait me donner (3) entiers.

Merci
Christine


Avatar
AV
Salut Frédéric,

Il me semble que la recherche demandée est à faire dans une formule contenue
dans une cellule donc
If Left(S, 1) = "=" Then tmp = Mid(S, 2) Else tmp = S
pourrait être modifié en :

If Left(S.Formula, 1) = "=" Then tmp = Mid(S.Formula, 2) Else tmp = S.Formula

mais.... comme l'intulé de la question est "nombre d'entiers dans une formule",
la solution que tu proposes comptabilise aussi les nbres décimaux donc ça
devrait pas faire.... sous réserve que la possibilité de présence de nbres
décimaux existe dans la formule (c'est au questionneur de dire..!)

Par ailleurs, la présence d'un nom défini, renvoie un résultat erroné :
Ex : =2+fifi+3+4 résultat attendu : 3 - résultat renvoyé : 4

AV juste pour faire avancer le smilblick

"Frédéric Sigonneau" a écrit dans le message
news:
Bonsoir,

Puisque tu utilises Excel 2000 la fonction Split te tend les bras. Avec le
renfort de la fonction MultiSubstitute de Daniel M. (dont il oublie rarement
de

rappeler qu'il en fait une promo intensive :), tu peux construire une petite
fonction perso de ce style :

'===================== > Function NbNombres(S)
Dim tmp$
If Left(S, 1) = "=" Then tmp = Mid(S, 2) Else tmp = S
tmp = MultiSubstitute(tmp, "+-/*", "____")
NbNombres = UBound(Split(tmp, "_")) + 1
End Function

Function MultiSubstitute(InputStr As String, _
ToBeReplacedChars As String, ByChars As String) As String

Dim S As String, i As Integer
Dim anOffset As Integer, len_Input As Integer, len_ByChars As Integer

len_Input = Len(InputStr)
len_ByChars = Len(ByChars)
For i = 1 To len_Input
S = Mid(InputStr, i, 1)
anOffset = InStr(ToBeReplacedChars, S)
If anOffset > 0 Then
If anOffset <= len_ByChars Then
MultiSubstitute = MultiSubstitute & _
Mid(ByChars, anOffset, 1)
End If
Else
MultiSubstitute = MultiSubstitute & S
End If
Next

End Function
'===================== >
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour à tous,
Excel 2000

Formule = "=2+3+4"

Existe-t-il une fonction qui me permettre de connaître le nombre de valeur
dans cette formule? Normalement, la réponse devrait me donner (3) entiers.

Merci
Christine