Création formule matricielle complexe

Bonjour Mesdames, Messieurs,

Je viens vers vous car je rencontre des difficultés pour générer une formule me permettant de croiser deux types d'informations :

  • les valeurs d'une ligne dont on nommera les cellules par des lettres (A, B, C,D, ....)
  • les valeurs d'une colonne dont on nommera les cellules par des chiffres (1, 2, 3, 4, ....)

Je cherche à produire une formule de manière à ce que le tableau de résultat me donne :

cellule 1 = A x 1

Cellule 2 = A x 2+ B x 1

Cellule 3 = A x 3+ B x 2 + C x 1

Cellule 4 = A x 4 + B x 3 + C x 2 + D x 1

Je joins à ma demande un tableau qui illustre mieux mes propos sachant que, vous l'aurez compris, je ne suis pas un spécialiste VBA. Mon problème correspond à la ligne jaune de l'onglet PF dont j'ai rempli manuellement les premières cellules (je ne compte pas en faire de même jusqu'au bout, il compte plus de 300 cellules....)

Merci de vos réponses si vous avez une quelconque idée à me proposer.

Wil

44bp-forum-v3.zip (40.38 Ko)

Bonjour

En attendant les spécialistes es formula

une version avec macro

A vérifier

Merci Banzai64 pour cette réponse très rapide (nous sommes par ailleurs voisins, j'habite Pau)

Si je peux abuser de ta patience, comment puis-je exploiter le code source de ta macro sachant que je dois l'intégrer à un tableau plus global?

PS : je ne connais pour le moment pas grand chose à la macro sous excel.

Merci encore quoi qu'il en soit pour ton intervention.

Bonjour voisin

L'inconvénient de la macro c'est qu'elle est faite pour une certaine organisation des données

Modifier cette organisation implique de reprendre la macro

Ne connaissant pas la structure réelle de ton fichier pas évident de t'indiquer telle ou telle valeur à modifier

Dans le code de la macro quelques explications

Mais surement quelqu'un va trouver la formule (plus facile à transposer)

Bonjour,

Je n'ai pas très bien compris la logique de tes formules. Surtout pourquoi tu prends le tableau d'amortissement à l'envers :

Je cherche à produire une formule de manière à ce que le tableau de résultat me donne :

cellule 1 = A x 1

Cellule 2 = A x 2+ B x 1

Cellule 3 = A x 3+ B x 2 + C x 1

Cellule 4 = A x 4 + B x 3 + C x 2 + D x 1

Cela aurait été plus simple avec cette logique :

cellule 1 = A x 1

Cellule 2 = A x 1+ B x 2

Cellule 3 = A x 1+ B x 2 + C x 3

Cellule 4 = A x 1 + B x 2 + C x 3 + D x 4

Cette formule matricielle à l'air de renvoyer ce que tu souhaites :

=SOMME($B$7:B7*INDEX('TA PO'!$H$16:$H$207;COLONNES($A$12:C12)-COLONNE($B$12:B12)))

A tester grandeur nature.

Merci beaucoup Banzai64

Mais je ne vais pas abuser de votre patience un 31 décembre (je parle du message privé). Je potasse le langage VBA, sinon j'attendrais lundi pour plus de renseignements.

Cdlt.

Banzai64 a écrit :

Bonjour voisin

L'inconvénient de la macro c'est qu'elle est faite pour une certaine organisation des données

Modifier cette organisation implique de reprendre la macro

Ne connaissant pas la structure réelle de ton fichier pas évident de t'indiquer telle ou telle valeur à modifier

Dans le code de la macro quelques explications

Mais surement quelqu'un va trouver la formule (plus facile à transposer)

Merci pour ces explications. Une question bête : comment générer la commande '"calcul" qui permet de réactualiser les données du tableau.

Quand je vous disais que je n'y connaissais rien....


OOoiste a écrit :

Bonjour,

Je n'ai pas très bien compris la logique de tes formules. Surtout pourquoi tu prends le tableau d'amortissement à l'envers :

Je cherche à produire une formule de manière à ce que le tableau de résultat me donne :

cellule 1 = A x 1

Cellule 2 = A x 2+ B x 1

Cellule 3 = A x 3+ B x 2 + C x 1

Cellule 4 = A x 4 + B x 3 + C x 2 + D x 1

Cela aurait été plus simple avec cette logique :

cellule 1 = A x 1

Cellule 2 = A x 1+ B x 2

Cellule 3 = A x 1+ B x 2 + C x 3

Cellule 4 = A x 1 + B x 2 + C x 3 + D x 4

Cette formule matricielle à l'air de renvoyer ce que tu souhaites :

=SOMME($B$7:B7*INDEX('TA PO'!$H$16:$H$207;COLONNES($A$12:C12)-COLONNE($B$12:B12)))

A tester grandeur nature.

Merci pour cette formule OOoiste.

Quelque chose ne tourne pas cependant, je vais l'étudier avec attention pour comprendre pourquoi.

Pour ce qui est de la logique de la formule, en fait c'est simple :

  • chaque chantier est financé par un emprunt qui démarre le même mois (pour faire simple)
  • le premier mois, je verse les intérêts du mois 1 x le nombre de chantier réalisés le mois 1
  • le second mois, je verse les intérêts du mois 2 x le nombre de chantier réalisés le mois 1 (emprunt en cours) + les intérêts du mois 1 x le nombre de chantiers réalisés le mois 2 (nouvel emprunt)
  • et ainsi de suite.

Est-ce plus clair?

Merci en tout cas et bonnes fêtes

Est-ce plus clair?

Oui, je comprend mieux comme ça.

Quelque chose ne tourne pas cependant, je vais l'étudier avec attention pour comprendre pourquoi.

Je l'ai créée avec LibreOffice, les matricielles peuvent fonctionner différement avec Excel.

Ouvres le fichier et dis-moi si tu obtiens la même chose que moi.

33bp-forum-gf.zip (28.72 Ko)
matrice
OOoiste a écrit :

Est-ce plus clair?

Oui, je comprend mieux comme ça.

Quelque chose ne tourne pas cependant, je vais l'étudier avec attention pour comprendre pourquoi.

Je l'ai créée avec LibreOffice, les matricielles peuvent fonctionner différement avec Excel.

Ouvres le fichier et dis-moi si tu obtiens la même chose que moi.

J'ai ouvert ton fichier et essayé de le reprendre pour le rendre exploitable (le tableau d'amortissement ne tournait plus sur ton fichier).... ça ne marche pas. Même en copiant tes formules vers mon document, ça me donne un résultat erroné. Quelle galère, sachant que ça à l'air de fonctionner de ton côté...

Désolé, un problème de conversion.

Mais tu ne réponds pas à ma question. Dans les 2 mini-matrices que j'ai créées, quels résultats obtiens-tu ?

Sélectionnes 3 cellules en lignes et saisis la matricielle suivante :

=INDEX('TA PO'!$H$16:$H$207;COLONNES($A$12:E12)-COLONNE($B$12:D12))

Puis la même chose sur 3 cellules en colonnes.

Quels sont les résultats ?

(fais l'essai sur ton fichier joint au début de la discussion, cela éviteras de reconstruire le mien)

Bonsoir le Forum

OOoiste,

La formule :

=SOMME($B$7:B7*INDEX('TA PO'!$H$16:$H$207;COLONNES($A$12:C12)-COLONNE($B$12:B12)))

Donne les résultats suivants chez moi :

78,75 78,34 155,84 155,01 231,26 230,00 304,98 303,29

En espérant que cela puisse t'aider

Cordialement

Ca fonctionne sur 3 cellules en lignes ou en colonne mais pas sur toute une ligne complète de données.

Comment se fait-il?

Bon, ben je ne vais pas pouvoir t'aider plus. Cela fonctionne avec Calc, mais comme je n'ai pas Excel pour tester....

L'idéal serait de pouvoir utiliser le "débogueur" (je ne sais pas comment ça s'appelle) des versions 2007 ou 2010.

Dernier essai pour la route, après je te laisse :

En ligne 7, mets des 0 à la place des cellules vides pour voir si cela ne viendrait pas des cellules vides.

A+ et bonne année 2012 quand même.

Salut le forum

OOoiste sur le fichier il y a des problèmes avec les cellules nommées

Exemple : Values_Entered_2

=SI(#NOM?*#NOM?*#NOM?*#NOM?>0;1;0)

Mytå

Bonjour

Meilleurs vœux

ricore8 a écrit :

comment générer la commande '"calcul" qui permet de réactualiser les données du tableau.

Une modification d'une cellule en jaune feuille TA PO

Banzai64 a écrit :

Une modification d'une cellule en jaune feuille TA PO

Meilleurs voeux à vous et à tout le forum.

La modification des paramètres du prêt modifie effectivement les résultats de la macro mais il faut la "rafraichir" . La formule matricielle automatise davantage le procédé, malheureusement elle ne fonctionne pas sous exel ni sur calc chez moi.

Je ne pense pourtant pas faire d'erreur : je copie la formule, sélectionne les cellules où je souhaite l'appliquer, colle la formule dans la barre de fonction, je valide MAJ+CTRL+ENTREE. La formule s'applique dans les 3 premières cellules et puis rien.

Quel bordel (je vire dans l'agacement là).

En tout cas merci pour vos contributions et encore bonne année.

Bonjour

ricore8 a écrit :

mais il faut la "rafraichir"

cela veut dire quoi ?

Ca veut dire que l'on doit manuellement réactualiser le calcul de la macro en appuyant sur ton bouton "calcul".

Je me trompe?


OOoiste a écrit :

Bon, ben je ne vais pas pouvoir t'aider plus. Cela fonctionne avec Calc, mais comme je n'ai pas Excel pour tester....

L'idéal serait de pouvoir utiliser le "débogueur" (je ne sais pas comment ça s'appelle) des versions 2007 ou 2010.

Dernier essai pour la route, après je te laisse :

En ligne 7, mets des 0 à la place des cellules vides pour voir si cela ne viendrait pas des cellules vides.

A+ et bonne année 2012 quand même.

Je viens d'essayer ton classeur et ta formule dans mon classeur sous Excel 2010 avec l'ordi de ma femme et ça ne marche toujours pas...

Je ne savais pas que l'on pouvais déboguer Excel hors VBA.

Bonjour

Il me semblait avoir répondu à ta question

comment générer la commande '"calcul" qui permet de réactualiser les données du tableau.

En modifiant une des cellules jaune le calcul se refait

Mais j'ai mal compris la question sans doute

ricore8 a écrit :

Je ne savais pas que l'on pouvais déboguer Excel hors VBA.

Ce que j'appelle déboguer s'appelle je crois évaluation de formule (ce n'est pas vraiment un déboguage...)

Cela doit se trouver au même endroit que la correction des erreurs et l'audit de formules.

Cela permet de calculer pas à pas une formule et, éventuellement, de comprendre ce qui foire.

A+

Rechercher des sujets similaires à "creation formule matricielle complexe"