VBA - Optimisation récupération de noms dans une combobox

mathiouze22

XLDnaute Junior
Bonjour à tous,

Je suis un utilisateur plutôt débutant de VBa et j'ai adapté une macro vue sur Internet à mon besoin, à savoir :
récupérer les noms de tous les fichiers présents dans un répertoire, et les ajouter à une combobox lors de l'initialisation d'un USF.

Cela fonctionne à priori bien sauf que c'est d'une lenteur folle et comme l'outil est déstiné à être utilisé avec un client au téléphone, on ne peut pas se permettre un temps de réponse aussi long

Je vous mets ci-dessous le code en question pour voir si qq'un saurait améliorer ma création très artisanale :s

Code:
Private Sub UserForm_Initialize()
y = ActiveWorkbook.FullName  'recupere le chemin du fichier
h = ActiveWorkbook.Name  'recupere le nom du fichier
lg = Len(h) 'len=longueur
chemin = Mid(y, 1, Len(y) - Len(h))

Dim fso, f As Object
Set fso = CreateObject("Scripting.FileSystemObject")
For Each f In fso.GetFolder(chemin).Files
   ComboBox1.AddItem f.Name
Next f
End Sub

merci par avance :)
 
Dernière édition:

mathiouze22

XLDnaute Junior
Re : VBA - Optimisation récupération de noms dans une combobox

Bonjour pierrejean et merci pour la rapidité de la réponse,

Cela ne fonctionne pas : la combobox est alimenté d'un champ vide et quand je regarde la valeur de x, ca me remonte le nom d'un des fichiers du répertoire :s

edit : pardon, je viens de voir ma boulette et en fait cela marche parfaitement !!!
c'est génial, merci bcp :)
PI, wend ca sert à quoi ?
 
Dernière édition:

mathiouze22

XLDnaute Junior
Re : VBA - Optimisation récupération de noms dans une combobox

je reviens pour un petit tour pour encore optimiser la macro :
est-il possible de récupérer le nom des répertoires en plus des fichiers ?
j'ai essayé en supprimant le "*" dans la fonction Dir() mais cela ne fonctionne pas.

Code:
Est ce que quelqu'un aurait une idée ?
Pour rappel, le code en question
Private Sub UserForm_Initialize()
x = Dir(ThisWorkbook.Path & "\*.*")
While x <> ""
 Me.ListBox1.AddItem x
  x = Dir
Wend
End Sub
 

tototiti2008

XLDnaute Barbatruc
Re : VBA - Optimisation récupération de noms dans une combobox

Re,

Oui, comme quoi moi non plus je n'avais pas bien relu ;)

essaye ça
Code:
Private Sub UserForm_Initialize()
Dim FSO As Object, Doss As Object
    Set FSO = CreateObject("Scripting.Filesystemobject")
        For Each Doss In FSO.getfolder(ThisWorkbook.Path).SubFolders
            Me.ListBox1.AddItem Doss.Name
        Next
    Set FSO = Nothing
Set Doss = Nothing
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 938
Messages
2 093 757
Membres
105 811
dernier inscrit
alnrochu