Bonjour à tous,
comme tu as du vba, un essai avec une fonction personnalisée avec un exemple d'utilisation.
J'ai pris 3 matrices pour l'exemple mais ce n'est pas limité.
Sub test()
Dim mat(1 To 3), result
With Sheets("Feuil2")
mat(1) = .[B3:F10].Value
mat(2) = .[I3:M10].Value
mat(3) = .[P3:T10].Value
result = MaxMinMat(mat)
.[BF3].Resize(UBound(result, 1), UBound(result, 2)) = result
End With
End Sub
Function MaxMinMat(mat)
Dim result(), m As Long, lig As Long, col As Long, col2 As Long
ReDim result(1 To UBound(mat(1), 1), 1 To UBound(mat(1), 2) * 2)
For m = 1 To UBound(mat)
For lig = 1 To UBound(mat(1), 1)
For col = 1 To UBound(mat(1), 2)
col2 = col * 2 + (mat(m)(lig, col) >= 0)
result(lig, col2) = result(lig, col2) + mat(m)(lig, col)
Next col
Next lig
Next m
MaxMinMat = result
End Function
Elle retourne une matrice 2 fois plus large que celles reçues.
Pas de contrôles si toutes les matrices ont bien même taille, à toi de les ajouter si tu le juges utile.
On pourrait la faire appelable depuis une feuille au prix d'une complication. Tu dis si c'est vraiment nécessaire.
eric