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

somme de fonctions

10 réponses
Avatar
Loutox
Salut à tous,

soit les cellules a1=1, a2=2 et a3=3

somme(a1:a3) = 1+2+3

si, au lieu de calculer la somme des valeurs, on veut calculer la somme
d'une fonction des valeurs
(par exemple soit une fonction f(x) ramenant un nombre et on voudrait
calculer f(a1) + f(a2) + f(a3) )

savez-vous s'il existe une syntaxe excel permettant de faire cela sans
passer par du code ?

(j'ai bien essayé somme( f(a1) : f(a2) ), mais pas de chance ça ne marche
pas)

esperant avoir été compréhensible,
merci et à bientot.
loutox

10 réponses

Avatar
Nicolas B.
Salut Loutox,

Cette formule devrait fonctionner :
=SOMMEPROD(f(A1:A3))
Ou encore : =SOMME(f(A1:A3)) à valider par CTRL + MAJ + ENTREE

Par exemple, si f(x) = 1/x :
=SOMMEPROD(1/A1:A3)
={SOMME(1/A1:A3)}


Bonne chance
--
Nicolas B.

Loutox wrote:
Salut à tous,

soit les cellules a1=1, a2=2 et a3=3

somme(a1:a3) = 1+2+3

si, au lieu de calculer la somme des valeurs, on veut calculer la
somme d'une fonction des valeurs
(par exemple soit une fonction f(x) ramenant un nombre et on voudrait
calculer f(a1) + f(a2) + f(a3) )

savez-vous s'il existe une syntaxe excel permettant de faire cela sans
passer par du code ?

(j'ai bien essayé somme( f(a1) : f(a2) ), mais pas de chance ça ne
marche pas)

esperant avoir été compréhensible,
merci et à bientot.
loutox


Avatar
Daniel.M
Salut Loutox,

Si ta fonction f() est une fonction personnalisée VBA, f() doit retourner un
tableau (très important).

Contrairement aux fonctions Excel standards, les fonctions personnalisées
VBA ne peuvent devenir 'matricielles' par magie: elles doivent être
programmées explicitement pour recevoir des matrices (plages ou matrices
réelles) et retourner des matrices également.

Faudrait voir f() pour pouvoir t'aider davantage.

Salutations,

Daniel M.

"Loutox" wrote in message
news:3f65f66e$0$27026$
Salut à tous,

soit les cellules a1=1, a2=2 et a3=3

somme(a1:a3) = 1+2+3

si, au lieu de calculer la somme des valeurs, on veut calculer la somme
d'une fonction des valeurs
(par exemple soit une fonction f(x) ramenant un nombre et on voudrait
calculer f(a1) + f(a2) + f(a3) )

savez-vous s'il existe une syntaxe excel permettant de faire cela sans
passer par du code ?

(j'ai bien essayé somme( f(a1) : f(a2) ), mais pas de chance ça ne marche
pas)

esperant avoir été compréhensible,
merci et à bientot.
loutox




Avatar
garnote
Salut Loutox,

Autre manière de faire :
Je t'ai préparé un petit document qui
te permet d'obtenir ta somme automatiquement
à partir d'une fonction écrite dans une cellule.
Par exemple, si tu entres x^2-1 dans une cellule,
tu obtiens la somme des f(x) = x^2-1.
Que faut-il enlever de ton adresse pour te
faire parvenir ce document ?

Serge




"Loutox" a écrit dans le message de news:
3f65f66e$0$27026$
Salut à tous,

soit les cellules a1=1, a2=2 et a3=3

somme(a1:a3) = 1+2+3

si, au lieu de calculer la somme des valeurs, on veut calculer la somme
d'une fonction des valeurs
(par exemple soit une fonction f(x) ramenant un nombre et on voudrait
calculer f(a1) + f(a2) + f(a3) )

savez-vous s'il existe une syntaxe excel permettant de faire cela sans
passer par du code ?

(j'ai bien essayé somme( f(a1) : f(a2) ), mais pas de chance ça ne marche
pas)

esperant avoir été compréhensible,
merci et à bientot.
loutox




Avatar
Loutox
merci pour cet envoi qui m'a appris une technique differente du vba pour
créer des fonctions,
neammoins j'ai l'impression que cela ne correspond pas à mon besoin que je
reformule ci-dessous :

si par exemple j'ai a1=1 ; a2=2 et a3=3

soit la fonction personnalisée toto(x)=2x+1
et titi (x)= 4x-7

je cherche à obtenir directement en a4 toto(a1) + toto(a2) + toto(a3)
et aussi à obtenir en a5 toto(a1) titi(a1) + titi(a2) + titi(a3)


tout ceci sans passer par des colonnes intermediaires affichant le resultat
des fonctions pour chaque cellule.


"garnote" a écrit dans le message de news:
w4n9b.15170$
Salut Loutox,

Autre manière de faire :
Je t'ai préparé un petit document qui
te permet d'obtenir ta somme automatiquement
à partir d'une fonction écrite dans une cellule.
Par exemple, si tu entres x^2-1 dans une cellule,
tu obtiens la somme des f(x) = x^2-1.
Que faut-il enlever de ton adresse pour te
faire parvenir ce document ?

Serge




"Loutox" a écrit dans le message de news:
3f65f66e$0$27026$
Salut à tous,

soit les cellules a1=1, a2=2 et a3=3

somme(a1:a3) = 1+2+3

si, au lieu de calculer la somme des valeurs, on veut calculer la somme
d'une fonction des valeurs
(par exemple soit une fonction f(x) ramenant un nombre et on voudrait
calculer f(a1) + f(a2) + f(a3) )

savez-vous s'il existe une syntaxe excel permettant de faire cela sans
passer par du code ?

(j'ai bien essayé somme( f(a1) : f(a2) ), mais pas de chance ça ne
marche


pas)

esperant avoir été compréhensible,
merci et à bientot.
loutox








Avatar
Loutox
Contrairement aux fonctions Excel standards, les fonctions personnalisées
VBA ne peuvent devenir 'matricielles' par magie: elles doivent être
programmées explicitement pour recevoir des matrices (plages ou matrices
réelles) et retourner des matrices également.

Faudrait voir f() pour pouvoir t'aider davantage.



Salut Daniel,
merci à toi et Nicolas pour vos réponses instructives
voici plus d'infos sur f(x) , la fonction est :

Function titi(i As Integer, j As String) As Integer
If j = "x" Then
titi = 2 * i
ElseIf j = "y" Then
titi = 3 * i
ElseIf j = "z" Then
titi = 4 * i
Else
titi = 0
End If
End Function

où i est la valeur de la cellule de la colonne B et j est la valeur de la
cellule de la colonne A (meme ligne)

donc dans chaque cellule de la colonne B j'ai une valeur fixe
pour chacune de ces cellules , la valeur titi serait donnée par une formule
du type
=titi(B1,$A1)
et ce que je cherche à faire est à obtenir en bas de la colonne B la somme
de tous les titi(Bx,$Ax), sans passer par une colonne qui afficherait ces
titi(Bx,$Ax).

merci de t'etre penché sur le probleme
Lou

Avatar
Daniel.M
Salut,

Je suis maintenant convaincu qu'il est possible pour toi d'obtenir le
résultat souhaité sans passé par une fonction VBA personnalisée.
Malheureusement, il faudrait un exemple avec des nombres précis dans A et
les résultats attendus (dans B?). Je n'ai pas vraiment compris l'exemple
donné à garnote. :-(

Mais ceci étant dit, la formule suivante (ou quelquechose de connexe)
pourrait faire l'affaire:
=SOMMEPROD((A1:A3={"x"."y"."z"}) * {2.3.4})*i

'i étant le 1er argument que tu passais à titi().

Ici, tu auras probablement à changer les points pour ton séparateur
matricielle horizontal (qui dépend de ta config) pour "" ou "," .

Mais si tu persistes à utiliser ta fonction VBA, tu te définis une nouvelle
fonction titi2(), voir ci-dessous, et tu l'invoques ainsi en B1:
=SOMME(titi2(3;A$1:A1))

Function Titi2(i As Integer, j As Range) As Variant
Dim Res As Variant, C As Range, cnt As Long

ReDim Res(1 To j.Rows.Count)
cnt = 1

For Each C In j
If C = "x" Then
Res(cnt) = 2 * i
ElseIf C = "y" Then
Res(cnt) = 3 * i
ElseIf C = "z" Then
Res(cnt) = 4 * i
Else
Res(cnt) = 0
End If
cnt = cnt + 1
Next C
Titi2 = Application.Transpose(Res)
End Function

Salutations,

Daniel M.


"Loutox" wrote in message
news:3f66d6c4$0$20172$
Contrairement aux fonctions Excel standards, les fonctions
personnalisées


VBA ne peuvent devenir 'matricielles' par magie: elles doivent être
programmées explicitement pour recevoir des matrices (plages ou matrices
réelles) et retourner des matrices également.

Faudrait voir f() pour pouvoir t'aider davantage.



Salut Daniel,
merci à toi et Nicolas pour vos réponses instructives
voici plus d'infos sur f(x) , la fonction est :

Function titi(i As Integer, j As String) As Integer
If j = "x" Then
titi = 2 * i
ElseIf j = "y" Then
titi = 3 * i
ElseIf j = "z" Then
titi = 4 * i
Else
titi = 0
End If
End Function

où i est la valeur de la cellule de la colonne B et j est la valeur de la
cellule de la colonne A (meme ligne)

donc dans chaque cellule de la colonne B j'ai une valeur fixe
pour chacune de ces cellules , la valeur titi serait donnée par une
formule

du type
=titi(B1,$A1)
et ce que je cherche à faire est à obtenir en bas de la colonne B la somme
de tous les titi(Bx,$Ax), sans passer par une colonne qui afficherait ces
titi(Bx,$Ax).

merci de t'etre penché sur le probleme
Lou





Avatar
garnote
Salut Loutox,

Je crois que j'ai !

Function toto(x As Double)
toto = 2 * x + 1
End Function

Function titi(x As Double)
titi = 4 * x - 7
End Function

En A4 : =toto(A1)+toto(A2)+toto(A3)
En A5 : =titi(A1)+titi(A2)+titi(A3)

Erre-je ?

Serge


"Loutox" a écrit dans le message de news:
3f66d07c$0$20185$
merci pour cet envoi qui m'a appris une technique differente du vba pour
créer des fonctions,
neammoins j'ai l'impression que cela ne correspond pas à mon besoin que
je

reformule ci-dessous :

si par exemple j'ai a1=1 ; a2=2 et a3=3

soit la fonction personnalisée toto(x)=2x+1
et titi (x)= 4x-7

je cherche à obtenir directement en a4 toto(a1) + toto(a2) + toto(a3)
et aussi à obtenir en a5 toto(a1) titi(a1) + titi(a2) + titi(a3)


tout ceci sans passer par des colonnes intermediaires affichant le
resultat

des fonctions pour chaque cellule.


"garnote" a écrit dans le message de news:
w4n9b.15170$
Salut Loutox,

Autre manière de faire :
Je t'ai préparé un petit document qui
te permet d'obtenir ta somme automatiquement
à partir d'une fonction écrite dans une cellule.
Par exemple, si tu entres x^2-1 dans une cellule,
tu obtiens la somme des f(x) = x^2-1.
Que faut-il enlever de ton adresse pour te
faire parvenir ce document ?

Serge




"Loutox" a écrit dans le message de
news:


3f65f66e$0$27026$
Salut à tous,

soit les cellules a1=1, a2=2 et a3=3

somme(a1:a3) = 1+2+3

si, au lieu de calculer la somme des valeurs, on veut calculer la
somme



d'une fonction des valeurs
(par exemple soit une fonction f(x) ramenant un nombre et on voudrait
calculer f(a1) + f(a2) + f(a3) )

savez-vous s'il existe une syntaxe excel permettant de faire cela sans
passer par du code ?

(j'ai bien essayé somme( f(a1) : f(a2) ), mais pas de chance ça ne
marche


pas)

esperant avoir été compréhensible,
merci et à bientot.
loutox












Avatar
Nicolas B.
Si tes fonctions restent toujours 2x + 1 et 4x - 7, tu peux très bien
obtenir la somme des toto(x) ou titi(x) :
En A4 :
=SOMMEPROD(2*A1:A3+1)
Et en A5 :
=SOMMEPROD(4*A1:A3-7)

Sinon, je ne vois pas vraiment le rapport de ta macro avec les 2x + 1 et
4x - 7, mais pour la macro, la formule de Daniel répond à tes attentes.


--
Nicolas B.

Loutox wrote:
merci pour cet envoi qui m'a appris une technique differente du vba
pour créer des fonctions,
neammoins j'ai l'impression que cela ne correspond pas à mon besoin
que je reformule ci-dessous :

si par exemple j'ai a1=1 ; a2=2 et a3=3

soit la fonction personnalisée toto(x)=2x+1
et titi (x)= 4x-7

je cherche à obtenir directement en a4 toto(a1) + toto(a2) + toto(a3)
et aussi à obtenir en a5 toto(a1) titi(a1) + titi(a2) + titi(a3)


tout ceci sans passer par des colonnes intermediaires affichant le
resultat des fonctions pour chaque cellule.


"garnote" a écrit dans le message de news:
w4n9b.15170$
Salut Loutox,

Autre manière de faire :
Je t'ai préparé un petit document qui
te permet d'obtenir ta somme automatiquement
à partir d'une fonction écrite dans une cellule.
Par exemple, si tu entres x^2-1 dans une cellule,
tu obtiens la somme des f(x) = x^2-1.
Que faut-il enlever de ton adresse pour te
faire parvenir ce document ?

Serge




"Loutox" a écrit dans le message de
news: 3f65f66e$0$27026$
Salut à tous,

soit les cellules a1=1, a2=2 et a3=3

somme(a1:a3) = 1+2+3

si, au lieu de calculer la somme des valeurs, on veut calculer la
somme d'une fonction des valeurs
(par exemple soit une fonction f(x) ramenant un nombre et on
voudrait calculer f(a1) + f(a2) + f(a3) )

savez-vous s'il existe une syntaxe excel permettant de faire cela
sans passer par du code ?

(j'ai bien essayé somme( f(a1) : f(a2) ), mais pas de chance ça ne
marche pas)

esperant avoir été compréhensible,
merci et à bientot.
loutox






Avatar
Loutox
salut,
en fait les operations 2x+1 et toto(x) ne sont que des exemples pour
exprimer ma question,
le probleme était que je voulais faire
SOMME(f(A1:Ax))
où f(Ax) est une fonction personnalisée (et non une fonction standard
d'excel).
ceci dans le but d'alleger la syntaxe de mes formules et la lisibilité de la
structure de mes feuilles.

apparemment c'est bien hard à réaliser.
la question n'était sans doute pas très claire
en tout cas merci pour votre aide.










"Nicolas B." a écrit dans le message de news:
uHtxu$
Si tes fonctions restent toujours 2x + 1 et 4x - 7, tu peux très bien
obtenir la somme des toto(x) ou titi(x) :
En A4 :
=SOMMEPROD(2*A1:A3+1)
Et en A5 :
=SOMMEPROD(4*A1:A3-7)

Sinon, je ne vois pas vraiment le rapport de ta macro avec les 2x + 1 et
4x - 7, mais pour la macro, la formule de Daniel répond à tes attentes.


--
Nicolas B.

Loutox wrote:
merci pour cet envoi qui m'a appris une technique differente du vba
pour créer des fonctions,
neammoins j'ai l'impression que cela ne correspond pas à mon besoin
que je reformule ci-dessous :

si par exemple j'ai a1=1 ; a2=2 et a3=3

soit la fonction personnalisée toto(x)=2x+1
et titi (x)= 4x-7

je cherche à obtenir directement en a4 toto(a1) + toto(a2) + toto(a3)
et aussi à obtenir en a5 toto(a1) titi(a1) + titi(a2) + titi(a3)


tout ceci sans passer par des colonnes intermediaires affichant le
resultat des fonctions pour chaque cellule.


"garnote" a écrit dans le message de news:
w4n9b.15170$
Salut Loutox,

Autre manière de faire :
Je t'ai préparé un petit document qui
te permet d'obtenir ta somme automatiquement
à partir d'une fonction écrite dans une cellule.
Par exemple, si tu entres x^2-1 dans une cellule,
tu obtiens la somme des f(x) = x^2-1.
Que faut-il enlever de ton adresse pour te
faire parvenir ce document ?

Serge




"Loutox" a écrit dans le message de
news: 3f65f66e$0$27026$
Salut à tous,

soit les cellules a1=1, a2=2 et a3=3

somme(a1:a3) = 1+2+3

si, au lieu de calculer la somme des valeurs, on veut calculer la
somme d'une fonction des valeurs
(par exemple soit une fonction f(x) ramenant un nombre et on
voudrait calculer f(a1) + f(a2) + f(a3) )

savez-vous s'il existe une syntaxe excel permettant de faire cela
sans passer par du code ?

(j'ai bien essayé somme( f(a1) : f(a2) ), mais pas de chance ça ne
marche pas)

esperant avoir été compréhensible,
merci et à bientot.
loutox










Avatar
garnote
Tu pourrais essayer :

Function toto(plage As Range)
f = "2*x+1"
If Left(f, 1) = "-" Then f = Replace(f, "-", "(-1)*", 1)
For Each v In plage
s = s + Evaluate(Replace(f, "x", CStr(v)))
Next
toto = s
End Function

Function titi(plage As Range)
f = "4*x-7"
If Left(f, 1) = "-" Then f = Replace(f, "-", "(-1)*", 1)
For Each v In plage
s = s + Evaluate(Replace(f, "x", CStr(v)))
Next
titi = s
End Function

Serge

"Loutox" a écrit dans le message de news:
3f680ed4$0$20171$
salut,
en fait les operations 2x+1 et toto(x) ne sont que des exemples pour
exprimer ma question,
le probleme était que je voulais faire
SOMME(f(A1:Ax))
où f(Ax) est une fonction personnalisée (et non une fonction standard
d'excel).
ceci dans le but d'alleger la syntaxe de mes formules et la lisibilité de
la

structure de mes feuilles.

apparemment c'est bien hard à réaliser.
la question n'était sans doute pas très claire
en tout cas merci pour votre aide.










"Nicolas B." a écrit dans le message de news:
uHtxu$
Si tes fonctions restent toujours 2x + 1 et 4x - 7, tu peux très bien
obtenir la somme des toto(x) ou titi(x) :
En A4 :
=SOMMEPROD(2*A1:A3+1)
Et en A5 :
=SOMMEPROD(4*A1:A3-7)

Sinon, je ne vois pas vraiment le rapport de ta macro avec les 2x + 1 et
4x - 7, mais pour la macro, la formule de Daniel répond à tes attentes.


--
Nicolas B.

Loutox wrote:
merci pour cet envoi qui m'a appris une technique differente du vba
pour créer des fonctions,
neammoins j'ai l'impression que cela ne correspond pas à mon besoin
que je reformule ci-dessous :

si par exemple j'ai a1=1 ; a2=2 et a3=3

soit la fonction personnalisée toto(x)=2x+1
et titi (x)= 4x-7

je cherche à obtenir directement en a4 toto(a1) + toto(a2) + toto(a3)
et aussi à obtenir en a5 toto(a1) titi(a1) + titi(a2) + titi(a3)


tout ceci sans passer par des colonnes intermediaires affichant le
resultat des fonctions pour chaque cellule.


"garnote" a écrit dans le message de news:
w4n9b.15170$
Salut Loutox,

Autre manière de faire :
Je t'ai préparé un petit document qui
te permet d'obtenir ta somme automatiquement
à partir d'une fonction écrite dans une cellule.
Par exemple, si tu entres x^2-1 dans une cellule,
tu obtiens la somme des f(x) = x^2-1.
Que faut-il enlever de ton adresse pour te
faire parvenir ce document ?

Serge




"Loutox" a écrit dans le message de
news: 3f65f66e$0$27026$
Salut à tous,

soit les cellules a1=1, a2=2 et a3=3

somme(a1:a3) = 1+2+3

si, au lieu de calculer la somme des valeurs, on veut calculer la
somme d'une fonction des valeurs
(par exemple soit une fonction f(x) ramenant un nombre et on
voudrait calculer f(a1) + f(a2) + f(a3) )

savez-vous s'il existe une syntaxe excel permettant de faire cela
sans passer par du code ?

(j'ai bien essayé somme( f(a1) : f(a2) ), mais pas de chance ça ne
marche pas)

esperant avoir été compréhensible,
merci et à bientot.
loutox