![]() |
|
Forum
|
|
|
#1 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: octobre 2006
Messages: 11
|
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!!! |
|
|
|
| ANNONCES | |||
|
|
|
|
#2 (permalink) | |
|
XLDnaute Accro
Date d'inscription: janvier 2006
Localisation: Beaumont du Lac
Version Excel : Excel 2003 (PC)
Messages: 1 319
|
Bonjour,
Je ne sais pas si je réponds à ta question, mais voici un petit programme qui te calcule : Citation:
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
__________________
![]() 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 |
|
|
|
|
|
|
#3 (permalink) |
|
XLDnaute Accro
Date d'inscription: janvier 2006
Localisation: Beaumont du Lac
Version Excel : Excel 2003 (PC)
Messages: 1 319
|
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é
__________________
![]() 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 |
|
|
|
|
|
#4 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: février 2006
Messages: 161
|
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 |
|
|
|
|
|
#5 (permalink) |
|
XLDnaute Junior
Date d'inscription: juillet 2005
Localisation: Villeurbanne
Version Excel : Excel 2000 (PC)
Messages: 72
|
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 |
|
|
|
|
|
#6 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: octobre 2006
Messages: 11
|
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!! |
|
|
|
|
|
#7 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: octobre 2006
Messages: 11
|
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. |
|
|
|
|
|
#8 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: mars 2006
Messages: 390
|
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
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 |
|
|
|
|
|
#12 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: avril 2006
Localisation: Ile de France sud
Version Excel : Excel 97 (PC)
Messages: 306
|
Bonjour
Reprend le fichier de Jacques, et au besoin tu modifies la macro comme t'a indiqué edelweisseric A+ |
|
|
|
|
|
#13 (permalink) |
|
XLDnaute Accro
Date d'inscription: janvier 2006
Localisation: Beaumont du Lac
Version Excel : Excel 2003 (PC)
Messages: 1 319
|
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 |
|
|
|
|
|
#14 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: octobre 2006
Messages: 11
|
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!!! |
|
|
|
|
|
#15 (permalink) | |
|
XLDnaute Accro
Date d'inscription: janvier 2006
Localisation: Beaumont du Lac
Version Excel : Excel 2003 (PC)
Messages: 1 319
|
Bonsoir,
Pour créer ta macro tu copies intégralement le code de edelweiseric que je te redonne : Citation:
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 |
|
|
|
|
|
| ANNONCES | ||
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|
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 |