OVH Cloud OVH Cloud

Faire du calcul matriciel

5 réponses
Avatar
Pascal
Bonjour à tous,
je suis confronté à un problème de calcul matriciel.
Je possède 2 tables et je voudrai les multiplier entres elle et mettre le
résultats dan sune 3 ème table
Je m'explique :

Table1 : Voici les noms des champs :
CodeProduit, SemaineX, semaineX+1,semaineX+2......semaineX+N

x est variable en fonction de la date du jour et contient en principe le n°
de la semaine courante
N peut atteindre 20
Le nom des champs est cette forme pour les semaines : S1, S2,S5,S6 (il se
peut qu'il y ai des n° de semaine absent).


Table 2 :
CodeProduit,S0,S1,S2,S3,S4

Codeproduit contient la même information que dans la table1 (le nb de code
produit peut être variable dans Table1, mais toutes les possibilité
possibles sont dans la table2).


Ce que je voudai faire c'est pour chaque codeProduit (j'en ai un 30taine)
faire une multiplication entre SemaineX+1 et S1, Semaine X+2 et S2.......
Et écrire le tout dans la table T3 qui doit reprendre le même noms champs
que la table Table1.

J'avais bien pensé à le faire avec Excel, mais du fait du nb de CodeProduit
variable cela ne marche pas.

Si quelqu'un pouvait m'aider car je n'ai pas suffisament de connaissances en
VB
Par avance merci.

5 réponses

Avatar
Pascal
Bonjour,
y a t'il quelqu'un qui puisse m'aider ?
Par avance merci pour votre aide.
Pascal



"Pascal" a écrit dans le message de
news:%23OZpD$
Bonjour à tous,
je suis confronté à un problème de calcul matriciel.
Je possède 2 tables et je voudrai les multiplier entres elle et mettre le
résultats dan sune 3 ème table
Je m'explique :

Table1 : Voici les noms des champs :
CodeProduit, SemaineX, semaineX+1,semaineX+2......semaineX+N

x est variable en fonction de la date du jour et contient en principe le


de la semaine courante
N peut atteindre 20
Le nom des champs est cette forme pour les semaines : S1, S2,S5,S6 (il se
peut qu'il y ai des n° de semaine absent).


Table 2 :
CodeProduit,S0,S1,S2,S3,S4

Codeproduit contient la même information que dans la table1 (le nb de code
produit peut être variable dans Table1, mais toutes les possibilité
possibles sont dans la table2).


Ce que je voudai faire c'est pour chaque codeProduit (j'en ai un 30taine)
faire une multiplication entre SemaineX+1 et S1, Semaine X+2 et S2.......
Et écrire le tout dans la table T3 qui doit reprendre le même noms champs
que la table Table1.

J'avais bien pensé à le faire avec Excel, mais du fait du nb de
CodeProduit

variable cela ne marche pas.

Si quelqu'un pouvait m'aider car je n'ai pas suffisament de connaissances
en

VB
Par avance merci.




Avatar
Eric
Bonjour Pascal,

je vais jeter un oeil à ton problème mais c'est pas gagné d'avance.

2 questions au préalable:
a - Que faire si pour un produit donné, on ne le retrouve pas dans
l'autre table ?
b - Que faire si pour un produit donné, dans la 1ere table on a une
valeur pour la semaine1 et pas de valeur pour la semaine2 ?

A+
Eric

"Pascal" écrivait
news::

Bonjour,
y a t'il quelqu'un qui puisse m'aider ?
Par avance merci pour votre aide.
Pascal



"Pascal" a écrit dans le message de
news:%23OZpD$
Bonjour à tous,
je suis confronté à un problème de calcul matriciel.
Je possède 2 tables et je voudrai les multiplier entres elle et
mettre le résultats dan sune 3 ème table
Je m'explique :

Table1 : Voici les noms des champs :
CodeProduit, SemaineX, semaineX+1,semaineX+2......semaineX+N

x est variable en fonction de la date du jour et contient en principe
le n° de la semaine courante
N peut atteindre 20
Le nom des champs est cette forme pour les semaines : S1, S2,S5,S6
(il se peut qu'il y ai des n° de semaine absent).


Table 2 :
CodeProduit,S0,S1,S2,S3,S4

Codeproduit contient la même information que dans la table1 (le nb de
code produit peut être variable dans Table1, mais toutes les
possibilité possibles sont dans la table2).


Ce que je voudai faire c'est pour chaque codeProduit (j'en ai un
30taine) faire une multiplication entre SemaineX+1 et S1, Semaine X+2
et S2....... Et écrire le tout dans la table T3 qui doit reprendre le
même noms champs que la table Table1.

J'avais bien pensé à le faire avec Excel, mais du fait du nb de
CodeProduit variable cela ne marche pas.

Si quelqu'un pouvait m'aider car je n'ai pas suffisament de
connaissances en VB
Par avance merci.









Avatar
Eric
re,
pour le b, lire
Que faire si pour un produit donné, dans la 1ere table on a une
valeur pour la semaine1 et pas de valeur pour la semaine1 dans la table2
?

Eric

Eric écrivait
news::

Bonjour Pascal,

je vais jeter un oeil à ton problème mais c'est pas gagné d'avance.

2 questions au préalable:
a - Que faire si pour un produit donné, on ne le retrouve pas dans
l'autre table ?
b - Que faire si pour un produit donné, dans la 1ere table on a une
valeur pour la semaine1 et pas de valeur pour la semaine2 ?

A+
Eric

"Pascal" écrivait
news::

Bonjour,
y a t'il quelqu'un qui puisse m'aider ?
Par avance merci pour votre aide.
Pascal



"Pascal" a écrit dans le message de
news:%23OZpD$
Bonjour à tous,
je suis confronté à un problème de calcul matriciel.
Je possède 2 tables et je voudrai les multiplier entres elle et
mettre le résultats dan sune 3 ème table
Je m'explique :

Table1 : Voici les noms des champs :
CodeProduit, SemaineX, semaineX+1,semaineX+2......semaineX+N

x est variable en fonction de la date du jour et contient en principe
le n° de la semaine courante
N peut atteindre 20
Le nom des champs est cette forme pour les semaines : S1, S2,S5,S6
(il se peut qu'il y ai des n° de semaine absent).


Table 2 :
CodeProduit,S0,S1,S2,S3,S4

Codeproduit contient la même information que dans la table1 (le nb de
code produit peut être variable dans Table1, mais toutes les
possibilité possibles sont dans la table2).


Ce que je voudai faire c'est pour chaque codeProduit (j'en ai un
30taine) faire une multiplication entre SemaineX+1 et S1, Semaine X+2
et S2....... Et écrire le tout dans la table T3 qui doit reprendre le
même noms champs que la table Table1.

J'avais bien pensé à le faire avec Excel, mais du fait du nb de
CodeProduit variable cela ne marche pas.

Si quelqu'un pouvait m'aider car je n'ai pas suffisament de
connaissances en VB
Par avance merci.













Avatar
Michel Walsh
Salut,


De ce que je comprends, il faut probablement nécessairement normaliser
et alors, cela devient enfantin.


Table1Normalisée
CodeProduit, Semaine, Valeur ' champs
1010, 22, 55.44$
1010, 23, 56.22$
1010, 27, 51.27$ ' exemple de données.



Naso-digitallement, la requête est alors:


SELECT a.CodeProduit, SUM( a.Valeur * b.Valeur) As produitScalaire
FROM Table1Normalisée As a INNER JOIN Table2Normalisée as b
ON a.CodeProduit=b.CodeProduit AND a.Semaine=b.Semaine
GROUP BY a.CodeProduit



Si une semaine de table2 n'existe pas, pour un code de produit précis, la
semaine est éliminée de la somme, pour ce code de produit précis.




On peut également ajouter une clause WHERE pour limiter les valeurs de
Semaine impliquées:

SELECT a.CodeProduit, SUM( a.Valeur * b.Valeur) As produitScalaire
FROM Table1Normalisée As a INNER JOIN Table2Normalisée as b
ON a.CodeProduit=b.CodeProduit AND a.Semaine=b.Semaine
WHERE a.Semaine IN( 18, 21, 22, 23, 27)
GROUP BY a.CodeProduit




Pour normaliser les tables, on peut utiliser une requête UNION:


SELECT CodeProduit, 1 As Semaine, S1 As Valeur FROM table2
UNION ALL
SELECT CodeProduit, 2, S2 FROM table2
UNION ALL
SELECT CodeProduit, 3, S3 FROM table2
...
UNION ALL
SELECT CodeProduit, 52, S52 FROM table2



puis, faire une table de ce résultat et indexer CodeProduit ainsi que
Semaine.

(Faire quelque chose de semblable pour table1, il va de soi).



Espérant être utile,
Vanderghast, Access MVP



"Pascal" wrote in message
news:
Bonjour,
y a t'il quelqu'un qui puisse m'aider ?
Par avance merci pour votre aide.
Pascal



"Pascal" a écrit dans le message de
news:%23OZpD$
Bonjour à tous,
je suis confronté à un problème de calcul matriciel.
Je possède 2 tables et je voudrai les multiplier entres elle et mettre
le


résultats dan sune 3 ème table
Je m'explique :

Table1 : Voici les noms des champs :
CodeProduit, SemaineX, semaineX+1,semaineX+2......semaineX+N

x est variable en fonction de la date du jour et contient en principe le


de la semaine courante
N peut atteindre 20
Le nom des champs est cette forme pour les semaines : S1, S2,S5,S6 (il
se


peut qu'il y ai des n° de semaine absent).


Table 2 :
CodeProduit,S0,S1,S2,S3,S4

Codeproduit contient la même information que dans la table1 (le nb de
code


produit peut être variable dans Table1, mais toutes les possibilité
possibles sont dans la table2).


Ce que je voudai faire c'est pour chaque codeProduit (j'en ai un
30taine)


faire une multiplication entre SemaineX+1 et S1, Semaine X+2 et
S2.......


Et écrire le tout dans la table T3 qui doit reprendre le même noms
champs


que la table Table1.

J'avais bien pensé à le faire avec Excel, mais du fait du nb de
CodeProduit

variable cela ne marche pas.

Si quelqu'un pouvait m'aider car je n'ai pas suffisament de
connaissances


en
VB
Par avance merci.








Avatar
Pascal
Bonjour
Merci beaucoup pour votre aide
Pascal
"Michel Walsh" a écrit dans le message
de news:
Salut,


De ce que je comprends, il faut probablement nécessairement normaliser
et alors, cela devient enfantin.


Table1Normalisée
CodeProduit, Semaine, Valeur ' champs
1010, 22, 55.44$
1010, 23, 56.22$
1010, 27, 51.27$ ' exemple de données.



Naso-digitallement, la requête est alors:


SELECT a.CodeProduit, SUM( a.Valeur * b.Valeur) As produitScalaire
FROM Table1Normalisée As a INNER JOIN Table2Normalisée as b
ON a.CodeProduit=b.CodeProduit AND a.Semaine=b.Semaine
GROUP BY a.CodeProduit



Si une semaine de table2 n'existe pas, pour un code de produit précis, la
semaine est éliminée de la somme, pour ce code de produit précis.




On peut également ajouter une clause WHERE pour limiter les valeurs de
Semaine impliquées:

SELECT a.CodeProduit, SUM( a.Valeur * b.Valeur) As produitScalaire
FROM Table1Normalisée As a INNER JOIN Table2Normalisée as b
ON a.CodeProduit=b.CodeProduit AND a.Semaine=b.Semaine
WHERE a.Semaine IN( 18, 21, 22, 23, 27)
GROUP BY a.CodeProduit




Pour normaliser les tables, on peut utiliser une requête UNION:


SELECT CodeProduit, 1 As Semaine, S1 As Valeur FROM table2
UNION ALL
SELECT CodeProduit, 2, S2 FROM table2
UNION ALL
SELECT CodeProduit, 3, S3 FROM table2
...
UNION ALL
SELECT CodeProduit, 52, S52 FROM table2



puis, faire une table de ce résultat et indexer CodeProduit ainsi que
Semaine.

(Faire quelque chose de semblable pour table1, il va de soi).



Espérant être utile,
Vanderghast, Access MVP



"Pascal" wrote in message
news:
Bonjour,
y a t'il quelqu'un qui puisse m'aider ?
Par avance merci pour votre aide.
Pascal



"Pascal" a écrit dans le message de
news:%23OZpD$
Bonjour à tous,
je suis confronté à un problème de calcul matriciel.
Je possède 2 tables et je voudrai les multiplier entres elle et mettre
le


résultats dan sune 3 ème table
Je m'explique :

Table1 : Voici les noms des champs :
CodeProduit, SemaineX, semaineX+1,semaineX+2......semaineX+N

x est variable en fonction de la date du jour et contient en principe le


de la semaine courante
N peut atteindre 20
Le nom des champs est cette forme pour les semaines : S1, S2,S5,S6 (il
se


peut qu'il y ai des n° de semaine absent).


Table 2 :
CodeProduit,S0,S1,S2,S3,S4

Codeproduit contient la même information que dans la table1 (le nb de
code


produit peut être variable dans Table1, mais toutes les possibilité
possibles sont dans la table2).


Ce que je voudai faire c'est pour chaque codeProduit (j'en ai un
30taine)


faire une multiplication entre SemaineX+1 et S1, Semaine X+2 et
S2.......


Et écrire le tout dans la table T3 qui doit reprendre le même noms
champs


que la table Table1.

J'avais bien pensé à le faire avec Excel, mais du fait du nb de
CodeProduit

variable cela ne marche pas.

Si quelqu'un pouvait m'aider car je n'ai pas suffisament de
connaissances


en
VB
Par avance merci.