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 !

4 réponses

1 2
Avatar
isabelle
bonjour Sébastien,

oui elle permet de donner le focus au fichier principal pour permettre la mise à jour du comboBox
car sinon le focus est sur le fichier nouvellement ouvert et la on ne peut faire cette mise à jour.
si tu désire que le focus soit mit sur le fichier choisi dans le comboBox il faut modifier comme ceci :

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

on peut ajouter à cela la commende ScreenUpdating pour éviter de voir le passage de l'un à l'autre :

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


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




cela dépend quel navigateur tu utilise pour entrer sur mpfe
si c'est Mozilla Thunderbird
au menu, Outils, Paramètre des comptes, Redaction et Adressage,
coche la case "Citer le message original dans la réponse"
et selectionne sur "Lors de la rédaction : "la réponse commence avant la citation"

dit moi quel navigateur tu utilise si ce n'est pas celui là

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

oui elle permet de donner le focus au fichier principal pour permettre la mise
à jour du comboBox
car sinon le focus est sur le fichier nouvellement ouvert et la on ne peut
faire cette mise à jour.
si tu désire que le focus soit mit sur le fichier choisi dans le
comboBox il faut modifier comme ceci :

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

on peut ajouter à cela la commende ScreenUpdating pour éviter de
voir le passage de l'un à l'autre :

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


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





cela dépend quel navigateur tu utilise pour entrer sur mpfe
si c'est Mozilla Thunderbird
au menu, Outils, Paramètre des comptes, Redaction et Adressage,
coche la case "Citer le message original dans la réponse"
et selectionne sur "Lors de la rédaction : "la réponse
commence avant la citation"

dit moi quel navigateur tu utilise si ce n'est pas celui là

isabelle


Bonjour Isabelle,

J'utilise les site generation-nt.com en direct pour aller sur le forum et pas thunderbird.

merci pour ces améliorations : c'est nickel maintenant. J'ai dupliqué ces codes pour faire plusieurs combobox sur un tableau de bord.

Est-ce que tu sais comment on peut faire pour que la combobox se mette à jour dès que l'on clique dessus de manière à ce que la liste des fichiers déroulée soit celle effectivement qui est la dernière à jour ? J'avaos conservé le bouton qui la mettait à jour dans le fichier que tu m'avais mis en exemple ; je ne sais pas trop comment changer le bouton par la combobox... je tente sans succès.
Avatar
isabelle
bonjour Sébastien,

il y a l'événement GotFocus que tu pourrais utiliser à la place de l'événement Change :

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

pour ce qui est de l'accès au forum, regarde à ce lien : http://www.excelabo.net/mpfe/connexion.php#connexion
bonne lecture !

isabelle

orlotov a écrit :
isabelle a écrit le 10/10/2008 à 19h17 :
bonjour Sébastien,

oui elle permet de donner le focus au fichier principal pour permettre la


mise
à jour du comboBox
car sinon le focus est sur le fichier nouvellement ouvert et la on ne peut
faire cette mise à jour.
si tu désire que le focus soit mit sur le fichier choisi dans le
comboBox il faut modifier comme ceci :

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

on peut ajouter à cela la commende ScreenUpdating pour éviter de
voir le passage de l'un à l'autre :

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


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




cela dépend quel navigateur tu utilise pour entrer sur mpfe
si c'est Mozilla Thunderbird
au menu, Outils, Paramètre des comptes, Redaction et Adressage,
coche la case "Citer le message original dans la réponse"
et selectionne sur "Lors de la rédaction : "la réponse
commence avant la citation"

dit moi quel navigateur tu utilise si ce n'est pas celui là

isabelle


Bonjour Isabelle,

J'utilise les site generation-nt.com en direct pour aller sur le forum et pas
thunderbird.

merci pour ces améliorations : c'est nickel maintenant. J'ai dupliqué ces codes
pour faire plusieurs combobox sur un tableau de bord.

Est-ce que tu sais comment on peut faire pour que la combobox se mette à jour
dès que l'on clique dessus de manière à ce que la liste des fichiers déroulée
soit celle effectivement qui est la dernière à jour ? J'avaos conservé le bouton
qui la mettait à jour dans le fichier que tu m'avais mis en exemple ; je ne sais
pas trop comment changer le bouton par la combobox... je tente sans succès.


Avatar
orlotov
isabelle a écrit le 14/10/2008 à 17h20 :
bonjour Sébastien,

il y a l'événement GotFocus que tu pourrais utiliser à la
place de l'événement Change :

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

pour ce qui est de l'accès au forum, regarde à ce lien :
http://www.excelabo.net/mpfe/connexion.php#connexion
bonne lecture !

isabelle

orlotov a écrit :
isabelle a écrit le 10/10/2008 à 19h17 :
bonjour Sébastien,

oui elle permet de donner le focus au fichier principal pour permettre la



mise
à jour du comboBox
car sinon le focus est sur le fichier nouvellement ouvert et la on ne peut
faire cette mise à jour.
si tu désire que le focus soit mit sur le fichier choisi dans le
comboBox il faut modifier comme ceci :

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

on peut ajouter à cela la commende ScreenUpdating pour éviter
de
voir le passage de l'un à l'autre :

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


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





cela dépend quel navigateur tu utilise pour entrer sur mpfe
si c'est Mozilla Thunderbird
au menu, Outils, Paramètre des comptes, Redaction et Adressage,
coche la case "Citer le message original dans la réponse"
et selectionne sur "Lors de la rédaction : "la
réponse
commence avant la citation"

dit moi quel navigateur tu utilise si ce n'est pas celui là

isabelle



Bonjour Isabelle,

J'utilise les site generation-nt.com en direct pour aller sur le forum et pas
thunderbird.

merci pour ces améliorations : c'est nickel maintenant. J'ai
dupliqué ces codes
pour faire plusieurs combobox sur un tableau de bord.

Est-ce que tu sais comment on peut faire pour que la combobox se mette
à jour
dès que l'on clique dessus de manière à ce que la liste
des fichiers déroulée
soit celle effectivement qui est la dernière à jour ? J'avaos
conservé le bouton
qui la mettait à jour dans le fichier que tu m'avais mis en exemple ;
je ne sais
pas trop comment changer le bouton par la combobox... je tente sans
succès.





Bonjour Isabelle, après quelques semaibes de travail sur l'outil pour lequel j'ai demandé une aide sur ce forum, j'ai bien avancé. La dernière astuce que tu m'a donnée : Private Sub ComboBox1_GotFocus() me renvoi une erreur à l'exécution de la procédure par le module VBA : "erreur d'exécution '9' : l'indice n'appartien pas à la sélection".

Losque je clique sur la combobox, le système me renvoi : "Erreur d'exécution 1004, c:(chemin) introuvable. Pourtant ce chemin existe bien et contient des fichiers xls que je cherche à lister dans la combobox( la procédure fonctionnait avec l'évenement Private Sub ComboBox1_Change()

Que puis-je faire ? Merci encore pour ton aide !
------------
Private Sub ComboBox1_GotFocus()
Application.ScreenUpdating = False
If checkb = 1 Then Exit Sub
FichierPrincipal = ActiveWorkbook.Name
Workbooks.Open Filename:="Cesarsfc-cicfCICF 2008-Envoi ACPACHATS-DEPENSESSD101-DEP" & Sheets("Dépenses achats").ComboBox1.Value
Fichiernouvellementouvert = ActiveWorkbook.Name
Windows(FichierPrincipal).Activate
listFich1
Windows(Fichiernouvellementouvert).Activate
Application.ScreenUpdating = True
End Sub
------------
1 2