Même méthode que Getopenfilename mais pour ouvrir les fichiers.

O

olive

Guest
Bonjour.

J'ai fait de nombreuses recherches mis je ne trouve pas.

Avec la méthode Getopenfilename, on ouvre une boite de dialogue"ouvrir". Et lorsque qu'on sélectionne un fichier et que l'on clique sur "ouvrir", on récupére le nom de celui-ci.

Je cherche déseperément (c le moins que l'on puisse dire), le moyen de faire exactement la même chose. Sauf qu'au lieu de récupérer le nom du fichier lorsque je clique sur ouvrir, je veux tout simplement qu'il s'ouvre dans l'application auquel son extension est attaché.
Ca parait tout simple, mais ca fait plusieurs heures que je cherche un moyen.

Si qq'un à la solution, merci d'avance.
 
T

Thierry

Guest
Bonsoir Olive,

Je n'ai pas bien compris ta question ?

Tu veux ouvrir les fichiers directement ? "Dans l'application auquel il est attaché" on parle d'Excel ici ? ou bien ?

Par ailleurs, pour ouvrir des fichiers directement ce n'est pas GetOPenFileName !
AIDE = Affiche la boîte de dialogue standard Ouvrir et lit un nom de fichier tapé par l'utilisateur sans réellement ouvrir les fichiers...

non c'est Workbooks.Open qui ouvre un fichier... De là il faut peut-être faire un UserForm qui te listerait les fichiers que tu pourrais ouvrir par simple click...

Est-ce un truc dans ce genre dont tu as besoin ?

La nuit porte réflexion, bonne nuit
@+Thierry
 
O

olive

Guest
Non, on ne parle pas d'excel. Pour des fichiers excel, c très simple, il suffit d'utiliser Application.Dialogs.Item(xlDialogOpen).

Ce que je cherche, c pouvoir ouvrir depuis excel n'importe que type de fichier (un .doc avec word, un .txt avec le notepad, un .pps avec powerpoint etc...)

Ce que je cherche c'est :

Affiche la boîte de dialogue standard Ouvrir et lit un nom de fichier tapé par l'utilisateur ET OUVRE réellement les fichiers...

Merci d'avance
 
S

STéphane

Guest
bonjour

récupère avec la boîte getopenfilename le nom, puis utilise la méthode followhyperlink.
si on suit un hyperlien, le document ciblé est pris en charge par l'os qui va ouvrir le fichier avec l'application qui ouvre par défaut le type de fichier.

bye
Stéphane
 
G

Gérard

Guest
Bonjour Olive,

Regarde le fichier joint cela doit certainement pouvoir te rendre service le fichier est conçu pour les extentions xls xla xlt, cependant tu peut mettre le s extentions doc dot txt ini

A+ Gérard
 

Pièces jointes

  • OuvFichxls.zip
    22.3 KB · Affichages: 55
O

olive

Guest
Ok, merci pour votre aide, g fini par réussir en utilisant vos fichiers et astuces.

Pour info, si ca en intéresse voila le code :

A placer ds un module :

Option Explicit
Public Const MG As String = "Ouvrir fichiers d'Excel"

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

Function OPENFILENAME(Titre As String) As String
Dim OpenFile As OPENFILENAME
Dim lReturn As Long
Dim sFilter As String
OpenFile.lStructSize = Len(OpenFile)
sFilter = "Tous les fichiers (*.*)" & Chr(0) & "*.*" & 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 = "D:\Mes documents"

OpenFile.lpstrTitle = Titre
OpenFile.flags = 0
lReturn = GetOpenFileName(OpenFile)
If lReturn = 0 Then
OPENFILENAME = 0
Else
OPENFILENAME = Trim(OpenFile.lpstrFile)
End If
End Function


Ensuite, la macro à appeler à placer ds un autre module :

Sub Ouvrir()
On Error Resume Next
TextNomDuFichier = OPENFILENAME("Ouvrir un fichier")
ActiveWorkbook.FollowHyperlink TextNomDuFichier
End Sub
 
T

Ti

Guest
Je ne comprends pas : on obtient le même résultat avec les 3 ou 4 lignes suivantes. Pourquoi se compliquer la vite avec les API dans ce cas ?

Sub ouvrir()
Dim Fichier
Fichier = Application.GetOpenFileName("Tous les fichiers (*.*),*.*")
If Fichier <> False Then ActiveWorkbook.FollowHyperlink Fichier
End Sub
 
T

Thierry

Guest
Salut à tous...

Non non, suis pas d'accord STéphane, à mon avis c'est l'inverse... Et çà nous arrive à tous...... Olive à trop cherché...... Il est passé à coté des chose simples... tiens çà me rappelle une pub....

Bonne Soirée
@+Thierry
 
O

olive

Guest
Merci Thierry.

Vu le nombres d'heures que j'ai grillées à trouver une soluce à ce prob, c clair que j'ai plus que chercher.

Si j'avais trouver ca de suite, me serais pas embêter pendant des heures pour trouver qqs chose de bcp plus compliquer.

Je trouve ta réflexion un peu raide Stéphane. Tous le monde ne maitrise pas vba parfaitement, loin s'en faut.
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
314 655
Messages
2 111 605
Membres
111 217
dernier inscrit
aladinkabeya2