Excel Downloads
Forum

Précédent   Excel Downloads Forums > Excel > Forum Excel


Réponse
 
LinkBack Outils de la discussion
Vieux 15/10/2006, 15h38   #1 (permalink)
XLDnaute Nouveau
 
Date d'inscription: octobre 2006
Messages: 11
Par défaut Somme """"scientifique"""""

Bonjour

Je voudrais faire une somme "scientifique".... A savoir que j'ai une expression en fonction de X... et je voudrais faire la somme de la même expression de 1 à i.... Pour être clair, je voudrais approximer la fonction exponentielle par les Développements limités...

Je voudrais mettre les valeurs de x dans la colonne A1

puis faire la somme

Exp= ((x puiss 0)/ O factoriel)+((x puiss 1)/ 1 factoriel)+((x puiss 2)/ 2 factoriel)+((x puiss 3)/ 3 factoriel)+...+((x puiss i)/ i factoriel)

Mais plutôt que de m'amuser à écrire je sais pas combien de fois l'expression telle qu'elle est là, il doit bien y avoir moyen de d'indiquer à excel....

Pour i de 1 à 20 faire... (xpuissance i/ i factoriel)....

Si une telle fonction existe, pourriez vous me donner le nom en anglais... je suis à l'étranger!!!

Merci bcp de votre aide!!!
ecolopolo est déconnecté   Réponse avec citation
ANNONCES
Vieux 15/10/2006, 16h46   #2 (permalink)
XLDnaute Accro
 
Avatar de Jacques87
 
Date d'inscription: janvier 2006
Localisation: Beaumont du Lac
Version Excel : Excel 2003 (PC)
Messages: 1 319
Par défaut Re : Somme """"scientifique"""""

Bonjour,

Je ne sais pas si je réponds à ta question, mais voici un petit programme qui te calcule :

Citation:
Exp= ((x puiss 0)/ O factoriel)+((x puiss 1)/ 1 factoriel)+((x puiss 2)/ 2 factoriel)+((x puiss 3)/ 3 factoriel)+...+((x puiss i)/ i factoriel)
la valeur de X est à placer en "A2"
en "B2" tu donnes la valeur maximale à attribuer à I (attention I doit impérativement être inférieur à 170, sinon il y a dépassement de capacité

et en C3 tu obtiens le résultat après avoir cliqué sur le bouton

Dis moi si cela te va

Bon courage
Fichiers attachés
Type de fichier : zip exp.zip (9,4 Ko, 11 affichages)
__________________


Prenez le temps de visiter mon village limousin
http://perso.orange.fr/beaumontdulac
et laisser la trace de votre passage sur mon livre d'or
Jacques87 est déconnecté   Réponse avec citation
Vieux 15/10/2006, 16h57   #3 (permalink)
XLDnaute Accro
 
Avatar de Jacques87
 
Date d'inscription: janvier 2006
Localisation: Beaumont du Lac
Version Excel : Excel 2003 (PC)
Messages: 1 319
Par défaut Re : Somme """"scientifique"""""

Re,

Une petite modif dans l'écriture de mon code
En effet si I est supérieur à 170 le message d'erreur tourne en boucle et impossible de sortit sans un "CTRL" "ALT" "SUP"

donc voici le fichier modifié
Fichiers attachés
Type de fichier : zip exp.zip (9,4 Ko, 16 affichages)
__________________


Prenez le temps de visiter mon village limousin
http://perso.orange.fr/beaumontdulac
et laisser la trace de votre passage sur mon livre d'or
Jacques87 est déconnecté   Réponse avec citation
Vieux 15/10/2006, 21h38   #4 (permalink)
XLDnaute Occasionel
 
Date d'inscription: février 2006
Messages: 161
Par défaut Re : Somme """"scientifique"""""

Bonsoir le forum
Bonsoir ecolopolo
Bonsoir Jacques

En reprenant le code de Jacques :

Sub test()
Dim I As Integer
Dim exp As Double, X As Double, e As Double

X = Range("A2").Value
If Range("B2").Value > 170 Then
MsgBox "Dépassement de capacité, veuillez saisir un nombre compris entre 1 et 170"
Exit Sub
End If
fac = 1
For I = 0 To ActiveSheet.Range("B2").Value
y = Application.WorksheetFunction.Fact(I)
For a = 1 To n
Fact = Fact * a
Next a
e = (X ^ I) / y
exp = exp + e
Next I
Range("d3").Value = exp
End Sub

un peu plus court, si c'est bien cela que tu veux obtenir

A+

Cordialement
edelweisseric est déconnecté   Réponse avec citation
Vieux 15/10/2006, 21h48   #5 (permalink)
XLDnaute Junior
 
Date d'inscription: juillet 2005
Localisation: Villeurbanne
Version Excel : Excel 2000 (PC)
Messages: 72
Par défaut Re : Somme """"scientifique"""""

Bonsoir Ecolopolo, Jacques, Edelweisseric, Forum

Par formule

En B1 la valeur de x
en B2 le nombre d'itérations désirées

Calcul exponentielle (série de Taylor) en C1 par exemple :

=SOMME(B1^(LIGNE(INDIRECT("1:" &B2))-1)/FACT(LIGNE(INDIRECT("1:" &B2))-1))

Matricielle à valider avec CTRL + Maj + Entrée

Bonne soirée

PhiBou
PhiBou est déconnecté   Réponse avec citation
Vieux 15/10/2006, 21h49   #6 (permalink)
XLDnaute Nouveau
 
Date d'inscription: octobre 2006
Messages: 11
Par défaut Re : Somme """"scientifique"""""

salut à vous

Merci Jacques87 & Edelweisseric pour vos réponses...

Jacques87, j'ai un prob avec ton programme... j'ai oublié de préciser que je suis sous mac... et en fait il me faut refaire les boutons et je n'arrive pas trouver la macro attachée à ton bouton! Merci bcp!

Je vais tenter la partie de edelweisseric!!

Merci bcp de votre aide!!
ecolopolo est déconnecté   Réponse avec citation
Vieux 15/10/2006, 21h50   #7 (permalink)
XLDnaute Nouveau
 
Date d'inscription: octobre 2006
Messages: 11
Par défaut Re : Somme """"scientifique"""""

Merci Phibou, on était en même temps! Je vais tenter vos programmes! Edelweisseric... Je dois créer un fichier avec ton code? ou une macro? dsl j'suis novice de Novice&co...

Dernière modification par ecolopolo ; 15/10/2006 à 22h01.
ecolopolo est déconnecté   Réponse avec citation
Vieux 15/10/2006, 21h58   #8 (permalink)
XLDnaute Occasionel
 
Date d'inscription: mars 2006
Messages: 390
Par défaut Re : Somme """"scientifique"""""

Bonsoir à tous,

une petite fonction récursive qui fonctionne (pour une fonction, c'est plutôt pas mal!) pour n'importe quelle fonction du moment qu'elle est exprimée en anglais, avec ! comme variable et en références RC:
Code:
Function s_r(f As String, i_inf As Integer, i_sup As Integer)
'f est une fonction quelconque où la variable est remplacée par un !
'f doit être exprimée en anglais avec un référencement RC
'f est une chaîne de caractères
'exemple d'appel :
'=s_r("RC1^!/FACT(!)";0;20) pour obtenir l'exponentielle
'sur la base d'un x sur la même ligne en colonne 1
'=s_r("sin(!)";1;13) pour la somme de i%=1 à 13 des sinus de i%
If i_sup = i_inf Then
    s_r = s_r + Evaluate(WorksheetFunction.Substitute(f, "!", i_inf))
Else
    s_r = Evaluate(WorksheetFunction.Substitute(f, "!", i_sup)) + s_r(f, i_inf, i_sup - 1)
End If
End Function
les commentaires doivent être suffisants.

au fait, je l'ai appelée S_R pour Somme Récursive.

l'appel se fait de la façon suivante :
=S_R(mafonction, i_mini, i_maxi)
mafonction est un string, en anglais, référencé en RC avec ! comme variable
ODVJ est déconnecté   Réponse avec citation
Vieux 15/10/2006, 22h22   #9 (permalink)
Mytå
Guest
 
Messages: n/a
Par défaut Re : Somme """"scientifique"""""

Salut le Forum

La fonction =EXP(x) fait déjà le calcul

La fonction exponentielle exp x peut notamment être définie par son développement en série de MacLaurin. On a:



Mytå
  Réponse avec citation
Vieux 15/10/2006, 22h40   #10 (permalink)
XLDnaute Occasionel
 
Date d'inscription: mars 2006
Messages: 390
Par défaut Re : Somme """"scientifique"""""

Bonsoir,

EXP ne fait pas ce que souhaite Ecolopolo.
la différence est dans tes pointillés

A+
ODVJ est déconnecté   Réponse avec citation
Vieux 16/10/2006, 17h15   #11 (permalink)
XLDnaute Nouveau
 
Date d'inscription: octobre 2006
Messages: 11
Par défaut Re : Somme """"scientifique"""""

salut
merci a vous.....

pour toutes ces fonctions.... où dois-je les mettre... faire un fichier ?
ecolopolo est déconnecté   Réponse avec citation
Vieux 19/10/2006, 09h24   #12 (permalink)
XLDnaute Occasionel
 
Date d'inscription: avril 2006
Localisation: Ile de France sud
Version Excel : Excel 97 (PC)
Messages: 306
Par défaut Re : Somme """"scientifique"""""

Bonjour

Reprend le fichier de Jacques, et au besoin tu modifies la macro comme t'a indiqué edelweisseric

A+
Eric 45 est déconnecté   Réponse avec citation
Vieux 19/10/2006, 13h17   #13 (permalink)
XLDnaute Accro
 
Avatar de Jacques87
 
Date d'inscription: janvier 2006
Localisation: Beaumont du Lac
Version Excel : Excel 2003 (PC)
Messages: 1 319
Par défaut Re : Somme """"scientifique"""""

Bonjour à tous,

Ecopolo, à défaut de reprendre mon code, dans lequel je reconstruis la fonction "factoriel", utilise le code de edelweiseric qui évite de reconstruire cette fonction, l'utilise (car elle existait .... tu vois on ne connait pas tout, ce qui est un bien car sinon on ne progresserait jamais quel que soit nos connaissances)
De plus edelweiseric l'a insérée dans un module, donc tu ne seras pas obligé de construire un bouton (entre autres je ne connais pas les Mac) et tu pourras simplement appeler cette macro avec la barre de menu : "Outils" - "Macros" - "Macros ..." - "Test" - "Exécuter"

Bon courage
__________________


Prenez le temps de visiter mon village limousin
http://perso.orange.fr/beaumontdulac
et laisser la trace de votre passage sur mon livre d'or
Jacques87 est déconnecté   Réponse avec citation
Vieux 21/10/2006, 20h52   #14 (permalink)
XLDnaute Nouveau
 
Date d'inscription: octobre 2006
Messages: 11
Par défaut Re : Somme """"scientifique"""""

Bonjour

Merci vrmt à tout le monde! Je vais jouer le boulet... j'ai tenté de suivre vos instructions, mais j'avoue que j'ai un peu de mal... j'ai dc ouvert le module VBA, j'ai inseré un nouveau module, j'ai placé le code comme prévu, j'ai ensuite enregistré la macro...
bon déjà premier prob, erreur de compilation, Dois-je placer des arguments dans sub test () ?
Ensuite, comment faire pour appeler la fonction depuis excel? Mes questions sont certainement stupides... dsl!!!
ecolopolo est déconnecté   Réponse avec citation
Vieux 21/10/2006, 21h11   #15 (permalink)
XLDnaute Accro
 
Avatar de Jacques87
 
Date d'inscription: janvier 2006
Localisation: Beaumont du Lac
Version Excel : Excel 2003 (PC)
Messages: 1 319
Par défaut Re : Somme """"scientifique"""""

Bonsoir,

Pour créer ta macro tu copies intégralement le code de edelweiseric que je te redonne :

Citation:
Sub test()
Dim I As Integer
Dim exp As Double, X As Double, e As Double

X = Range("A2").Value
If Range("B2").Value > 170 Then
MsgBox "Dépassement de capacité, veuillez saisir un nombre compris entre 1 et 170"
Exit Sub
End If
fac = 1
For I = 0 To ActiveSheet.Range("B2").Value
y = Application.WorksheetFunction.Fact(I)
For a = 1 To n
Fact = Fact * a
Next a
e = (X ^ I) / y
exp = exp + e
Next I
Range("d3").Value = exp
End Sub
Pour cela, une fois ton fichier ouvert :
ALT et F11
dans le Menu "Insertion"
choisir "MOdule"
dans la fenêtre de gauche : double clic sur Module1 (que tu viens de créer) afin de pouvoir accéder à la fenêtre de droite
enfin, coller le code de Edelweiseric dans cette fenêtre de droite

Mais il me semble que tout cela tu l'as déjà fait

Maintenant, en retournant dans l'environnement Excel, si tu regardes tes macros :
Outils
Macros
Macros ...

tu dois retrouver la macro que tu viens de coller, soit "Test"

tu clic dessus et choisis "Exécuter" pour la lancer

Maintenant si tu veux que cette manip soit automatisée il te faut l'appeler dans ton code au cas où tu aurais développé en VBA

exemple

début de ton code
...
test
...
suite de ton code

la macro "test" sera exécutée exactement lorque la ligne d'appel "test" sera atteinte

Autre possibilité : tu crées un bouton et tu lui colle le code d'elweiseric à condition de changer la première ligne : Sub test() en Private Sub CommandButton1_Click()

Bonne soirée
__________________


Prenez le temps de visiter mon village limousin
http://perso.orange.fr/beaumontdulac
et laisser la trace de votre passage sur mon livre d'or
Jacques87 est déconnecté   Réponse avec citation
ANNONCES
Réponse

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui

Discussions similaires
Discussion Auteur Forum Réponses Dernier message
Comment "bloquer" ou "verouiller" une ou plusieurs ligne(s)/colonne(s) Vince Forum Excel Downloads - Archives 3 23/01/2005 09h01
Enlever "faux" ou "vrai" après enregistrement xlDialogSaveAs max Forum Excel Downloads - Archives 1 02/08/2004 09h50
!!! if cputime=format("hh.mm")24.00 then msgbox"bonne année;vbXLDmation" !!! fabrice Forum Excel Downloads - Archives 0 01/01/2004 01h00
Macro pour éliminer "." élimine également "," embodu Forum Excel Downloads - Archives 2 21/10/2003 00h20
Conflit entre "Formules" et saisies dans "Userform". Quaisako Forum Excel Downloads - Archives 2 17/01/2003 12h40


Fuseau horaire GMT +2. Il est actuellement 01h33.


(C) 2006 Excel Downloads