ouvrir un fichier avec GetOpenFilename

  • Initiateur de la discussion EricTA
  • Date de début
E

EricTA

Guest
Boujour,
comment utiliser la fonction GetOpenFilename pour afficher seulement les fichiers avec le mot 'toto' ex : *toto*.xls

Private Sub Rechercher_Click()
Dim filetoopen As Variant
Dim fichier As String
fichier = 'c:\\devis\\*' + NomSociété.Value + '*.xls' 'fichier = c:\\devis\\*toto*.xls
filetoopen = Application _
.GetOpenFilename('Classeurs Excel,' + fichier)
End Sub
mais ça ne marche pas il affiche les fichiers du répertoire
Help
Merci
Eric
 
E

eric TA

Guest
Merci, je ne cherche pas à ouvrir un fichier en particulier mais à proposer le choix dans une liste de fichier à ouvrir contenant une chaine de caractere.
ex un fichier comtenant le mot 'toto'
003_toto_342.xsl
453_toto_33.xls
Eric
 

ODVJ

XLDnaute Impliqué
Bonsoir,

je te propose ce code, adapté de http://support.microsoft.com/?kbid=161286 :
Code:
      Option Explicit

       Private Declare Function GetOpenFileName Lib 'comdlg32.dll' Alias _
         'GetOpenFileNameA' (pOpenfilename As OPENFILENAME) As Long

       Private Type OPENFILENAME
         lStructSize As Long
         hwndOwner As Long
         hInstance As Long
         lpstrFilter As String
         lpstrCustomFilter As String
         nMaxCustFilter As Long
         nFilterIndex As Long
         lpstrFile As String
         nMaxFile As Long
         lpstrFileTitle As String
         nMaxFileTitle As Long
         lpstrInitialDir As String
         lpstrTitle As String
         flags As Long
         nFileOffset As Integer
         nFileExtension As Integer
         lpstrDefExt As String
         lCustData As Long
         lpfnHook As Long
         lpTemplateName As String
       End Type

Private Sub mes_devis()
  Dim OpenFile As OPENFILENAME
  Dim lReturn As Long, ctr
  Dim sFilter As String
  OpenFile.lStructSize = Len(OpenFile)
  OpenFile.hwndOwner = Application.hwnd
  OpenFile.hInstance = Application.hInstance
  sFilter = 'mes devis' & Chr(0) & '*toto*.xls' & Chr(0)
  OpenFile.lpstrFilter = sFilter
  OpenFile.nFilterIndex = 1
  OpenFile.lpstrFile = String(257, 0)
  OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
  OpenFile.lpstrFileTitle = OpenFile.lpstrFile
  OpenFile.nMaxFileTitle = OpenFile.nMaxFile
  OpenFile.lpstrInitialDir = 'C:\\Documents and Settings\\Jean\\Mes documents\\'
  OpenFile.lpstrTitle = 'Affichage de mes devis'
  OpenFile.flags = &H200
  lReturn = GetOpenFileName(OpenFile)
  If lReturn = 0 Then
     MsgBox 'Annulation'
  Else
         'MsgBox 'Fichier choisi : ' & Trim(OpenFile.lpstrFile)
  End If
End Sub
j'ai voulu mettre un OpenFile.flags = &H200 pour autoriser la sélection multiple, mais ça ne fonctionne pas bien dans cette version de code.
Donc en mettant OpenFile.flags = 0, le multiselect est perdu mais le fichier est identifié.

ce qu'il faut changer :
[ul]sFilter = 'mes devis' & Chr(0) & '*toto*.xls' & Chr(0)
OpenFile.lpstrInitialDir = 'C:\\Documents and Settings\\Jean\\Mes documents\\'
OpenFilelpstrTitle = 'Affichage de mes devis'[/ul].

A+
 
E

Eric TA

Guest
Merci, ça marche très bien.
Seulement la fonction GetOpenFileName n'ouvre pas la bonne version de Form, la fenetre avec les fichiers et trop petite, mes noms de fichiers sont très long. pouvons nous l'agrandir ou utiliser la fenetre standard de la version 2003?
comme quand on utilise la fonction GetOpenFileName de mon exemple.
Encore Merci
Eric
 

Discussions similaires

Statistiques des forums

Discussions
312 576
Messages
2 089 843
Membres
104 289
dernier inscrit
red123