Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Combobox liste de fichiers et ouverture d'un fichier

14 réponses
Avatar
orlotov
Bonjour à tous,

Je cherche, dans une combobox placée sur une feuille Excel, à lister les fichiers d'un emplacement et ouvrir celui sur lequel clic l'utilisateur.

En scrutant un peu partout j'ai trouvé sur un (vieux) sujet du forum Excel (2005 !) ce code que j'ai adapté à ma situation:

---------------------
Sub listFich()

Dim fs, fso
Dim i As Integer

Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = Application.FileSearch

With fs
.LookIn = "C:\OLGA"
.Filename = "*.xls"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then

For i = 1 To .FoundFiles.Count
ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))
Next i

End If
End With

ComboBox2.ListIndex = 0
End Sub

-------------

Ma combobox est vide lorsque je l'ouvre. Qu'ai-je oublié ? Une autre sub est-elle à ajouter ?
Je vous remercie d'avance de votre aide !

10 réponses

1 2
Avatar
isabelle
bonjour orlotov,

il faut mettre également l'objet Feuille contenant le ComboBox,

Sheets("Feuil1").ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))

et

Sheets("Feuil1").ComboBox2.ListIndex = 0

isabelle

orlotov a écrit :
Bonjour à tous,

Je cherche, dans une combobox placée sur une feuille Excel, à lister les
fichiers d'un emplacement et ouvrir celui sur lequel clic l'utilisateur.

En scrutant un peu partout j'ai trouvé sur un (vieux) sujet du forum Excel
(2005 !) ce code que j'ai adapté à ma situation:

---------------------
Sub listFich()

Dim fs, fso
Dim i As Integer

Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = Application.FileSearch

With fs
.LookIn = "C:OLGA"
.Filename = "*.xls"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then

For i = 1 To .FoundFiles.Count
ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))
Next i

End If
End With

ComboBox2.ListIndex = 0
End Sub

-------------

Ma combobox est vide lorsque je l'ouvre. Qu'ai-je oublié ? Une autre sub
est-elle à ajouter ?
Je vous remercie d'avance de votre aide !


Avatar
orlotov
isabelle a écrit le 07/10/2008 à 01h58 :
bonjour orlotov,

il faut mettre également l'objet Feuille contenant le ComboBox,

Sheets("Feuil1").ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))

et

Sheets("Feuil1").ComboBox2.ListIndex = 0

isabelle

orlotov a écrit :
Bonjour à tous,

Je cherche, dans une combobox placée sur une feuille Excel, à
lister les
fichiers d'un emplacement et ouvrir celui sur lequel clic l'utilisateur.

En scrutant un peu partout j'ai trouvé sur un (vieux) sujet du forum
Excel
(2005 !) ce code que j'ai adapté à ma situation:

---------------------
Sub listFich()

Dim fs, fso
Dim i As Integer

Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = Application.FileSearch

With fs
.LookIn = "C:OLGA"
.Filename = "*.xls"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then

For i = 1 To .FoundFiles.Count
ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))
Next i

End If
End With

ComboBox2.ListIndex = 0
End Sub

-------------

Ma combobox est vide lorsque je l'ouvre. Qu'ai-je oublié ? Une autre
sub
est-elle à ajouter ?
Je vous remercie d'avance de votre aide !





Bonjour Isabelle, merci pour la réponse je viens seulement de la voir je pensais que le site nous avertissait lorsqu'une réponse était postée. J'ai ajouté dans la procédure les 2 lignes que tu m'a données. j'ai maintenant la liste des fichiers qui apparaissent. Super !

il me reste une chose à réaliser : comment puis-je ouvrir un fichier sur lequel je clique dans la combobox ?

Merci encore pour ton aide et pour votre aide
(voici la procédure telle qu'elle est maintenant) :

-------
Sub listFich()

Dim fs, fso
Dim i As Integer

Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = Application.FileSearch

With fs
.LookIn = "Cesarsfc-cicf"
.Filename = "*.xls"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then

For i = 1 To .FoundFiles.Count
Sheets("Feuil1").ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))
ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))

Next i

End If
End With
Sheets("Feuil1").ComboBox2.ListIndex = 0
ComboBox2.ListIndex = 0

End Sub
---------------
Avatar
isabelle
bonjour orlotov,

par exemple ce code doit être copié sur la page code de la feuille contenant le ComboBox,

Private Sub ComboBox2_Change()
Workbooks.Open Filename:="C:OLGA" & Sheets("Feuil1").ComboBox2.Value
End Sub


isabelle

orlotov a écrit :
isabelle a écrit le 07/10/2008 à 01h58 :
bonjour orlotov,

il faut mettre également l'objet Feuille contenant le ComboBox,

Sheets("Feuil1").ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))

et

Sheets("Feuil1").ComboBox2.ListIndex = 0

isabelle

orlotov a écrit :
Bonjour à tous,

Je cherche, dans une combobox placée sur une feuille Excel, à
lister les
fichiers d'un emplacement et ouvrir celui sur lequel clic l'utilisateur.

En scrutant un peu partout j'ai trouvé sur un (vieux) sujet du forum
Excel
(2005 !) ce code que j'ai adapté à ma situation:

---------------------
Sub listFich()

Dim fs, fso
Dim i As Integer

Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = Application.FileSearch

With fs
.LookIn = "C:OLGA"
.Filename = "*.xls"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then

For i = 1 To .FoundFiles.Count
ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))
Next i

End If
End With

ComboBox2.ListIndex = 0
End Sub

-------------

Ma combobox est vide lorsque je l'ouvre. Qu'ai-je oublié ? Une autre
sub
est-elle à ajouter ?
Je vous remercie d'avance de votre aide !





Bonjour Isabelle, merci pour la réponse je viens seulement de la voir je
pensais que le site nous avertissait lorsqu'une réponse était postée. J'ai
ajouté dans la procédure les 2 lignes que tu m'a données. j'ai maintenant la
liste des fichiers qui apparaissent. Super !

il me reste une chose à réaliser : comment puis-je ouvrir un fichier sur lequel
je clique dans la combobox ?

Merci encore pour ton aide et pour votre aide
(voici la procédure telle qu'elle est maintenant) :

-------
Sub listFich()

Dim fs, fso
Dim i As Integer

Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = Application.FileSearch

With fs
LookIn = "Cesarsfc-cicf"
Filename = "*.xls"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then

For i = 1 To .FoundFiles.Count
Sheets("Feuil1").ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))
ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))

Next i

End If
End With
Sheets("Feuil1").ComboBox2.ListIndex = 0
ComboBox2.ListIndex = 0

End Sub
---------------


Avatar
isabelle
peite correction :

Private Sub ComboBox2_Change()
Workbooks.Open Filename:="C:OLGA" & Sheets("Feuil1").ComboBox2.Value
End Sub


isabelle

orlotov a écrit :
isabelle a écrit le 07/10/2008 à 01h58 :
bonjour orlotov,

il faut mettre également l'objet Feuille contenant le ComboBox,

Sheets("Feuil1").ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))

et

Sheets("Feuil1").ComboBox2.ListIndex = 0

isabelle

orlotov a écrit :
Bonjour à tous,

Je cherche, dans une combobox placée sur une feuille Excel, à
lister les
fichiers d'un emplacement et ouvrir celui sur lequel clic l'utilisateur.

En scrutant un peu partout j'ai trouvé sur un (vieux) sujet du forum
Excel
(2005 !) ce code que j'ai adapté à ma situation:

---------------------
Sub listFich()

Dim fs, fso
Dim i As Integer

Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = Application.FileSearch

With fs
.LookIn = "C:OLGA"
.Filename = "*.xls"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then

For i = 1 To .FoundFiles.Count
ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))
Next i

End If
End With

ComboBox2.ListIndex = 0
End Sub

-------------

Ma combobox est vide lorsque je l'ouvre. Qu'ai-je oublié ? Une autre
sub
est-elle à ajouter ?
Je vous remercie d'avance de votre aide !





Bonjour Isabelle, merci pour la réponse je viens seulement de la voir je
pensais que le site nous avertissait lorsqu'une réponse était postée. J'ai
ajouté dans la procédure les 2 lignes que tu m'a données. j'ai maintenant la
liste des fichiers qui apparaissent. Super !

il me reste une chose à réaliser : comment puis-je ouvrir un fichier sur lequel
je clique dans la combobox ?

Merci encore pour ton aide et pour votre aide
(voici la procédure telle qu'elle est maintenant) :

-------
Sub listFich()

Dim fs, fso
Dim i As Integer

Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = Application.FileSearch

With fs
LookIn = "Cesarsfc-cicf"
Filename = "*.xls"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then

For i = 1 To .FoundFiles.Count
Sheets("Feuil1").ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))
ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))

Next i

End If
End With
Sheets("Feuil1").ComboBox2.ListIndex = 0
ComboBox2.ListIndex = 0

End Sub
---------------


Avatar
orlotov
isabelle a écrit le 08/10/2008 à 17h17 :
peite correction :

Private Sub ComboBox2_Change()
Workbooks.Open Filename:="C:OLGA" &
Sheets("Feuil1").ComboBox2.Value
End Sub


isabelle

orlotov a écrit :
isabelle a écrit le 07/10/2008 à 01h58 :
bonjour orlotov,

il faut mettre également l'objet Feuille contenant le ComboBox,

Sheets("Feuil1").ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))

et

Sheets("Feuil1").ComboBox2.ListIndex = 0

isabelle

orlotov a écrit :
Bonjour à tous,

Je cherche, dans une combobox placée sur une feuille Excel, à
lister les
fichiers d'un emplacement et ouvrir celui sur lequel clic l'utilisateur.

En scrutant un peu partout j'ai trouvé sur un (vieux) sujet du forum
Excel
(2005 !) ce code que j'ai adapté à ma situation:

---------------------
Sub listFich()

Dim fs, fso
Dim i As Integer

Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = Application.FileSearch

With fs
.LookIn = "C:OLGA"
.Filename = "*.xls"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then

For i = 1 To .FoundFiles.Count
ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))
Next i

End If
End With

ComboBox2.ListIndex = 0
End Sub

-------------

Ma combobox est vide lorsque je l'ouvre. Qu'ai-je oublié ? Une autre
sub
est-elle à ajouter ?
Je vous remercie d'avance de votre aide !







Bonjour Isabelle, merci pour la réponse je viens seulement de la voir
je
pensais que le site nous avertissait lorsqu'une réponse était
postée. J'ai
ajouté dans la procédure les 2 lignes que tu m'a données.
j'ai maintenant la
liste des fichiers qui apparaissent. Super !

il me reste une chose à réaliser : comment puis-je ouvrir un
fichier sur lequel
je clique dans la combobox ?

Merci encore pour ton aide et pour votre aide
(voici la procédure telle qu'elle est maintenant) :

-------
Sub listFich()

Dim fs, fso
Dim i As Integer

Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = Application.FileSearch

With fs
LookIn = "Cesarsfc-cicf"
Filename = "*.xls"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then

For i = 1 To .FoundFiles.Count
Sheets("Feuil1").ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))
ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))

Next i

End If
End With
Sheets("Feuil1").ComboBox2.ListIndex = 0
ComboBox2.ListIndex = 0

End Sub
---------------





Super ! Ca marche nickel ! Et merci Isabelle de répondre si vite et si justement ! (Tu donne des cours ? ;-))

Je me permets de te demander encore un petit coup de main sur cette combobox...

1-Comment faire pour que la combobox se lance (se mette à jour) dès l'ouverture du classeur ?

2- Comment faire en sorte que cette combobox se mette à jour dès que l'on clike dessus sans avoir à fermer puis ouvrir le classeur à nouveau (dans l'hypothèse ou un nouveau fichier soit apparu dans le repertoire observé) ?

Orlotov (Sébastien c'est plus sympa)
Avatar
isabelle
bonjour Sébastien,

pour mettre à jour les items il faut d'abord vider le Combobox,
il faut ajouter à cela la verification d'une variable public pour que la proc événementiel ne s'exécute pas
lors de la mise à jour. je joint un lien pour un fichier exemple,
j'y ai mit un autre macro qui n'utilise pas la méthode "FileSearch"
qui amha est plus rapide si le répertoire ne contient que des fichiers .xls

http://cjoint.com/?kiv2XPXb6J

bonne lecture
a+
isabelle

Sub listFich()
Dim fs, fso
Dim i As Integer
Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = Application.FileSearch
nettoiFich '<-----------AJOUT
With fs
.LookIn = "C:zaza"
.Filename = "*.xls"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
For i = 1 To .FoundFiles.Count
Sheets("Feuil2").ComboBox1.AddItem fso.GetFileName(.FoundFiles(i))
Next i
End If
End With
Sheets("Feuil2").ComboBox1.ListIndex = 0
End Sub

Sub nettoiFich()
For i = 0 To Sheets("Feuil2").ComboBox1.ListCount - 1
If Sheets("Feuil2").ComboBox1.ListIndex = -1 Then
Sheets("Feuil2").ComboBox1.ListIndex = _
Sheets("Feuil2").ComboBox1.ListCount - 1
End If
Sheets("Feuil2").ComboBox1.RemoveItem (Sheets("Feuil2").ComboBox1.ListIndex)
Next i
Sheets("Feuil2").ComboBox1.Value = ""
End Sub






orlotov a écrit :
isabelle a écrit le 08/10/2008 à 17h17 :
peite correction :

Private Sub ComboBox2_Change()
Workbooks.Open Filename:="C:OLGA" &
Sheets("Feuil1").ComboBox2.Value
End Sub


isabelle

orlotov a écrit :
isabelle a écrit le 07/10/2008 à 01h58 :
bonjour orlotov,

il faut mettre également l'objet Feuille contenant le ComboBox,

Sheets("Feuil1").ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))

et

Sheets("Feuil1").ComboBox2.ListIndex = 0

isabelle

orlotov a écrit :
Bonjour à tous,

Je cherche, dans une combobox placée sur une feuille Excel, à
lister les
fichiers d'un emplacement et ouvrir celui sur lequel clic l'utilisateur.

En scrutant un peu partout j'ai trouvé sur un (vieux) sujet du forum
Excel
(2005 !) ce code que j'ai adapté à ma situation:

---------------------
Sub listFich()

Dim fs, fso
Dim i As Integer

Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = Application.FileSearch

With fs
.LookIn = "C:OLGA"
.Filename = "*.xls"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then

For i = 1 To .FoundFiles.Count
ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))
Next i

End If
End With

ComboBox2.ListIndex = 0
End Sub

-------------

Ma combobox est vide lorsque je l'ouvre. Qu'ai-je oublié ? Une autre
sub
est-elle à ajouter ?
Je vous remercie d'avance de votre aide !






Bonjour Isabelle, merci pour la réponse je viens seulement de la voir
je
pensais que le site nous avertissait lorsqu'une réponse était
postée. J'ai
ajouté dans la procédure les 2 lignes que tu m'a données.
j'ai maintenant la
liste des fichiers qui apparaissent. Super !

il me reste une chose à réaliser : comment puis-je ouvrir un
fichier sur lequel
je clique dans la combobox ?

Merci encore pour ton aide et pour votre aide
(voici la procédure telle qu'elle est maintenant) :

-------
Sub listFich()

Dim fs, fso
Dim i As Integer

Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = Application.FileSearch

With fs
LookIn = "Cesarsfc-cicf"
Filename = "*.xls"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then

For i = 1 To .FoundFiles.Count
Sheets("Feuil1").ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))
ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))

Next i

End If
End With
Sheets("Feuil1").ComboBox2.ListIndex = 0
ComboBox2.ListIndex = 0

End Sub
---------------





Super ! Ca marche nickel ! Et merci Isabelle de répondre si vite et si
justement ! (Tu donne des cours ? ;-))

Je me permets de te demander encore un petit coup de main sur cette
combobox...

1-Comment faire pour que la combobox se lance (se mette à jour) dès l'ouverture
du classeur ?

2- Comment faire en sorte que cette combobox se mette à jour dès que l'on clike
dessus sans avoir à fermer puis ouvrir le classeur à nouveau (dans l'hypothèse
ou un nouveau fichier soit apparu dans le repertoire observé) ?

Orlotov (Sébastien c'est plus sympa)


Avatar
orlotov
isabelle a écrit le 08/10/2008 à 21h58 :
bonjour Sébastien,

pour mettre à jour les items il faut d'abord vider le Combobox,
il faut ajouter à cela la verification d'une variable public pour que la
proc événementiel ne s'exécute pas
lors de la mise à jour. je joint un lien pour un fichier exemple,
j'y ai mit un autre macro qui n'utilise pas la méthode
"FileSearch"
qui amha est plus rapide si le répertoire ne contient que des fichiers
.xls

http://cjoint.com/?kiv2XPXb6J

bonne lecture
a+
isabelle

Sub listFich()
Dim fs, fso
Dim i As Integer
Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = Application.FileSearch
nettoiFich '<-----------AJOUT
With fs
.LookIn = "C:zaza"
.Filename = "*.xls"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
For i = 1 To .FoundFiles.Count
Sheets("Feuil2").ComboBox1.AddItem fso.GetFileName(.FoundFiles(i))
Next i
End If
End With
Sheets("Feuil2").ComboBox1.ListIndex = 0
End Sub

Sub nettoiFich()
For i = 0 To Sheets("Feuil2").ComboBox1.ListCount - 1
If Sheets("Feuil2").ComboBox1.ListIndex = -1 Then
Sheets("Feuil2").ComboBox1.ListIndex = _
Sheets("Feuil2").ComboBox1.ListCount - 1
End If
Sheets("Feuil2").ComboBox1.RemoveItem
(Sheets("Feuil2").ComboBox1.ListIndex)
Next i
Sheets("Feuil2").ComboBox1.Value = ""
End Sub






orlotov a écrit :
isabelle a écrit le 08/10/2008 à 17h17 :
peite correction :

Private Sub ComboBox2_Change()
Workbooks.Open Filename:="C:OLGA" &
Sheets("Feuil1").ComboBox2.Value
End Sub


isabelle

orlotov a écrit :
isabelle a écrit le 07/10/2008 à 01h58 :
bonjour orlotov,

il faut mettre également l'objet Feuille contenant le ComboBox,

Sheets("Feuil1").ComboBox2.AddItem
fso.GetFileName(.FoundFiles(i))

et

Sheets("Feuil1").ComboBox2.ListIndex = 0

isabelle

orlotov a écrit :
Bonjour à tous,

Je cherche, dans une combobox placée sur une feuille Excel,
à
lister les
fichiers d'un emplacement et ouvrir celui sur lequel clic l'utilisateur.

En scrutant un peu partout j'ai trouvé sur un (vieux) sujet du
forum
Excel
(2005 !) ce code que j'ai adapté à ma situation:

---------------------
Sub listFich()

Dim fs, fso
Dim i As Integer

Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = Application.FileSearch

With fs
.LookIn = "C:OLGA"
.Filename = "*.xls"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then

For i = 1 To .FoundFiles.Count
ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))
Next i

End If
End With

ComboBox2.ListIndex = 0
End Sub

-------------

Ma combobox est vide lorsque je l'ouvre. Qu'ai-je oublié ? Une
autre
sub
est-elle à ajouter ?
Je vous remercie d'avance de votre aide !








Bonjour Isabelle, merci pour la réponse je viens seulement de la voir
je
pensais que le site nous avertissait lorsqu'une réponse était
postée. J'ai
ajouté dans la procédure les 2 lignes que tu m'a
données.
j'ai maintenant la
liste des fichiers qui apparaissent. Super !

il me reste une chose à réaliser : comment puis-je ouvrir un
fichier sur lequel
je clique dans la combobox ?

Merci encore pour ton aide et pour votre aide
(voici la procédure telle qu'elle est maintenant) :

-------
Sub listFich()

Dim fs, fso
Dim i As Integer

Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = Application.FileSearch

With fs
LookIn = "Cesarsfc-cicf"
Filename = "*.xls"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then

For i = 1 To .FoundFiles.Count
Sheets("Feuil1").ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))
ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))

Next i

End If
End With
Sheets("Feuil1").ComboBox2.ListIndex = 0
ComboBox2.ListIndex = 0

End Sub
---------------







Super ! Ca marche nickel ! Et merci Isabelle de répondre si vite et si
justement ! (Tu donne des cours ? ;-))

Je me permets de te demander encore un petit coup de main sur cette
combobox...

1-Comment faire pour que la combobox se lance (se mette à jour)
dès l'ouverture
du classeur ?

2- Comment faire en sorte que cette combobox se mette à jour dès
que l'on clike
dessus sans avoir à fermer puis ouvrir le classeur à nouveau
(dans l'hypothèse
ou un nouveau fichier soit apparu dans le repertoire observé) ?

Orlotov (Sébastien c'est plus sympa)





Bonjour Isabelle, merci pour ta réponse. J'ai ajouté la proc. "nettoiFich" . J'ai 2 pb que je n'arrive pas é résoudre bien qu'ayant cherché difféntes solutions...

1- Parfois j'ai un message d'erreur me disant que le fichier ".xls" n'existe pas bien qu'il existe à l'endroit désigné
2- Je ne parviens à faire se remplir la combobox dès l'ouverture du fichier Excel et à ouvrir un fichier : je dois ouvrir VBA et lancer manuellement la procédure Listfich (F5)

Je vais essayer, quand cela fonctionnera, la solution que tu m'a donnée dans le fichier joint pour accélerer la recherche des xls.

(Ci-dessous les 3 procédures qui sont dans Feuil1) :

Merci encore pour ton aide précieuse !

Sébastien

-----------------------------------------
Sub listFich()
Dim fs, fso
Dim i As Integer
Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = Application.FileSearch
nettoiFich '<-----------AJOUT
With fs
.LookIn = "Cesarsfc-cicfCICF 2008-Envoi ACPACHATS-DEPENSESSD101-DEP"
.Filename = "*.xls"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
For i = 1 To .FoundFiles.Count
Sheets("Feuil1").ComboBox1.AddItem fso.GetFileName(.FoundFiles(i))
Next i
End If
End With
Sheets("Feuil1").ComboBox1.ListIndex = 0
End Sub
----------------------------------------
Sub nettoiFich()
For i = 0 To Sheets("Feuil1").ComboBox1.ListCount - 1
If Sheets("Feuil1").ComboBox1.ListIndex = -1 Then
Sheets("Feuil1").ComboBox1.ListIndex = _
Sheets("Feuil1").ComboBox1.ListCount - 1
End If
Sheets("Feuil1").ComboBox1.RemoveItem (Sheets("Feuil1").ComboBox1.ListIndex)
Next i
Sheets("Feuil1").ComboBox1.Value = ""
End Sub
----------------------------------------
Private Sub ComboBox1_Change()
Workbooks.Open Filename:="Cesarsfc-cicfCICF 2008-Envoi ACPACHATS-DEPENSESCesarSFC-CICFCICF 2008-Envoi ACPACHATS-DEPENSESSD101-DEP" & Sheets("Feuil1").ComboBox1.Value
End Sub
Avatar
orlotov
isabelle a écrit le 08/10/2008 à 21h58 :
bonjour Sébastien,

pour mettre à jour les items il faut d'abord vider le Combobox,
il faut ajouter à cela la verification d'une variable public pour que la
proc événementiel ne s'exécute pas
lors de la mise à jour. je joint un lien pour un fichier exemple,
j'y ai mit un autre macro qui n'utilise pas la méthode
"FileSearch"
qui amha est plus rapide si le répertoire ne contient que des fichiers
.xls

http://cjoint.com/?kiv2XPXb6J

bonne lecture
a+
isabelle

Sub listFich()
Dim fs, fso
Dim i As Integer
Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = Application.FileSearch
nettoiFich '<-----------AJOUT
With fs
.LookIn = "C:zaza"
.Filename = "*.xls"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
For i = 1 To .FoundFiles.Count
Sheets("Feuil2").ComboBox1.AddItem fso.GetFileName(.FoundFiles(i))
Next i
End If
End With
Sheets("Feuil2").ComboBox1.ListIndex = 0
End Sub

Sub nettoiFich()
For i = 0 To Sheets("Feuil2").ComboBox1.ListCount - 1
If Sheets("Feuil2").ComboBox1.ListIndex = -1 Then
Sheets("Feuil2").ComboBox1.ListIndex = _
Sheets("Feuil2").ComboBox1.ListCount - 1
End If
Sheets("Feuil2").ComboBox1.RemoveItem
(Sheets("Feuil2").ComboBox1.ListIndex)
Next i
Sheets("Feuil2").ComboBox1.Value = ""
End Sub






orlotov a écrit :
isabelle a écrit le 08/10/2008 à 17h17 :
peite correction :

Private Sub ComboBox2_Change()
Workbooks.Open Filename:="C:OLGA" &
Sheets("Feuil1").ComboBox2.Value
End Sub


isabelle

orlotov a écrit :
isabelle a écrit le 07/10/2008 à 01h58 :
bonjour orlotov,

il faut mettre également l'objet Feuille contenant le ComboBox,

Sheets("Feuil1").ComboBox2.AddItem
fso.GetFileName(.FoundFiles(i))

et

Sheets("Feuil1").ComboBox2.ListIndex = 0

isabelle

orlotov a écrit :
Bonjour à tous,

Je cherche, dans une combobox placée sur une feuille Excel,
à
lister les
fichiers d'un emplacement et ouvrir celui sur lequel clic l'utilisateur.

En scrutant un peu partout j'ai trouvé sur un (vieux) sujet du
forum
Excel
(2005 !) ce code que j'ai adapté à ma situation:

---------------------
Sub listFich()

Dim fs, fso
Dim i As Integer

Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = Application.FileSearch

With fs
.LookIn = "C:OLGA"
.Filename = "*.xls"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then

For i = 1 To .FoundFiles.Count
ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))
Next i

End If
End With

ComboBox2.ListIndex = 0
End Sub

-------------

Ma combobox est vide lorsque je l'ouvre. Qu'ai-je oublié ? Une
autre
sub
est-elle à ajouter ?
Je vous remercie d'avance de votre aide !








Bonjour Isabelle, merci pour la réponse je viens seulement de la voir
je
pensais que le site nous avertissait lorsqu'une réponse était
postée. J'ai
ajouté dans la procédure les 2 lignes que tu m'a
données.
j'ai maintenant la
liste des fichiers qui apparaissent. Super !

il me reste une chose à réaliser : comment puis-je ouvrir un
fichier sur lequel
je clique dans la combobox ?

Merci encore pour ton aide et pour votre aide
(voici la procédure telle qu'elle est maintenant) :

-------
Sub listFich()

Dim fs, fso
Dim i As Integer

Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = Application.FileSearch

With fs
LookIn = "Cesarsfc-cicf"
Filename = "*.xls"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then

For i = 1 To .FoundFiles.Count
Sheets("Feuil1").ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))
ComboBox2.AddItem fso.GetFileName(.FoundFiles(i))

Next i

End If
End With
Sheets("Feuil1").ComboBox2.ListIndex = 0
ComboBox2.ListIndex = 0

End Sub
---------------







Super ! Ca marche nickel ! Et merci Isabelle de répondre si vite et si
justement ! (Tu donne des cours ? ;-))

Je me permets de te demander encore un petit coup de main sur cette
combobox...

1-Comment faire pour que la combobox se lance (se mette à jour)
dès l'ouverture
du classeur ?

2- Comment faire en sorte que cette combobox se mette à jour dès
que l'on clike
dessus sans avoir à fermer puis ouvrir le classeur à nouveau
(dans l'hypothèse
ou un nouveau fichier soit apparu dans le repertoire observé) ?

Orlotov (Sébastien c'est plus sympa)





ERRATUM DERNIER MESSAGE...

Isabelle, J'ai réalisé un peu tard que je ferais mieux de me servir de ton fichier.. .Ce que je viens de faire et en effet c'est bien mieux ainsi. Et le Feuil2 est bien !

Je pense pouvoir l'utiliser telle quelle après cette correction que je ne parviens pas à faire :
1- comment remplir la combobox dès l'ouverture du fichier (en fait lancer listFich)

2- comment mettre à jour la combobox sans avoir à appuyer sur un bouton (ex : mise à jour toutes les 5' ou toutes les 60'' ou dès que le répertoire est modifié)...

Je pense j'arrive au but et ton éclairage me permet de progrésser (j'ai bien fait un peu de Pascal lors de mes études... Mais c'est loin et différent malgré tout !)

Sébastien
Avatar
isabelle
bonjour Sébastien,

j'ai modifié cette macro pour la mise à jour automatique du ComboBox

Private Sub ComboBox1_Change()
If checkb = 1 Then Exit Sub
FichierPrincipal = ActiveWorkbook.Name
Workbooks.Open Filename:="C:zaza" & Sheets("Feuil2").ComboBox1.Value
Windows(FichierPrincipal).Activate
listFich2
End Sub

et ajouté celle ci sur la page code de ThisWorkBook pour la mise à jour lors de l'ouverture

Private Sub Workbook_Open()
listFich2
End Sub

http://cjoint.com/?kkqtEfdIQb

dit moi as tu remarqué la différence entre les deux macro listFich et listFich2

ps/ s'il te plait, répond au dessus du message, c'est la coutume sur ce ng.

isabelle

orlotov a écrit :

ERRATUM DERNIER MESSAGE...

Isabelle, J'ai réalisé un peu tard que je ferais mieux de me servir de ton
fichier.. .Ce que je viens de faire et en effet c'est bien mieux ainsi. Et le
Feuil2 est bien !

Je pense pouvoir l'utiliser telle quelle après cette correction que je ne
parviens pas à faire :
1- comment remplir la combobox dès l'ouverture du fichier (en fait lancer
listFich)

2- comment mettre à jour la combobox sans avoir à appuyer sur un bouton (ex :
mise à jour toutes les 5' ou toutes les 60'' ou dès que le répertoire est
modifié)...

Je pense j'arrive au but et ton éclairage me permet de progrésser (j'ai bien
fait un peu de Pascal lors de mes études... Mais c'est loin et différent malgré
tout !)

Sébastien


Avatar
orlotov
isabelle a écrit le 10/10/2008 à 16h19 :
bonjour Sébastien,

j'ai modifié cette macro pour la mise à jour automatique du
ComboBox

Private Sub ComboBox1_Change()
If checkb = 1 Then Exit Sub
FichierPrincipal = ActiveWorkbook.Name
Workbooks.Open Filename:="C:zaza" &
Sheets("Feuil2").ComboBox1.Value
Windows(FichierPrincipal).Activate
listFich2
End Sub

et ajouté celle ci sur la page code de ThisWorkBook pour la mise
à jour lors de l'ouverture

Private Sub Workbook_Open()
listFich2
End Sub

http://cjoint.com/?kkqtEfdIQb

dit moi as tu remarqué la différence entre les deux macro
listFich et listFich2

ps/ s'il te plait, répond au dessus du message, c'est la coutume sur ce
ng.

isabelle

orlotov a écrit :

ERRATUM DERNIER MESSAGE...

Isabelle, J'ai réalisé un peu tard que je ferais mieux de me
servir de ton
fichier.. .Ce que je viens de faire et en effet c'est bien mieux ainsi. Et le
Feuil2 est bien !

Je pense pouvoir l'utiliser telle quelle après cette correction que je
ne
parviens pas à faire :
1- comment remplir la combobox dès l'ouverture du fichier (en fait
lancer
listFich)

2- comment mettre à jour la combobox sans avoir à appuyer sur un
bouton (ex :
mise à jour toutes les 5' ou toutes les 60'' ou dès que le
répertoire est
modifié)...

Je pense j'arrive au but et ton éclairage me permet de
progrésser (j'ai bien
fait un peu de Pascal lors de mes études... Mais c'est loin et
différent malgré
tout !)

Sébastien





Merci Isabelle pour ta réponse. Je viens de prendre en compte tes correction avec ton nouveau fichier. Ca marche nickel. Les 2 lignes que tu a ajoutées dans la proc. "Private Sub ComboBox1_Change()" permettent de laisser le fichier Excel comportant la combobox active ? Où a-t-elle une autre "vertue" ?

Je ne sais pas si ce message s'affichera en début de ta réponse. Sinon comment fait-on ?

Sébastien
1 2