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

VBA Access Discussion :

Ouvrir boite de dialogue de sélection de fichier


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 103
    Par défaut Ouvrir boite de dialogue de sélection de fichier
    Bonjour à tous,

    J'essaie d'ouvrir une boite de dialogue pour sélectionner le nom et le chemin d'un fichier excel que je vais ouvrir ensuite. Un peu comme la fonction "Application.GetOpenFilename" de excel. Mais je n'arrive pas à faire ça dans Access.

    J'ai essayé la solution du la FAQ-Access ici : https://access.developpez.com/faq/?p...#AffBoitDialog
    Alors déjà ce code n'est plus compatible avec office 64bits, j'ai donc du modifier une peu le code pour que ça marche, j'espère que ça n'a rien cassé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Declare PtrSafe Sub PathStripPath Lib "shlwapi.dll" Alias "PathStripPathA" (ByVal pszPath As String)
    Private Declare PtrSafe Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As LongPtr
    Mais ça ne marche pas, il ne se passe rien ou ça m'affiche une fenêtre vide.

    J'ai également essayé avec le file scripting object mais pareil rien ne se passe.

    Voilà mon code :
    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
    Private Sub cbImporter_Click()   
     
        'Ouverture de la boite de dialogue de sélection
        Dim sFileName As String
    '    sFileName = Application.GetOpenFilename(FiltreDeFichier)
    '    MsgBox OuvrirUnFichier(Application.hWndAccessApp, "Parcourir", 1, "Fichier Excel", "xls")
     
        Dim fDialog
        Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
     
        If sFileName <> False Then
            Call Import_NC(sFileName)
        End If
     
    End Sub
    Auriez-vous une solution pour faire apparaitre cette boite de dialogue ?

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 127
    Par défaut
    Bonjour,

    comdlg32.dll semble indiquer que la librairie utilisée est 32 bits

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 103
    Par défaut
    Ah oui en effet je n'avais pas vu ça.

    Bon au final en cherchant j'ai reussi a m'en sortir avec les FSO avec la fonction suivante :
    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
    16
    17
    Public Function choixFichier() As String
         Dim intChoice As Variant
         Application.FileDialog(msoFileDialogOpen).Title = "Veuillez choisir le fichier à importer"
         Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False
         Application.FileDialog(msoFileDialogOpen).Filters.Clear
         Application.FileDialog(msoFileDialogOpen).Filters.Add "Fichier excel", "*.xls; *.xlsx; *.xlsm"
         intChoice = Application.FileDialog(msoFileDialogOpen).Show
     
         If intChoice <> 0 Then
            Dim nomFichier As String
            nomFichier = Application.FileDialog(msoFileDialogOpen).SelectedItems(1)
            choixFichier = nomFichier
         Else
            MsgBox ("Aucun fichier choisit.")
              End
         End If
    End Function
    Il faut juste faire attention bien avoir les bonnes références disponibles :
    - Microsoft Scripting Runtime
    - Microsoft Excel 16.0 Object Library
    - Microsoft Office 16.0 Object Library

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2017
    Messages : 6
    Par défaut
    Citation Envoyé par Coco47 Voir le message
    Ah oui en effet je n'avais pas vu ça.

    Bon au final en cherchant j'ai reussi a m'en sortir avec les FSO avec la fonction suivante :
    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
    16
    17
    Public Function choixFichier() As String
         Dim intChoice As Variant
         Application.FileDialog(msoFileDialogOpen).Title = "Veuillez choisir le fichier à importer"
         Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False
         Application.FileDialog(msoFileDialogOpen).Filters.Clear
         Application.FileDialog(msoFileDialogOpen).Filters.Add "Fichier excel", "*.xls; *.xlsx; *.xlsm"
         intChoice = Application.FileDialog(msoFileDialogOpen).Show
     
         If intChoice <> 0 Then
            Dim nomFichier As String
            nomFichier = Application.FileDialog(msoFileDialogOpen).SelectedItems(1)
            choixFichier = nomFichier
         Else
            MsgBox ("Aucun fichier choisit.")
              End
         End If
    End Function
    Il faut juste faire attention bien avoir les bonnes références disponibles :
    - Microsoft Scripting Runtime
    - Microsoft Excel 16.0 Object Library
    - Microsoft Office 16.0 Object Library
    Bonjoru il me semble avoir declaré toute les reference srequises , mais j'ai tout d ememe une erreur sur l'execution de ce code.. j'ai loupé un truc ?

    "Compile Error : Variable ot defined " sur le msoFileopenDialogOpen

    merci

  5. #5
    Invité
    Invité(e)
    Par défaut
    La déclaration n'est utile que pour connaitre la valeur de msoFileDialogOpen qui est 1 donc remplacez par cette valeur et ça fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Function choixFichier() As String
         With Application.FileDialog(1) ' msoFileDialogOpen
            .Title = "Veuillez choisir le fichier à importer"
            .Filters.Clear
            .Filters.Add "Fichier excel", "*.xls; *.xlsx; *.xlsm"
            If .Show <> 0 Then
               choixFichier = .SelectedItems(1)
            End If
         End With
    End Function
    Dernière modification par Invité ; 18/02/2025 à 10h13.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/11/2019, 15h32
  2. Réponses: 5
    Dernier message: 28/07/2009, 21h38
  3. [A-03]Ouvrir une boite de dialogue pour selectionner un fichier
    Par Milyshyn76 dans le forum VBA Access
    Réponses: 3
    Dernier message: 16/10/2008, 14h26
  4. [Débutant] Ouvrir une boite de dialogue pour enregistrer un fichier
    Par pompier21 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 09/10/2008, 10h09
  5. [Access 2003]Boite de dialogue pour sélection de fichier
    Par L.Lemarchand dans le forum VBA Access
    Réponses: 5
    Dernier message: 03/09/2008, 15h44

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