Getopenfilename repertoire par default

Résolu
lamquin Messages postés 35 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 5 juin 2008 - 19 juil. 2006 à 11:30
sloy1978 Messages postés 13 Date d'inscription mardi 13 juillet 2010 Statut Membre Dernière intervention 20 août 2012 - 24 févr. 2011 à 11:57
Bonjour,

lors de la sélection d'un fichier par Getopenfilename, je voudrais que pour aller cherhcer le fichier, la boite de dialogue apparaisse avec un repertoire par défault que je lui spécifierais dans le code avant, et non plus dans le répertoire bateau Mes Documents..

Une idée???

merci beaucoup
Thierry
A voir également:

11 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
19 juil. 2006 à 14:28
Pour mon exemple, il faut insérer un Common Dialog sur ta Form et le renommer.

Pour l'exemple de PCPT, inspire toi de l'aide API de DKS :

<small> Coloration syntaxique automatique </small>







Private Declare Function ap_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 

Const cdlOFNAllowMultiselect =  &H200 
Const cdlOFNCreatePrompt = &H2000 
Const cdlOFNExplorer = &H80000 
Const cdlOFNExtensionDifferent = &H400 
Const cdlOFNFileMustExist = &H1000 
Const cdlOFNHelpButton = &H10 
Const cdlOFNHideReadOnly = &H4 
Const cdlOFNLongNames = &H200000 
Const cdlOFNNoChangeDir = &H8 
Const CdlOFNNoDereferenceLinks = &H100000 
Const cdlOFNNoLongNames = &H40000 
Const CdlOFNNoReadOnlyReturn = &H8000 
Const cdlOFNNoValidate = &H100 
Const cdlOFNOverwritePrompt = &H2 
Const cdlOFNPathMustExist = &H800 
Const cdlOFNReadOnly = &H1 
Const CdlOFNShareAware = &H4000 

Public Function ap_OpenFile( _ 
        Optional ByVal strFileNameIn As String = "", _ 
        Optional strDialogTitle As String = "Nom du fichier à ouvrir") 

Dim lngReturn As Long 
Dim intLocNull As Integer 
Dim strTemp As String 
Dim ofnFileInfo As OPENFILENAME 
Dim strInitialDir As String 
Dim strFileName As String 
Dim strDbName As String 
Dim intNbSlashe As Integer 
Dim strFileNameDeb As String 

'-- Si un chemin d'accès est fourni avec le nom,
'-- l'analyser et le dissocier de celui-ci.

If IsNull(strFileNameIn) Or (strFileNameIn = "") Then 
    strFileNameIn = CurrentDb.Name 
End If 

intNbSlashe =  InStr (strFileNameIn, "") 
strFileNameDeb  = strFileNameIn 
Do While (intNbSlashe <> 0) 
    strInitialDir =  strInitialDir &  Left (strFileNameDeb, _ 
                    InStr(strFileNameDeb, "")) 
    strFileNameDeb  = Right(strFileNameDeb, _ 
                     Len(strFileNameDeb) - Len(strInitialDir)) 
    intNbSlashe =   InStr (strFileNameDeb, "") 
Loop 

If InStr(strFileNameIn, "") <> 0 Then 
    strFileName  = Left(Mid$(strFileNameIn, _ 
                        InStr(strFileNameIn, "") + 1) & _ 
                        String(256, 0), 256) 
Else 
    strFileName =   Left (strFileNameIn & String(256, 0), 256) 
End If 

With ofnFileInfo 
    .lStructSize  = Len(ofnFileInfo) 
    .lpstrFile =  strFileName 
    .lpstrFileTitle =  String (256, 0) 
    .lpstrInitialDir  = strInitialDir 
    .hwndOwner =  Application.hWndAccessApp 
    .lpstrFilter = "All Files (*.txt)" &  Chr (0) 
    .nFilterIndex  = 1 
    .nMaxFile =   Len (strFileName) 
    .nMaxFileTitle  = ofnFileInfo.nMaxFile 
    .lpstrTitle =  strDialogTitle 
    .flags = cdlOFNFileMustExist Or _ 
             cdlOFNHideReadOnly Or _ 
             cdlOFNNoChangeDir 
    .hInstance = 0 
    .lpstrCustomFilter =  String (255, 0) 
    .nMaxCustFilter  = 255 
    .lpfnHook =  0 
End With 

lngReturn = ap_GetOpenFileName(ofnFileInfo) 

If (lngReturn = 0) Then 
    strTemp = "" 
Else 
    '-- Couper toute chaîne Null
    strTemp =  Trim (ofnFileInfo.lpstrFile) 
    intLocNull  = InStr(strTemp, Chr(0)) 
    If intLocNull Then 
        strTemp =   Left (strTemp, intLocNull - 1) 
    End If 
End If 
ap_OpenFile  = strTemp 
End Function 

<small> Coloration syntaxique automatique </small>











@++

  Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"

Merci de prendre le temps de répondre à ce sondage
Merci de prendre le temps de lire le Règlement CS


    http://www.smileycentral.com/?partner=ZSzeb008_ZNxdm414YYFR
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
19 juil. 2006 à 11:39
Salut,

Voit avec la propriété InitDir = "C:\Chemin"



@++

  Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"

Merci de prendre le temps de répondre à ce
sondage


Merci de prendre le temps de lire
le Règlement CS




    http://www.smileycentral.com/?partner=ZSzeb008_ZNxdm414YYFR
0
lamquin Messages postés 35 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 5 juin 2008
19 juil. 2006 à 13:39
Dans la fonction Getopenfilename, voici les paramètres, tu le met ou ton InitDir?

expression.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
19 juil. 2006 à 13:52
Passe par un Common Dialog (ici nommé dlgNomFichier)








<small> Coloration syntaxique automatique </small>








      Dim NomFichier As String 
'   Exemple avec l'extension d'Access
   With Me.dlgNomFichier 
        .CancelError = True 
        .Filter = "Base de données Access (*.mdb)|*.mdb" 
        .FilterIndex = 1 
        .InitDir = App.Path 
        On Error GoTo Annuler 
        .ShowOpen 
    End With 

'   la variable Suivante récupère le nom de fichier choisi
    NomFichier = Me.dlgNomFichier.FileName 

<small> Coloration syntaxique automatique </small>







@++

  Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"

Merci de prendre le temps de répondre à ce sondage
Merci de prendre le temps de lire le Règlement CS


    http://www.smileycentral.com/?partner=ZSzeb008_ZNxdm414YYFR
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
19 juil. 2006 à 13:58
salut,
Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

t'es sûr d'être en VB6?!!!!

<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
lamquin Messages postés 35 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 5 juin 2008
19 juil. 2006 à 14:16
Oui, c'est Microsoft Visual Basic 6.3 pour excel.

Mais dans le bout de code au dessus il me bug sur le Me.dlgNomFichier, j'comprend rien ou ya encore un truc a faire? c'est quoi le Me?
0
lamquin Messages postés 35 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 5 juin 2008
19 juil. 2006 à 14:34
Ok merci, ça me parait bien compliqué pour juste une dialogue box! j'ai trouvé un truc qui fait la même chose, peut être moin bien que ton code mais qui me suffit.

Sub Main()


    Dim fd As FileDialog
  
    Set fd = Application.FileDialog(msoFileDialogFilePicker)


    Dim vrtSelectedItem As Variant
    
    With fd


        'Set the initial path to the C:\ drive.
        .InitialFileName = "C:"


        'Use the Show method to display the File Picker dialog box and return the user's action.
        'If the user presses the action button...
        If .Show = -1 Then


            'Step through each string in the FileDialogSelectedItems collection.
            For Each vrtSelectedItem In .SelectedItems


                'vrtSelectedItem is a String that contains the path of each selected item.
                'You can use any file I/O functions that you want to work with this path.
                'This example simply displays the path in a message box.
                MsgBox "Selected item's path: " & vrtSelectedItem


            Next vrtSelectedItem
        'If the user presses Cancel...
        Else
        End If
    End With


    'Set the object variable to Nothing.
    Set fd = Nothing


End Sub
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
21 juil. 2006 à 11:10
Tu peux utiliser ChDir avant d'appeler ta fonction GetOpenFilename

Voici une fonction qui me sert souvent
Chemin est déclaré dans un module en Public et est initialisé à l'ouverture du classeur

Private Sub Workbook_Open()
    Chemin = ThisWorkbook.Path
End Sub

Public Function OuvrirFichier(Optional Extension As String) As String
    Dim FileToOpen As String
    
    ChDir Chemin


    If Extension = "xls" Then
        FileToOpen = Application.GetOpenFilename("Fichiers Excel (*.xls),*.xls,Tous (*.*),*.*")
    ElseIf Extension = "txt" Then
        FileToOpen = Application.GetOpenFilename("Fichiers Texte (*.txt),*.txt,Tous (*.*),*.*")
    Else
        FileToOpen = Application.GetOpenFilename("Tous (*.*),*.*")
    End If


    If FileToOpen Then OuvrirFichier = FileToOpen


End Function

MPi
0
louisvbfrance Messages postés 31 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 12 mars 2009
12 mars 2009 à 13:37
J'ai BEAUCOUP plus simple LAMQUIN !!!

 ChDrive ("C")   'C est là le truc : changer la lettre du lecteur sur lequel on cherche.
 ChDir "C:\Documents and Settings\USER\Bureau\A.I\Factures"
 a = Application.GetOpenFilename("fichier excel (*.xls), *.xls", , "Sélection de vos fichiers excel", , True)

Voili voilou !

Julien
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 mars 2009 à 14:05
deux ans et demi après, c'est pas mal, remarques ^^

MPi l'avais également mentionné, le coup du ChDir...
0
sloy1978 Messages postés 13 Date d'inscription mardi 13 juillet 2010 Statut Membre Dernière intervention 20 août 2012
24 févr. 2011 à 11:57
nickel le chdrive
des années après...
0
Rejoignez-nous