1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| Option Explicit ' Produit Scalaire d'un vecteur par chaque colonne d'un tableau
' ============== Description de la feuille Besoin source
Public Const rowNeedStart = 243 ' Vecteur source B243:B266
Public Const rowNeedEnd = 266
Public Const colNeed = 2 ' B
' ============== Description de la feuille Effet source
Public Const rowEffectStart = 96 ' Tableau source D96:J119 à balayer par colonne
Public Const rowEffectEnd = 119
Public Const colEffectStart = 4 ' D
Public Const colEffectEnd = 10 ' J
' ============== Description de la feuille TXSRGB cible
Public Const rowDotStart = 1 ' Première rangée du résultat du produit scalaire
Public Const rowDotEnd = colEffectEnd - colEffectStart + 1 ' 7
Public Const colDotProduct = 9 ' I
Sub troitab() ' Point d'entrée principal du Produit Scalaire entre deux vecteurs
SetFormulaDotProduct ThisWorkbook.Worksheets("besoin"), ThisWorkbook.Worksheets("effet"), _
ThisWorkbook.Worksheets("TXSRGB") ' Résultat cible
End Sub
' Ecrire la formule du produit scalaire du vecteur sheetBesoin par le tableau sheetEffet
' dans la feuilel résultat sheetTarget
Sub SetFormulaDotProduct(sheetBesoin As Worksheet, sheetEffet As Worksheet, sheetTarget As Worksheet)
Const strSumProd = "=SUMPRODUCT(" ' Dans un Excel français, cela pourrait être "=sommeprod("
Dim strFormula As String, indRow As Long, rngNeed As Range, rngEffect As Range
With sheetBesoin ' Vecteur source fixe
Set rngNeed = .Range(.Cells(rowNeedStart, colNeed), .Cells(rowNeedEnd, colNeed))
End With
With sheetEffet ' Tableau source à balayer par colonne
Set rngEffect = .Range(.Cells(rowEffectStart, colEffectStart), .Cells(rowEffectEnd, colEffectEnd))
End With
For indRow = rowDotStart To rowDotEnd
strFormula = strSumProd + rngNeed.Address(ReferenceStyle:=xlR1C1, External:=True) + "," + _
rngEffect.Columns(indRow).Address(ReferenceStyle:=xlR1C1, External:=True) + ")"
sheetTarget.Cells(indRow, colDotProduct).FormulaR1C1 = strFormula
Next
End Sub |
Partager