Function fnSomme(plageA, plageB)
'Auteur : Jean-Francois Lord
'Cette fonction retourne un tableau VBA contenant la somme matricielle
'des plages A et B.
'Définition des variables
Dim i As Long
Dim j As Long
Dim vTableau(1 To 2, 1 To 3) As Variant
Dim plageAligne As Currency
Dim plageAcolonne As Currency
Dim plageBligne As Currency
Dim plageBcolonne As Currency
Dim nombreA As Currency
Dim nombreB As Currency
'Gestion d'erreur
'Déterminer si les valeurs sont des plages
If TypeName(plageA) <> "Range" Or TypeName(plageB) <> "Range" Then
fnSomme = "La plage est mal définie"
Exit Function
End If
'Déterminer si les deux plages sont de dimension identique
plageAligne = plageA.Cells.Rows.Count
plageAcolonne = plageA.Cells.Columns.Count
plageBligne = plageB.Cells.Rows.Count
plageBcolonne = plageB.Cells.Columns.Count
If plageAligne <> plageBligne Or plageAcolonne <> plageBcolonne Then
fnSomme = "Les plages ne sont pas de même dimensions"
Exit Function
End If
'Création du tableau VBA avec la somme matricielle
For i = 1 To plageAligne
For j = 1 To plageAcolonne
'Définition du nombre de la premiere plage de données
nombreA = plageA.Cells(i, j).Value
'Définition du nombre de la deuxième plage de données
nombreB = plageB.Cells(i, j).Value
'Somme des cellules de même addresse
vTableau(i, j) = nombreA + nombreB
Next j
Next i
'Exportation du tableau vers Excel
fnSomme = vTableau
End Function