OVH Cloud OVH Cloud

Un UserForm qui selectionne un fichier Excel ?

3 réponses
Avatar
YannX
Bonjour,

Là je veux juste "pomper" (oui, je sais, mais c'est histoire de gagner du
temps à mon tour).
Je veux faire un petit écran avec liste déroulante qui permette de choisir
un fichier Excel
parmi ceux existants dans un répertoire (courant ou choisi) [voire avec un
masque] ,
et le renvoyer comme variable partielle de définition d'un nom de champ.....
Vous avez bien compris que c'etait pour completer mon FN_Search

Pendant que je parcours les sites de références, si qq'un a du code dispo.
Merci

3 réponses

Avatar
Vincent.
Bonjour
Dim temp
Dim FileToOpen(i) As String()
temp = Application _
.GetOpenFilename("(*.xls),*.xls", , _
"Choose one or several file(s)", , True)
If VarType(temp) = vbBoolean Then
MsgBox "You should choose at least one file!", _
vbCritical + vbOKOnly
Exit Sub
Else
For i = LBound(temp) To UBound(temp)
ReDim Preserve FileToOpen(0 To i) As String
FileToOpen(i) = temp(i)
Next i
End If

Par exemple...
A+

-----Message d'origine-----
Bonjour,

Là je veux juste "pomper" (oui, je sais, mais c'est
histoire de gagner du

temps à mon tour).
Je veux faire un petit écran avec liste déroulante qui
permette de choisir

un fichier Excel
parmi ceux existants dans un répertoire (courant ou
choisi) [voire avec un

masque] ,
et le renvoyer comme variable partielle de définition
d'un nom de champ.....

Vous avez bien compris que c'etait pour completer mon
FN_Search


Pendant que je parcours les sites de références, si qq'un
a du code dispo.

Merci


.



Avatar
papou
Bonjour
Voici un exemple vite fait à adapter à ton besoin.
Avec donc un Userform1 possédant
- un bouton (CommandButton1)
- une zone de liste (ListeFichiers)
- un label (FichierSelect)
Dans le code du Userform :
'*********Userform ****************
Private Sub CommandButton1_Click()
ListerFichiers "*.*", "D:DOC"
If PasTrouve Then
MsgBox "Aucun fichier trouvé", vbInformation, "Résultat"
Exit Sub
End If
For I = LBound(ListeTrouves) To UBound(ListeTrouves)
ListFichiers.AddItem (ListeTrouves(I))
Next I
Me.Repaint
End Sub
Private Sub ListFichiers_Click()
Me.FichierSelect = ListFichiers.Value
End Sub
'**********Fin Userform ************
un module avec la procédure ci-dessous
'******* Module ************************
Public ListeTrouves()
Public PasTrouve As Boolean
Public Sub ListerFichiers(FiltreRecherche As String, lelecteur As String)
Dim NbFichiers As Long
Erase ListeTrouves
If FiltreRecherche = "" Then FiltreRecherche = "*.*"
With Application.FileSearch
.NewSearch
.LookIn = lelecteur
.Filename = FiltreRecherche
If .Execute = 0 Then
PasTrouve = True
Exit Sub
Else
ReDim ListeTrouves(.FoundFiles.Count)
For NbFichiers = 1 To .FoundFiles.Count
ListeTrouves(NbFichiers) = .FoundFiles(NbFichiers)
Next NbFichiers
.FileType = msoFileTypeAllFiles 'msoFileTypeExcelWorkbooks
End If
End With
End Sub
'******* Fin Module *******************
Lorsque le userform est affiché, cliquer sur le bouton (en adpatant à ton
besoin de recherche)
Si aucun fichier n'est trouvé un message s'affiche
Sinon, la liste est remplie avec les noms de fichiers trouvés
Si on clique sur un nom de fichier, le nom est placé dans la contrôle label.

Cordialement
Pascal

"YannX" a écrit dans le message de
news:%
Bonjour,

Là je veux juste "pomper" (oui, je sais, mais c'est histoire de gagner du
temps à mon tour).
Je veux faire un petit écran avec liste déroulante qui permette de choisir
un fichier Excel
parmi ceux existants dans un répertoire (courant ou choisi) [voire avec un
masque] ,
et le renvoyer comme variable partielle de définition d'un nom de
champ.....

Vous avez bien compris que c'etait pour completer mon FN_Search

Pendant que je parcours les sites de références, si qq'un a du code dispo.
Merci




Avatar
YannX
Merci a vous deux de ces petits exemples,
qui vont me permettre d'exercer mes neurones fatigués.....;-)
@+

"papou" <cestpasbonpapou@çanonplus44.fr> a écrit dans le message de
news:u44P6a%
Bonjour
Voici un exemple vite fait à adapter à ton besoin.
Avec donc un Userform1 possédant
- un bouton (CommandButton1)
- une zone de liste (ListeFichiers)
- un label (FichierSelect)
Dans le code du Userform :
'*********Userform ****************
Private Sub CommandButton1_Click()
ListerFichiers "*.*", "D:DOC"
If PasTrouve Then
MsgBox "Aucun fichier trouvé", vbInformation, "Résultat"
Exit Sub
End If
For I = LBound(ListeTrouves) To UBound(ListeTrouves)
ListFichiers.AddItem (ListeTrouves(I))
Next I
Me.Repaint
End Sub
Private Sub ListFichiers_Click()
Me.FichierSelect = ListFichiers.Value
End Sub
'**********Fin Userform ************
un module avec la procédure ci-dessous
'******* Module ************************
Public ListeTrouves()
Public PasTrouve As Boolean
Public Sub ListerFichiers(FiltreRecherche As String, lelecteur As String)
Dim NbFichiers As Long
Erase ListeTrouves
If FiltreRecherche = "" Then FiltreRecherche = "*.*"
With Application.FileSearch
.NewSearch
.LookIn = lelecteur
.Filename = FiltreRecherche
If .Execute = 0 Then
PasTrouve = True
Exit Sub
Else
ReDim ListeTrouves(.FoundFiles.Count)
For NbFichiers = 1 To .FoundFiles.Count
ListeTrouves(NbFichiers) = .FoundFiles(NbFichiers)
Next NbFichiers
.FileType = msoFileTypeAllFiles 'msoFileTypeExcelWorkbooks
End If
End With
End Sub
'******* Fin Module *******************
Lorsque le userform est affiché, cliquer sur le bouton (en adpatant à ton
besoin de recherche)
Si aucun fichier n'est trouvé un message s'affiche
Sinon, la liste est remplie avec les noms de fichiers trouvés
Si on clique sur un nom de fichier, le nom est placé dans la contrôle
label.


Cordialement
Pascal

"YannX" a écrit dans le message de
news:%
Bonjour,

Là je veux juste "pomper" (oui, je sais, mais c'est histoire de gagner
du


temps à mon tour).
Je veux faire un petit écran avec liste déroulante qui permette de
choisir


un fichier Excel
parmi ceux existants dans un répertoire (courant ou choisi) [voire avec
un


masque] ,
et le renvoyer comme variable partielle de définition d'un nom de
champ.....

Vous avez bien compris que c'etait pour completer mon FN_Search

Pendant que je parcours les sites de références, si qq'un a du code
dispo.


Merci