VBA – Retourner un Tableau avec une Fonction
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!Learn More!