[VBA-E] Fonction renvoyant un tableau
Bonjour à tous!
Voila, j'essaye d'ecrire une fontion en VBA qui est censé renoyer un tableau.
Cepedant quand je recupere la variable de cette fontion, le compilateur exel me dis "impossible d'affecter à un tableau cette variable".
voila mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| Public Function ListerRep(CheminRepertoire As String) As String()
Dim tableau(100) As String
With Application.FileSearch
.LookIn = CheminRepertoire
.Filename = "*.sce"
If .Execute > 0 Then
MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
Debug.Print .FoundFiles(i)
Next i
Else
MsgBox "There were no files found."
End If
End With
ListerRep = tableau
End Function |
Apres quelques recherches dans les forums, j'ai pu ecrire ca, mais je pense que j'ai du faire une grosse erreur.....
Quelqu'un aurai une idée?
Merci!
RETURN AN ARRAY OF VALUES WITH VBA
FONCTION RETURN ARRAY
Parfaitement possible en vba
Réponse la plus proche possible de la demande
de glycérine
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
'(COLLER DANS UN MODULE VBA .bas, jusqu'à la version MSOFFICE 2003)
Otion Explicit
Public Function ListerRep(CheminRepertoire As String) As Variant
Dim Temp_TableauDynamique() As Variant
Dim x, d, i As Integer
With Application.FileSearch
.LookIn = CheminRepertoire
.fileName = "*.txt"
'Initialise la première case à 0
'NbFoundFiles
ReDim Temp_TableauDynamique(1)
Temp_TableauDynamique(0) = 0
If .Execute > 0 Then
MsgBox "There were " & .FoundFiles.Count & _
" file(s) found with the extension " & .fileName
x = .FoundFiles.Count
'Debug.Print "Nombre de fichiers: " & x
'Redimensionne le tableau
ReDim Temp_TableauDynamique(0 To x)
'InfoNbFilesInThisArray
Temp_TableauDynamique(0) = x
'Remplissage du tableau avec le nom des fichiers txt
For d = 1 To x
Temp_TableauDynamique(d) = CStr(.FoundFiles(d))
'Debug.Print Temp_TableauDynamique(d)
Next d
Else
MsgBox "There were no files found."
End If
End With
ListerRep = Temp_TableauDynamique
End Function
Sub TesterListerRep()
Dim InfoUtilisateur As Variant
Dim Elem1 As Variant
Dim k As Integer
Elem1 = ListerRep("C:\")
'Debug.Print "NbDeFichiersRetournés: " & Elem1(0)
If Elem1(0) > 0 Then
For k = 1 To Elem1(0)
InfoUtilisateur = MsgBox("FichierTrouvé: " & Elem1(k), vbInformation, "LISTE DES FICHIERS")
Next
End If
End Sub |
Bonne journée!;)