Function VBA pour créer un tableau variable et le retourner dans une feuille

JFLord

XLDnaute Nouveau
Bonjour tout le monde,

J'ai créé le code suivant et je cherche à retourner un tableau dans une feuille excel à partir d'une function vba.

j'ai exactement l'exemple en pièce jointe... Je dois faire la somme des deux tableaux et me retourner une matrice des sommes des cellules de même addresse.

Je ne comprends pas pourquoi ma function ne fonctionne pas..

Quelqu'un peut m'aider?
 

Pièces jointes

  • Classeur1.xlsm
    14.6 KB · Affichages: 76
  • Classeur1.xlsm
    14.6 KB · Affichages: 82
  • Classeur1.xlsm
    14.6 KB · Affichages: 76

Mytå

XLDnaute Occasionnel
Re : Function VBA pour créer un tableau variable et le retourner dans une feuille

Salut le forum

Ta fonction modifiée
Code:
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
Sélectionne E9:G10 et valide la formule par Ctrl + Shift + Enter
Code:
=fnSomme($A$7:$C$8;$A$11:$C$12)
Mytå
 

Mytå

XLDnaute Occasionnel
Re : Function VBA pour créer un tableau variable et le retourner dans une feuille

Re le forum

Code:
Dim vTableau(1 To 3, 1 To 2) As Variant
par
Dim vTableau(1 To 2, 1 To 3) As Variant

Code:
nombreA = plageA.Range.Cells(i, j).Value
par
nombreA = plageA.Cells(i, j).Value
Mytå
 

Discussions similaires

Statistiques des forums

Discussions
312 765
Messages
2 091 901
Membres
105 096
dernier inscrit
CHOPIN