[Résolu par Roland_M] Boîte de dialogue ouvrir(Tous types de fichiers)

Lone-wolf

XLDnaute Barbatruc
Bonjour à tous,


Code:
Sub Ouvrir_Fichier()
Dim Fichier As Variant
ChDir "D:\"
Fichier = Application.GetOpenFilename _
(Title:="Ouvrir", _
FileFilter:="Tous les fichiers (*.*) (*.*),")
If Fichier = False Then
MsgBox "Pas de fichier sélectionné.", , "Microsoft"
Exit Sub
Else
Workbooks.Open Dir(Fichier)
End If
End Sub

Malgré le filtre (*.*), impossible d'ouvrir Word, NotePad etc. . Comment ouvrir tous les formats de fichier?



A+ :cool:
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Boîte de dialogue ouvrir(Tous types de fichiers)

Re
Je ne sais pas répondre à cette question, bien que un VBScript me paraitrai plus adapté.
De toute façon dans ton code il y a
Code:
Workbooks.Open Dir(Fichier)
Ce qui réduit le champs des possibles.

En attendant d'autres réponses.

Cordialement
 

MJ13

XLDnaute Barbatruc
Re : Boîte de dialogue ouvrir(Tous types de fichiers)

Bonjour Lone, Efgé

Pour ce genre de problème, en général, je pars sur un code de ce type (voir dans le fichier joint).

Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'MJ
Cancel = True
Ext = Right(ActiveCell, 4): NFAO = ActiveCell
'Trouve Nom_Programme
LigT = ThisWorkbook.Sheets("ListeExtensionTest").Range("Zoneext").Find(Ext).Row
Nom_Programme = ThisWorkbook.Sheets("ListeExtensionTest").Cells(LigT, 2)
Shell (Nom_Programme & " " & Chr(34) & NFAO & Chr(34)), vbMaximizedFocus
End Sub
 

Pièces jointes

  • Excel_Ouvre_Sur_Extension_MJ.xlsm
    20.4 KB · Affichages: 30

Lone-wolf

XLDnaute Barbatruc
Re : Boîte de dialogue ouvrir(Tous types de fichiers)

Re Efgé,

j'ai trouvé ceci chez Frédéric Sigonneau :

Code:
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)
  sDefNom = "MonFichierParDéfaut.xyz"
  sInitRep = "D:\"
  sNomDial = "Essai 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

Mais là encore, il y a un problème avec les classeurs; c'est à dire qu'il ouvre ceux-ci et les referme tout de suite.


A+ :cool:
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : Boîte de dialogue ouvrir(Tous types de fichiers)

re

NON !

quand tu clic dessus ça s'ouvre !
même un pdf !
ou alors j'ai pas compris !?

EDIT: de toutes manières, c'est idem avec un classeur et des liens hypertexte !
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : Boîte de dialogue ouvrir(Tous types de fichiers)

Re Roland,

désolé, mais chez moi ça ne fonctionne pas. J'ai retouver un ancien fichier qui lui m'ouvre bien tous les fichiers, mais j'aimerais éviter de lister.



A+ :cool:
 

Pièces jointes

  • Rechercher-Fichiers.zip
    18.3 KB · Affichages: 21
  • Rechercher-Fichiers.zip
    18.3 KB · Affichages: 25
  • Rechercher-Fichiers.zip
    18.3 KB · Affichages: 20

Roland_M

XLDnaute Barbatruc
Re : Boîte de dialogue ouvrir(Tous types de fichiers)

re

excuses moi mais je n'arrive pas à comprendre ce que tu veux faire !?
je dois être bête !? ou alors qq chose m'échappe !?

tu veux ouvrir des fichiers sans les voir ?
sans liste ?
comment comptes tu faire ?
par quel tour de magie ?

car à par une liste ou une boîte de dialogue qui listera tout de même les fichiers dans un répertoire ...
je vois pas !?
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : Boîte de dialogue ouvrir(Tous types de fichiers)

Re Roland_M,

je crois que tu te mélanges les pinceaux là ;) :eek: . Je cherche à ouvrir Word - Excel - Txt - Pdf etc. avec la BDDG Ouvrir à partir d'Excel.

@MJ13 : Bonsoir Michel. Désolé je n'est pas fait attention à ton poste. Toutes mes excuses. Comme je l'ai dit dans le Post #10, je ne veux pas lister les fichiers, juste les ouvrir avec la BDDG. Mais je vais regarder ton fichier.

EDIT @MJ13 : j'ai un message d'erreur "Fichier introuvable" à la ligne Shell



A+ :cool:
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : Boîte de dialogue ouvrir(Tous types de fichiers)

Re, Bonjour Roland

EDIT @MJ13 : j'ai un message d'erreur "Fichier introuvable" à la ligne Shell

Et tu ne te poses pas la question: "Mais pourquoi, cela ne fonctionne pas?" :confused:.

C'est bien sùr à adapter :).


Sinon le code de Roland doit fonctionner sur le shell et l'hyperlink qui est en relation avec les programmes associées à Windows sur le type d'extension. On doit pouvoir le faire avec le FollowHyperlink .
 

Roland_M

XLDnaute Barbatruc
Re : Boîte de dialogue ouvrir(Tous types de fichiers)

re

je crois que c'est ceci que tu souhaites !? sinon je vois pas !

Code:
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

Sub ShellOuvreFich() ' clic F5 là-dessus !
Dim Fich
Fich = FSelectUnFICH
MsgBox Fich
ShellExecute 0, "open", Fich, "", "", 0
End Sub

Function FSelectUnFICH() As String
With Application.FileDialog(msoFileDialogFilePicker)
 .InitialFileName = ThisWorkbook.Path 'chemin
 .AllowMultiSelect = False 'une seule sélection
 .Filters.Add "Fichiers", "*.*", 1
 '.Filters.Add "Images", "*.gif; *.jpg; *.jpeg", 1
 .Title = "Sélectionnez un Fichier"
 .Show
  If .SelectedItems.Count > 0 Then FSelectUnFICH = .SelectedItems(1) Else FSelectUnFICH = ""
 'ou direct
 'If .Show = -1 Then FSelectUnFICH = .SelectedItems(1) Else FSelectUnFICH = ""
End With
End Function
 

Discussions similaires

Réponses
15
Affichages
832
Réponses
2
Affichages
337

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 868
dernier inscrit
JJV