IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

GetOpenFileName Nom du Fichier et Format


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Points : 177
    Points
    177
    Par défaut GetOpenFileName Nom du Fichier et Format
    Bonjour,

    je cherche à ouvrir un fichier Excel via la boîte de dialogue.
    Lorsque la boîte de dialogue s'ouvre, j'aimerais que le format de fichier soit prédéfini Excel, qu'un nom de fichier soit déjà pré-saisi dans la case File name et que la boîte s'ouvre avec le bon répertoire.
    J'ai bien réussi à filtrer le format .xls et à avoir le bon répertoire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    chdir ThisWorkbook.Path
    Workbooks.Open Filename:=Application.GetOpenFilename("Excel Files (*.xls),*.xls")
    Mais j'aimerais que le nom de fichier apparaisse lui aussi, de manière à ce que l'utilisateur sache quel fichier il a à ouvrir.

    Quelqu'un a-t-il une idée ?
    Merci

  2. #2
    Membre confirmé
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Points : 563
    Points
    563
    Par défaut
    Bonjour,

    Pourquoi passer par une boite de dialogue si le fichier à ouvrir est connu ?

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Points : 177
    Points
    177
    Par défaut
    Parce que il se peut que certaines personnes déplacent les fichiers, notamment d'une année sur l'autre, et je souhaiterais que cette macro fonctionne encore pas mal de temps. Donc si je mets en dur le chemin, elle plantera un jour ou l'autre. A l'heure actuelle le fichier à ouvrir est dans le même répertoire que le fichier contenant la macro et son nom est défini, mais il se peut que tout change l'année prochaine.

    Voilà pourquoi.
    Sinon, effectivement, je me prends la tête pour rien. Mais il faut que je prévois toutes les éventualités (surtout pour éviter les mauvaises surprise à ceux qui ne maitrisent pas VBA).

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 919
    Points
    55 919
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Je propose de passer par une fonction qui renvoie le nom du fichier saisi dans la boite de dialogue. Si aucun fichier n'est saisi (clic sur Annuler ou sur la croix de fermeture, la fonction renvoie une chaine vide. On peut ainsi tester la valeur de retour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Function RechercheFichier() As String
        Dim fd As FileDialog
        Dim NomFichier As String
     
        Set fd = Application.FileDialog(msoFileDialogFilePicker)
        With fd
            .Filters.Add "Fichiers Excel", "*.xls"
            .Title = "Recherche de fichier"
            .InitialFileName = "Adresses.xls"
        End With
        If fd.Show = -1 Then NomFichier = fd.SelectedItems(1)
     
        RechercheFichier = NomFichier
        Set fd = Nothing
    End Function
    Exemple d'utilisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub MaProcedure()
        Dim NomFichier As String
     
        NomFichier = RechercheFichier()
        If NomFichier = "" Then
            MsgBox "Vous n'avez sélectionné aucun fichier"
            Else
            Workbooks.Open NomFichier
        End If
    End Sub
    On peut complexifier la fonction en passant par exemple en paramètre le nom du fichier par défaut, ce qui rend la fonction exploitable dans d'autres codes.

    Il y a d'autres propriétés de l'objet FileDialog que la saisie semi-automatique permet de visualier, ainsi que l'explorateur d'objet.

    Ok?

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Points : 177
    Points
    177
    Par défaut
    Tout d'abord merci beaucoup pour ces indications.
    Le seul souci est que je ne souhaite pas que l'utilisateur entre un nom de fichier dans la boîte de dialogue mais que ce nom de fichier y soit déjà entré lorsqu'elle s'ouvre. J'arrive à faire ca lorsqu'il s'agit de GetSaveAsFilename mais pour Open, impossible.

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 919
    Points
    55 919
    Billets dans le blog
    131
    Par défaut
    C'est la propriété InitialFileName qui permet cela dans mon exemple. As-tu testé pour voir ce que cela donne?

  7. #7
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Points : 177
    Points
    177
    Par défaut
    Oupsss. Pardon. Je n'ai rien dit.

    Juste après avoir envoyé ma réponse, j'ai effectivement testé.

    C'est nikel. A voir par contre le fait que si je donne un nom de fichier, le nom apparaît bien dans la boîte de dialogue, mais l'utilisateur n'a aucun moyen de voir les autres fichiers excel du même emplacement. Et s'il s'apercoit que le nom prédéfini n'est plus le bon, il ne peut changer de classeur à ouvrir.

    Encore creuser à ce niveau là.

    En tous cas, 1000 excuses, c'était exactement ce que je recherchais.
    Merci encore

  8. #8
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 919
    Points
    55 919
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par melouille56 Voir le message
    ...
    C'est nikel. A voir par contre le fait que si je donne un nom de fichier, le nom apparaît bien dans la boîte de dialogue, mais l'utilisateur n'a aucun moyen de voir les autres fichiers excel du même emplacement. Et s'il s'apercoit que le nom prédéfini n'est plus le bon, il ne peut changer de classeur à ouvrir....
    Il suffit à l'utilisateur de supprimer le nom dans la zone, puis de presser F5 et il verra apparaître tous les fichiers Excel (ce n'est pas spécifique au code fourni, c'est le comportement normal de ce genre de boites de dialogue sous Windows...)

    Ok?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Nom de fichier automatique avec date en format Jour mois année
    Par chipster62 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/02/2014, 20h17
  2. Format Date dans nom de fichier
    Par Potzo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/06/2010, 12h34
  3. Réponses: 1
    Dernier message: 04/07/2009, 14h17
  4. Réponses: 4
    Dernier message: 15/01/2007, 11h53
  5. exp file= format nom de fichier
    Par cdu dans le forum Import/Export
    Réponses: 4
    Dernier message: 03/03/2006, 11h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo