Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

  • Initiateur de la discussion Initiateur de la discussion JFLord
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

JFLord

Guest
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

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å
 
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å
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…