Bonjour le forum,
j'ai un problème de déclaration de variable pour récupérer le résultat d'une fonction, qui est un tableau.
Un exemple concret :
J'utilise une fonction qui liste dans un tableau tous les dossiers d'un répertoire dont on spécifie le chemin en paramètre :
Function ChercherRépertoire(MyPath As String) As Variant 'La fonction renvoie un tableau
Dim MyName As String
Dim MaListe() As String
Dim a As Integer
a = 0
MyName = Dir(MyPath, vbDirectory)
Do While MyName <> ""
' Ignore le répertoire courant et le répertoire contenant le répertoire courant
If MyName <> "." And MyName <> ".." Then
' Utilise une comparaison au niveau du bit pour vérifier que MyName est un répertoire.
If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
ReDim Preserve MaListe(a)
MaListe(a) = MyName
a = a + 1
End If '
End If
MyName = Dir ' Extrait l'entrée suivante
Loop
If a = 0 Then
ReDim Preserve MaListe(0)
End If
ChercherRépertoire = MaListe
End Function
J'appelle donc cette fonction dans une routine, afin de récupérer mon tableau pour un chemin spécifique :
Sub test()
tableau = ChercherRépertoire("D:\test_macro\")
End Sub
Ce code fonctionne, cependant comme j'utilise tout le temps "Option Explicit" dans mes macros, je dois donc déclarer ma variable "tableau". Mais si je la déclare en Variant, cela ne marche pas, j'ai l'erreur d’exécution "Incompatibilité de type" :
Sub test()
Dim tableau() As Variant '<--- Comment déclarer le tableau ??
tableau = ChercherRépertoire("D:\test_macro\")
End Sub
Comment doit-être déclarer la variable "tableau" ?
Merci d'avance pour votre aide