VBA – Retourner un Tableau avec une Fonction

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

David Gagnon

Last updated on décembre 23, 2021

Cet article montre comment retourner un tableau à l’aide d’une fonction VBA.

Fonction VBA qui Retourne un Tableau

Lorsque vous utilisez des fonctions pour retourner des tableaux, je recommande fortement de déclarer les tableaux avec le type Variant:

   Function RetournerUnTableau() As Variant

   End Function

Il est plus facile de travailler avec des tableaux de type Variant. La taille du tableau devient moins importante.

Exemples de Fonctions Retournant un Tableau

Voici un exemple d’une fonction qui renvoie un tableau :

Function RetournerUnTableau() As Variant
    Dim tempTableau As Variant
    
    'Création d'un nouveau tableau temporaire
    ReDim tempTableau(1 To 3, 1 To 2)
    
    'Assignation des valeurs dans le tableau
    tempTableau(1, 1) = "Steve"
    tempTableau(1, 2) = "Johnson"
    tempTableau(2, 1) = "Ryan"
    tempTableau(2, 2) = "Johnson"
    tempTableau(3, 1) = "Andrew"
    tempTableau(3, 2) = "Scott"
    
    'Retourne le tableau de sortie
    RetournerUnTableau = tempTableau
    
End Function
 
Sub TestTransposerTableau()
    Dim tableauSortie As Variant
    
    'Appele la fonction RetournerUnTableau
    tableauSortie = RetournerUnTableau()
    
    'Affiche une des entrée du tableau retourné
    MsgBox tableauSortie(2, 1)
 
End Sub

Remarquez que nous avons déclaré les tableaux avec le type de données = variant pour éviter les problèmes de taille.

Cet exemple prend un tableau en entrée, transpose le tableau et retourne le nouveau tableau transposé :

Function TransposerTableau(MonTableau As Variant) As Variant
    Dim x As Long, y As Long
    Dim maxX As Long, minX As Long
    Dim maxY As Long, minY As Long
    
    Dim tempTableau As Variant
    
    'Obtient les limites inférieures et supérieures du tableau
    maxX = UBound(MonTableau, 1)
    minX = LBound(MonTableau, 1)
    maxY = UBound(MonTableau, 2)
    minY = LBound(MonTableau, 2)
    
    'Création d'un nouveau tableau temporaire
    ReDim tempTableau(minX To maxX, minY To maxX)
    
    'Transpose le tableau
    For x = minX To maxX
        For y = minY To maxY
            tempTableau(y, x) = MonTableau(x, y)
        Next y
    Next x
    
    'Retourne le tableau transposé
    TransposerTableau = tempTableau
    
End Function

Sub TestTransposerTableau()
    Dim testTableau(1 To 3, 1 To 2) As Variant
    Dim tblTransposé As Variant
    
    'Assign Array Values
    testTableau(1, 1) = "Steve"
    testTableau(1, 2) = "Johnson"
    testTableau(2, 1) = "Ryan"
    testTableau(2, 2) = "Johnson"
    testTableau(3, 1) = "Andrew"
    testTableau(3, 2) = "Scott"
    
    'Call Transpose Function
    tblTransposé = TransposerTableau(testTableau)
    
    'Test Output
    MsgBox tblTransposé(2, 1)

End Sub

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro - A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users! vba save as


Learn More!
vba-free-addin

Module Complémentaire d'Exemples de Code VBA

Accédez facilement à tous les exemples disponibles sur le site.

Naviguez simplement dans le menu, cliquez, et le code sera inséré directement dans votre module. Module complémentaire .xlam.

(Aucune installation requise!)

Téléchargement gratuit

Retour aux exemples de code VBA