Bonjour,
Je souhaite écrire une double somme sous excel.
J'ai deux matrices :
(en orange)
(matrice carré en vert)
Je souhaite remplir les cases bleu avec la formule suivante :
Sur l'exemple n = 17, m = 3.
Quelle forme dois-je entrer ? Merci.
Bonjour,
Je souhaite écrire une double somme sous excel.
J'ai deux matrices :
(en orange)
(matrice carré en vert)
Je souhaite remplir les cases bleu avec la formule suivante :
Sur l'exemple n = 17, m = 3.
Quelle forme dois-je entrer ? Merci.
Bonjour CliffeCSTL,
Finalement, la formule Excel n'est pas si compliquée puisque tu as affaire à des sommes finies. Pour cela, tu peux créer une macro et utiliser des boucles for.
1 - Tu transformes tes matrices en deux tableaux distincts. Tu peux appeler par exemple tes tableaux X(i,j) et A(i,j). Tu les remplis avec toutes tes données.
2 - Ensuite, tu fais tes boucles sur i et j (for i=1 to 17 ; for j=1 to 17 ; ... ; next j ; next i ). Tu auras tes trois résultats.
Par contre, le plus difficile, c'est pour toi de développer ta formule afin de savoir ce qu'il te faut sommer. Mais je ne penses pas que ce serait t'aider que de faire l'exercice à ta place. Il te suffit de prendre une bonne feuille de papier et de comprendre ce que l'on te demande de faire.
Macrocosmos
Pourquoi vous pensez tjr que les questions viennent forcément d'un exercice de cours ? J'ai fini les études depuis un moment maintenant ...
Bonjour,
Je ne suis pas certain d'avoir bien compris, mais une combinaison de formules SOMMEPROD + PRODUITMAT devrait pouvoir aller.
Est-ce que la formule matricielle (à valider via combinaison de touches CTRL + MAJ + ENTREE) suivante pourrait correspondre à ce que tu cherches ?
Pour s1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part =SOMMEPROD(PRODUITMAT(A$1:A$17;TRANSPOSE(A$1:A$17));$E$1:$U$17)
Exact, j'avais jamais remarqué tiens ...
Sinon j'ai écrit ceci :
Mais les cellules ne se mettent pas à jour automatiquement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Sub s() Dim j As Integer Dim i1 As Integer Dim i2 As Integer Dim summ As Integer For j = 1 To 26 summ = 0 For i1 = 1 To 179 For i2 = 1 To 179 summ = summ + Cells(i1 + 1, i2 + 30) * Cells(i1 + 1, j + 1) * Cells(i2 + 1, j + 1) Next i2 Next i1 Cells(163, j + 1) = summ Next j End Sub
dixit Pierre Fauconnier. Pour moi, ça veut dire qu'avant de chercher une solution VBA pour votre problème, cherchez d'abord à savoir si une solution Excel n'est pas plus facile à mettre en oeuvre, si les plages de tes matrices ne sont pas variables, la solution PORDUITMAT est plus adéquate, surtout que les mises à jour seront automatiques.VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités
Salut à tous,
S'il s'agit d'un calcul matriciel, les dimensions des matrices (17,3) (17,17) ne sont pas compatibles, il faut plutôt un format (3,17)(17,17) qui va donner un format(3,17)
Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités
Si c'est donc un calcul matriciel que tu veux faire, alors ta matrice carré de format (17,17) sera ta matrice1 et l'autre de format (17,3) sera ta matrice 2 . Sélectionne donc une plage de données de format (17,3) c'est à dire de 17 lignes et 3 colonnes et utilise la fonction excel PRODUITMAT. La double somme n'est rien d'autre que la traduction en formule du produit matriciel qui est effectué, puisque tu multiplie chaque ligne de ta matrice1 par chaque colonne de ta matrice2.
Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager