Ouverture d'une boîte de dialogue

David92Fr

XLDnaute Nouveau
Bonjour à tous,

Sur un userform, j'ai un bouton que j'aimerais paramètrer pour qu'il me permette d'ouvrir n'importe quel types de documents (xl., text, doc, pdf....).

En d'autres termes, je clique sur mon bouton et j'ai accès à la boîte de dialogue windows "parcourir". J'ai bien le code pour ouvrir des fichiers Excel mais pas pour les autres sources.

Quel code pourrais-je utiliser ?

Merci de votre aide...

David
 
C

Compte Supprimé 979

Guest
Re : Ouverture d'une boîte de dialogue

Salut David92Fr,

Tu peux utiliser ce code que j'avais récupérer il y'a fort longtemps sur le site de Ce site n'existe plus;)

Code:
Option Explicit
 
Declare Function ShellExecute Lib "shell32.dll" Alias _
       "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation _
       As String, ByVal lpFile As String, ByVal lpParameters _
       As String, ByVal lpDirectory As String, ByVal nShowCmd _
       As Long) As Long
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

Sub OpenAFile()
Dim sFilter$, sDefNom$, sInitRep$, sNomDial$, sFichToOpen$
  
  ' Paramètres de la boite de dialogue
  sFilter = "Tous les fichiers (*.*)" & Chr(0) & "*.*" & Chr(0)
  ' Nom du fichier par défaut
  sDefNom = ""
  sInitRep = "C:\"
  sNomDial = "Choisissez le fichier à ouvrir"
  
  ' Appel puis ouverture du fichier si sélection
  sFichToOpen = GetFileName(sFilter, sDefNom, sInitRep, sNomDial)
  If sFichToOpen <> "" Then
    ShellExecute 0, "open", sFichToOpen, "", "", 5
  End If
End Sub
Function GetFileName(sFilter As String, sDefaultFile As String, sInitialDir As String, sTitle As String) As String
Dim OpenFile As OPENFILENAME
Dim lReturn As Long
  With OpenFile
    .lStructSize = Len(OpenFile)
    .lpstrFilter = sFilter
    .nFilterIndex = 1
    .lpstrFile = sDefaultFile & String(256 - Len(sDefaultFile), 0)
    .nMaxFile = Len(OpenFile.lpstrFile) - 1
    .lpstrFileTitle = OpenFile.lpstrFile
    .nMaxFileTitle = OpenFile.nMaxFile
    .lpstrInitialDir = sInitialDir
    .lpstrTitle = sTitle
    .flags = 0
  End With
  lReturn = GetOpenFileName(OpenFile)
  If lReturn = 0 Then
    GetFileName = ""
  Else
     GetFileName = Trim(OpenFile.lpstrFile)
  End If
End Function

Voilà :D
 

David92Fr

XLDnaute Nouveau
Re : Ouverture d'une boîte de dialogue

Waouh !!! Merci beaucoup...

Trop compliqué pour moi à utiliser :eek: ! En fait, j'utilise quelque chose de très simple :

Private Sub CommandButton3_Click()
Application.Dialogs(xlDialogOpen).Show
Navigateur.Hide

End Sub

Je voulais savoir si en repartant de cela, il y avait un moyen d'ouvrir plus d'extensions.... ?

David
 
C

Compte Supprimé 979

Guest
Re : Ouverture d'une boîte de dialogue

Re,

Sauf que comme tu te trouves dans Excel, si tu n'utilises pas la méthode que je t'ai donné, ca ne marchera pas !

Car : Application.Dialogs(xlDialogOpen).Show ou Application.Dialogs(xlDialogOpen).Show "*.*"

Demandera toujours à Excel (Application) d'ouvrir le fichier :rolleyes:

Voilà ;)
 

Luki

XLDnaute Accro
Re : Ouverture d'une boîte de dialogue

Re

Bruno, c'est vrai, je n'avais pas vu plus loin que le bout de mon nez! :(
Ouvrir un pdf avec excel, si c'était possible simplement, ça se saurait!

Merci pour le code, à réutiliser en temps utile.
 

Statistiques des forums

Discussions
312 609
Messages
2 090 202
Membres
104 451
dernier inscrit
scp9990