Getopenfilename repertoire par default [Résolu]

lamquin 35 Messages postés vendredi 18 novembre 2005Date d'inscription 5 juin 2008 Dernière intervention - 19 juil. 2006 à 11:30 - Dernière réponse : sloy1978 13 Messages postés mardi 13 juillet 2010Date d'inscription 20 août 2012 Dernière intervention
- 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
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 19 juil. 2006 à 14:28
3
Merci
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

Merci mortalino 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de mortalino
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 19 juil. 2006 à 11:39
0
Merci
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
Commenter la réponse de mortalino
lamquin 35 Messages postés vendredi 18 novembre 2005Date d'inscription 5 juin 2008 Dernière intervention - 19 juil. 2006 à 13:39
0
Merci
Dans la fonction Getopenfilename, voici les paramètres, tu le met ou ton InitDir?

expression.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
Commenter la réponse de lamquin
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 19 juil. 2006 à 13:52
0
Merci
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
Commenter la réponse de mortalino
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 19 juil. 2006 à 13:58
0
Merci
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
Commenter la réponse de PCPT
lamquin 35 Messages postés vendredi 18 novembre 2005Date d'inscription 5 juin 2008 Dernière intervention - 19 juil. 2006 à 14:16
0
Merci
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?
Commenter la réponse de lamquin
lamquin 35 Messages postés vendredi 18 novembre 2005Date d'inscription 5 juin 2008 Dernière intervention - 19 juil. 2006 à 14:34
0
Merci
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
Commenter la réponse de lamquin
cs_MPi 3877 Messages postés mardi 19 mars 2002Date d'inscription 23 août 2018 Dernière intervention - 21 juil. 2006 à 11:10
0
Merci
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
Commenter la réponse de cs_MPi
louisvbfrance 31 Messages postés dimanche 4 mai 2003Date d'inscription 12 mars 2009 Dernière intervention - 12 mars 2009 à 13:37
0
Merci
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
Commenter la réponse de louisvbfrance
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 12 mars 2009 à 14:05
0
Merci
deux ans et demi après, c'est pas mal, remarques ^^

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.