j'ai un probleme un peu complexe a resoudre. Je pense m'en tirer en
creant une fonction VBA mais peut etre quelqu'un sur ce forum a une
solution lumineuse.
J'ai deux colonnes
A B
-----------
115 | 9
101 | 8
203 | 7
210 | 6
etc.
et je cherche a creer une troisieme colonne C definie comme telle:
C
-----------------------
115*9
115*8+101*9
115*7+101*8+203*9
115*6+101*7+203*8+210*9
etc.
Le probleme c'est qu'en pratique la colonne B n'est pas 9,8,7,6 mais un
peu plus complexe, et que je n'ai pas besoin de le faire pour 4 lignes
mais pour plus d'une centaine.
En gros dans la colonne C, pour la i-eme ligne, on prend la liste de
A1:A(i-1) dont chaque element a la ligne j est multiplie par l'element
de la colonne B decalle de j.
C'est un peu complexe, mais j'espere avoir ete suffisament clair. Je ne
peux pas faire une formule basique: je ne peux pas mettre 100 additions
dans une seule formule Excel. J'imagine donc faire une formule en VBA
que je nourris de Range(A) et Range(B) et qui me retourne le bon
nombre.
Quelqu'un a-t-il une solution plus intelligente a ce probleme?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Charles
Pour information j'ai resolu le probleme en VBA, mais si quelqu'un a une solution Excel, je suis preneur:
Public Function CX_TO_C123(A As Range, B As Range) As Double Dim nbrow, i As Integer nbrow = A.Rows.Count Dim temptotal As Double temptotal = 0 For i = 1 To nbrow temptotal = temptotal + A.Rows(i).Value * B.Rows(nbrow + 1 - i).Value Next i CX_TO_C123 = temptotal End Function
Pour information j'ai resolu le probleme en VBA, mais si quelqu'un a
une solution Excel, je suis preneur:
Public Function CX_TO_C123(A As Range, B As Range) As Double
Dim nbrow, i As Integer
nbrow = A.Rows.Count
Dim temptotal As Double
temptotal = 0
For i = 1 To nbrow
temptotal = temptotal + A.Rows(i).Value * B.Rows(nbrow + 1 -
i).Value
Next i
CX_TO_C123 = temptotal
End Function
Pour information j'ai resolu le probleme en VBA, mais si quelqu'un a une solution Excel, je suis preneur:
Public Function CX_TO_C123(A As Range, B As Range) As Double Dim nbrow, i As Integer nbrow = A.Rows.Count Dim temptotal As Double temptotal = 0 For i = 1 To nbrow temptotal = temptotal + A.Rows(i).Value * B.Rows(nbrow + 1 - i).Value Next i CX_TO_C123 = temptotal End Function
SL
Bonjour
Avec une formule. Attention j'ai changé l'ordre de la colonne B A B ----------- 115 | 6 101 | 7 203 | 8 210 | 9
en C1:Cx : =SOMMEPROD($A$1:A1;DECALER($B$1;NB(B:B)-LIGNES($A$1:A1);;LIGNES($A$1:A1);))
ça marche ?
Stéphane
"Charles" a écrit dans le message de news:
Pour information j'ai resolu le probleme en VBA, mais si quelqu'un a une solution Excel, je suis preneur:
Public Function CX_TO_C123(A As Range, B As Range) As Double Dim nbrow, i As Integer nbrow = A.Rows.Count Dim temptotal As Double temptotal = 0 For i = 1 To nbrow temptotal = temptotal + A.Rows(i).Value * B.Rows(nbrow + 1 - i).Value Next i CX_TO_C123 = temptotal End Function
Bonjour
Avec une formule.
Attention j'ai changé l'ordre de la colonne B
A B
-----------
115 | 6
101 | 7
203 | 8
210 | 9
en C1:Cx :
=SOMMEPROD($A$1:A1;DECALER($B$1;NB(B:B)-LIGNES($A$1:A1);;LIGNES($A$1:A1);))
ça marche ?
Stéphane
"Charles" <spam@cmichel.net> a écrit dans le message de news:
1128683257.864726.326050@g49g2000cwa.googlegroups.com...
Pour information j'ai resolu le probleme en VBA, mais si quelqu'un a
une solution Excel, je suis preneur:
Public Function CX_TO_C123(A As Range, B As Range) As Double
Dim nbrow, i As Integer
nbrow = A.Rows.Count
Dim temptotal As Double
temptotal = 0
For i = 1 To nbrow
temptotal = temptotal + A.Rows(i).Value * B.Rows(nbrow + 1 -
i).Value
Next i
CX_TO_C123 = temptotal
End Function
Avec une formule. Attention j'ai changé l'ordre de la colonne B A B ----------- 115 | 6 101 | 7 203 | 8 210 | 9
en C1:Cx : =SOMMEPROD($A$1:A1;DECALER($B$1;NB(B:B)-LIGNES($A$1:A1);;LIGNES($A$1:A1);))
ça marche ?
Stéphane
"Charles" a écrit dans le message de news:
Pour information j'ai resolu le probleme en VBA, mais si quelqu'un a une solution Excel, je suis preneur:
Public Function CX_TO_C123(A As Range, B As Range) As Double Dim nbrow, i As Integer nbrow = A.Rows.Count Dim temptotal As Double temptotal = 0 For i = 1 To nbrow temptotal = temptotal + A.Rows(i).Value * B.Rows(nbrow + 1 - i).Value Next i CX_TO_C123 = temptotal End Function
Charles
Bonjour,
je vous remercie pour votre aide. Effectivement cela devrait marcher mais il m'est impossible d'inverser l'ordre de la colonne (la colonne en question est le resultat d'un long calcul et est aussi utilise pour d'autre calculs. Ajoute a cela, le nombre de lignes dans ce tableau doit etre variable et peut etre augmente. En somme je suis coince en ce qui concerne les donnees du probleme.
Charles
Bonjour,
je vous remercie pour votre aide. Effectivement cela devrait marcher
mais il m'est impossible d'inverser l'ordre de la colonne (la colonne
en question est le resultat d'un long calcul et est aussi utilise pour
d'autre calculs. Ajoute a cela, le nombre de lignes dans ce tableau
doit etre variable et peut etre augmente. En somme je suis coince en ce
qui concerne les donnees du probleme.
je vous remercie pour votre aide. Effectivement cela devrait marcher mais il m'est impossible d'inverser l'ordre de la colonne (la colonne en question est le resultat d'un long calcul et est aussi utilise pour d'autre calculs. Ajoute a cela, le nombre de lignes dans ce tableau doit etre variable et peut etre augmente. En somme je suis coince en ce qui concerne les donnees du probleme.