Comment coder une fonction avec plusieurs sommes arithmétiques
Résolu/Fermé
ErnstP
Messages postés
11
Date d'inscription
mardi 13 juin 2017
Statut
Membre
Dernière intervention
15 juin 2017
-
13 juin 2017 à 13:48
ErnstP Messages postés 11 Date d'inscription mardi 13 juin 2017 Statut Membre Dernière intervention 15 juin 2017 - 14 juin 2017 à 16:27
ErnstP Messages postés 11 Date d'inscription mardi 13 juin 2017 Statut Membre Dernière intervention 15 juin 2017 - 14 juin 2017 à 16:27
A voir également:
- Comment coder une fonction avec plusieurs sommes arithmétiques
- Fonction si et - Guide
- Comment coder son whatsapp - Guide
- Application pour apprendre à coder - Guide
- Fonction moyenne excel - Guide
- Excel renvoyer la valeur d'une cellule en fonction d'une autre - Forum Logiciels
4 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
13 juin 2017 à 14:59
13 juin 2017 à 14:59
Bonjour,
c'est bêta oui...
eric
c'est bêta oui...
eric
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
13 juin 2017 à 18:50
13 juin 2017 à 18:50
Bonjour
Ce que veut dire eric (salut à toi), c'est que ta question est bien trop vague.
Il te faudrait en dire un peu, voir beaucoup plus sur le "modèle analytique" espéré
Cdlmnt
Ce que veut dire eric (salut à toi), c'est que ta question est bien trop vague.
Il te faudrait en dire un peu, voir beaucoup plus sur le "modèle analytique" espéré
Cdlmnt
ErnstP
Messages postés
11
Date d'inscription
mardi 13 juin 2017
Statut
Membre
Dernière intervention
15 juin 2017
Modifié le 13 juin 2017 à 20:26
Modifié le 13 juin 2017 à 20:26
Bonjour,
Le problème est le suivant:
Un cable relie un point A à un point B sans avoir pour trajectoire une ligne droite. Ce cable peut être placé dans un repère orthonormé. A et B sont placés sur l'axe des abscisses (X). Il faut voir le cable comme une ligne brisée en différents segments. Les changements de directions du cable permettent de le découper en n segments qui peuvent êtres considérés comme des vecteurs.
Xi correspond à la projection du vecteur i sur l'axe des abscisses et Yi correspond a la projection sur l'axe des ordonnés (Y). Sur chaque vecteur ou segment s'applique une force Fi suivant l'axe (Y). C'est cette force qui a entrainé le déplacement de la section du cable suivant l'axe Y et qui a empêché le cable de relier le point A au point B de façon rectiligne. Chaque Fi étant de valeur différente, le déplacement du cable n'est pas homogène et les sections ont été plus ou moins décalées suivant l'axe (Y).
Imaginons que n = 10
J'aurai alors deux colones:
-une colone contenant les 10 valeurs des Xi dans les cellules A1 jusqu'à A10
-une colone contenant les 10 valeurs des Fi dans les cellules B1 jusqu'à B10
Les valeurs Ay et Ax sont deux autres forces qui sont également connues elle représentent les forces qui s'appliquent à l'extrémité du cable c'est à dire le point A qui est immobile.
Je pourrais calculer chaque Yi à partir de ces valeurs mais ce n'est évidemment pas le but puisqu'il faudra ensuite pouvoir l'appliquer à n sections.
Etant incapable de quoi que ce soit en code je ne sais pas comment indexer chaque valeurs Xi et Fi pour pouvoir ensuite y faire appel dans une fonction écrite en VBA qui me donnera le Yi correspondant.
Comme on peut le voir dans la fonction cités ds mon premier message chaque Yi sera dépendant des forces Fi qui s'appliquent sur chaque segment du cable et des forces Ax et Ay dues au point de fixation du cable. ( L'équation est en fait obtenue en considérant que les moments des forces s'annulent à l'équilibre.)
La partie qui me pose le plus problème est le second terme du numérateur: comment faire pour coder cette double somme?
J'ai regardé comment écrire des sommes arithmétiques en VBA mais je ne trouve pas comment faire intervenir plusieurs sommes ayant des bornes interdépendantes à la fois. J'ai pensé qu'il fallait combiner plusieurs boucles "for" mais je n'y arrive pas.
Voila je veux bien croire que meme avec ce long message ca soit toujours très floue. Je n'ai toujours pas commencer à coder puisque j'essaye justement de traduire mon équation en code.
Si vous avez des idées, merci.
cordialement
Le problème est le suivant:
Un cable relie un point A à un point B sans avoir pour trajectoire une ligne droite. Ce cable peut être placé dans un repère orthonormé. A et B sont placés sur l'axe des abscisses (X). Il faut voir le cable comme une ligne brisée en différents segments. Les changements de directions du cable permettent de le découper en n segments qui peuvent êtres considérés comme des vecteurs.
Xi correspond à la projection du vecteur i sur l'axe des abscisses et Yi correspond a la projection sur l'axe des ordonnés (Y). Sur chaque vecteur ou segment s'applique une force Fi suivant l'axe (Y). C'est cette force qui a entrainé le déplacement de la section du cable suivant l'axe Y et qui a empêché le cable de relier le point A au point B de façon rectiligne. Chaque Fi étant de valeur différente, le déplacement du cable n'est pas homogène et les sections ont été plus ou moins décalées suivant l'axe (Y).
Imaginons que n = 10
J'aurai alors deux colones:
-une colone contenant les 10 valeurs des Xi dans les cellules A1 jusqu'à A10
-une colone contenant les 10 valeurs des Fi dans les cellules B1 jusqu'à B10
Les valeurs Ay et Ax sont deux autres forces qui sont également connues elle représentent les forces qui s'appliquent à l'extrémité du cable c'est à dire le point A qui est immobile.
Je pourrais calculer chaque Yi à partir de ces valeurs mais ce n'est évidemment pas le but puisqu'il faudra ensuite pouvoir l'appliquer à n sections.
Etant incapable de quoi que ce soit en code je ne sais pas comment indexer chaque valeurs Xi et Fi pour pouvoir ensuite y faire appel dans une fonction écrite en VBA qui me donnera le Yi correspondant.
Comme on peut le voir dans la fonction cités ds mon premier message chaque Yi sera dépendant des forces Fi qui s'appliquent sur chaque segment du cable et des forces Ax et Ay dues au point de fixation du cable. ( L'équation est en fait obtenue en considérant que les moments des forces s'annulent à l'équilibre.)
La partie qui me pose le plus problème est le second terme du numérateur: comment faire pour coder cette double somme?
J'ai regardé comment écrire des sommes arithmétiques en VBA mais je ne trouve pas comment faire intervenir plusieurs sommes ayant des bornes interdépendantes à la fois. J'ai pensé qu'il fallait combiner plusieurs boucles "for" mais je n'y arrive pas.
Voila je veux bien croire que meme avec ce long message ca soit toujours très floue. Je n'ai toujours pas commencer à coder puisque j'essaye justement de traduire mon équation en code.
Si vous avez des idées, merci.
cordialement
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
Modifié le 14 juin 2017 à 00:56
Modifié le 14 juin 2017 à 00:56
Oulalaaaa, tout ça ? à l'heure du sans fil ?
Pour l'instant, perso j'ai compris la 1ère ligne...
Sans doute qu'un fichier avec une table des données de qq lignes et un exemple détaillé de ce que tu veux calculer (quoi, comment, avec quoi) rendra les choses plus concrètes à ceux qui se pencheront dessus (moi je vais être plutôt dans les valises...).
cjoint.com et coller ici le lien fourni.
eric
Pour l'instant, perso j'ai compris la 1ère ligne...
Sans doute qu'un fichier avec une table des données de qq lignes et un exemple détaillé de ce que tu veux calculer (quoi, comment, avec quoi) rendra les choses plus concrètes à ceux qui se pencheront dessus (moi je vais être plutôt dans les valises...).
cjoint.com et coller ici le lien fourni.
eric
ErnstP
Messages postés
11
Date d'inscription
mardi 13 juin 2017
Statut
Membre
Dernière intervention
15 juin 2017
14 juin 2017 à 11:58
14 juin 2017 à 11:58
Voila j'ai deux colonnes de valeurs et je cherche a coder la fonction qui me donnera les valeurs de la troisième colonne. Appelons cette fonction G, c'est celle du premier message.
X1 F1-------------> Y1= G(X1)= Ay*X1
X2 F2-------------> Y2= G(X1, X2, F1)= Ay*(X1+X2) - F1*X2
X3 F3-------------> Y3= G(X1, X2, X3, F1, F2)= Ay(X1+X2+X3) - F1(X2+X3) - F2*X3
X4 F4-------------> Y4= G(X1, X2, X3, X4, F1, F2, F3) = Ay(X1+...+X4) - F1*(X2+X3+X4) - F2*(X3+X4) - F3*X4
X5 F5-----------> Y5= G(X1, X2, X3, X4, X5, F1, F2, F3,F4)= .....
X1 F1-------------> Y1= G(X1)= Ay*X1
X2 F2-------------> Y2= G(X1, X2, F1)= Ay*(X1+X2) - F1*X2
X3 F3-------------> Y3= G(X1, X2, X3, F1, F2)= Ay(X1+X2+X3) - F1(X2+X3) - F2*X3
X4 F4-------------> Y4= G(X1, X2, X3, X4, F1, F2, F3) = Ay(X1+...+X4) - F1*(X2+X3+X4) - F2*(X3+X4) - F3*X4
X5 F5-----------> Y5= G(X1, X2, X3, X4, X5, F1, F2, F3,F4)= .....
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
Modifié le 14 juin 2017 à 14:58
Modifié le 14 juin 2017 à 14:58
Un essai, mais le résultat ..... ?
http://www.cjoint.com/c/GFom6pqesI8
Cdlmnt
http://www.cjoint.com/c/GFom6pqesI8
Cdlmnt
ErnstP
Messages postés
11
Date d'inscription
mardi 13 juin 2017
Statut
Membre
Dernière intervention
15 juin 2017
14 juin 2017 à 16:02
14 juin 2017 à 16:02
Merci beaucoup pour le fichier.
J'ai eu un problème à l'ouverture. Le message disait que le fichier était endommagé et devait être réparé pour être ouvert. Après réparation j'ai pu l'ouvrir mais seulement en partie et je n'arrive pas à lancer la macro ni à voir comment elle est faite. Néanmoins la colonne sans macro constitue deja une façon plus intéressante d'écrire l'équation. Merci pour le coup de main. Concernant la macro as tu une idée sur l'origine du problème. C'est peut être juste un problème de compatibilité. J'utilise excel sur mac, je sais que ca peut être la source de bcp de problèmes. Merci bcp.
Cordialement
J'ai eu un problème à l'ouverture. Le message disait que le fichier était endommagé et devait être réparé pour être ouvert. Après réparation j'ai pu l'ouvrir mais seulement en partie et je n'arrive pas à lancer la macro ni à voir comment elle est faite. Néanmoins la colonne sans macro constitue deja une façon plus intéressante d'écrire l'équation. Merci pour le coup de main. Concernant la macro as tu une idée sur l'origine du problème. C'est peut être juste un problème de compatibilité. J'utilise excel sur mac, je sais que ca peut être la source de bcp de problèmes. Merci bcp.
Cordialement
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
14 juin 2017 à 16:14
14 juin 2017 à 16:14
Je l'ouvre sans problème
La macro est basée sur la formule simplifiée
Cdlmnt
La macro est basée sur la formule simplifiée
Const celn As String = "B4" Const celAx As String = "B5" Const celAy As String = "B6" Const celX1 As String = "B7" Const coXi As String = "B" Const coFi As String = "C" Const coYi As String = "D" Const lideb As Byte = 11 Public Sub OK() Dim li As Long, lifin As Long, n As Byte, k As Byte, k1 As Byte, k2 As Byte Dim Ax As Double, Ay As Double Dim TX() As Double, TY() As Double, TF() As Double Dim AyFF As Double n = Range(celn).Value Ax = Range(celAx).Value Ay = Range(celAy).Value ReDim TX(1 To n) ReDim TY(1 To n) ReDim TF(1 To n) For k = 1 To n TX(k) = Range(coXi & lideb + k - 1).Value TF(k) = Range(coFi & lideb + k - 1).Value Next k TY(1) = Ay * TX(1) Range(coYi & lideb).Value = TY(1) For k = 2 To n TY(k) = TY(k - 1) AyFF = Ay For k1 = 1 To k - 1 AyFF = AyFF - TF(k1) Next k1 TY(k) = TY(k) + AyFF * TX(k) Range(coYi & k + lideb - 1).Value = TY(k) Next k 'Range(coYi & lideb).Resize(n, 1) = Application.Transpose(TY) End Sub
Cdlmnt
ErnstP
Messages postés
11
Date d'inscription
mardi 13 juin 2017
Statut
Membre
Dernière intervention
15 juin 2017
14 juin 2017 à 16:27
14 juin 2017 à 16:27
Ok merci beaucoup
13 juin 2017 à 15:00
Modifié le 13 juin 2017 à 18:47
C'est à dire ?
Car pour l'instant à part te répondre "du mieux que tu peux" c'est tout ce que m'inspire ta question.
13 juin 2017 à 20:27