Bonjour
je crée un programme qui renvoie les coefficients diagonaux de trois matrices
j'ai déjà réussi à le faire avec une seule matrice en paramètre. Par exemple pour la matrice suivante :
1 0 2
3 0 4
2 5 8
mon programme renvoie :
1
0
8
j'aimerai le faire avec 3 matrices différentes. J'ai déjà écrit :
Option Explicit
Option Base 1
Function extractDiagonal(matrix_1 As Range, matrix_2 As Range, matrix_3 As Range) As Variant
Dim i, j As Integer
Dim temparray()
'message d'erreur si les paramètres ne sont pas aux bonnes dimensions
If matrix_1.Rows.Count <> matrix_1.Columns.Count Or matrix_2.Rows.Count <> matrix_2.Columns.Count Or matrix_3.Rows.Count <> matrix_3.Columns.Count Then
extractDiagonal = "ERROR: parameter must be a square matrix"
Exit Function 'if the size is not correct, exit now
End If
'message d'erreur si les paramètres ne sont pas aux bonnes dimensions
If matrix_1.Rows.Count <> matrix_2.Rows.Count Or matrix_1.Rows.Count <> matrix_3.Rows.Count Or matrix_2.Rows.Count <> matrix_3.Rows.Count Then
extractDiagonal = "ERROR: parameters must be matrices of same size"
Exit Function
End If
ReDim temparray(matrix_1.Rows.Count, 3) 'redimensionnement de la matrice temporaire
For j = 1 To 3
For i = 1 To matrix_1.Rows.Count 'as the matrix is squared, it doesn't matter if you count rows or columns
temparray(i, j) = matrix_j(i, i) 'c'est ici que j'ai mon soucis, je n'arrive pas à faire comprendre à VBA que matrix_j désigne la matrice_1 puis la matrice_2 et enfin la matrice_3
Next i
Next j
extractDiagonal = temparray
End Function
Existe-t-il un moyen de réaliser cela en passant par une boucle for comme j'ai essayé de le faire ?