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 :

Formulaire d'importation de fichier Excel dans une table Access


Sujet :

VBA Access

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 56
    Points : 48
    Points
    48
    Par défaut Formulaire d'importation de fichier Excel dans une table Access
    Bonjour à tous,

    Actuellement en stage, je souhaite importer régulièrement un fichier Excel dans une table Access déjà existante qui se nomme Export_iShare, ce fichier j'irais le piocher sur mon poste de travail.

    Pour cela j'ai créé un formulaire où j'ai mis une zone de texte et un bouton parcourir juste à côté. Quand je cliquerai sur ce bouton je veux pouvoir aller piocher le fichier Excel à importer et ensuite que son nom vienne se mettre dans ma zone de texte.

    Ensuite sur un autre bouton "Importer", je voudrais qu'au clic de celui-ci les données de mon fichier s'importe dans ma table Export_iShare

    Etant débutante sur Access, je ne trouve pas exactement les codes VBA qu'il me faut sur le net

    Pouvez-vous m'aider?

    Merci

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 154
    Points : 193
    Points
    193
    Par défaut
    Bonsoir,

    Il te faudra ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acImport, 8, "TableDestination", "F:\Mes documents\BlaBla\Fichier.xls\"
    A+

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 56
    Points : 48
    Points
    48
    Par défaut
    Oui je sais. Mais au lieu de "F:\Mes documents\BlaBla\Fichier.xls\" il doit y avoir le nom du fichier que l'utilisateur est allé récupérer avec le bouton parcourir et ça je n'arrive pas à le faire

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 154
    Points : 193
    Points
    193
    Par défaut
    Bonjour,

    Voici mon code tel quel, as toi de l'adapter selon tes besoins.

    Crée une table Tempo_Fichiers et place ceci dans un module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function nbfich(chemin As String, ParamArray termin() As Variant) As Long
    Dim Fichier As String
    Dim extension As Variant
    Dim compteur As Long
    For Each extension In termin
       Fichier = Dir(chemin & "\*." & extension)
       Do Until Fichier = ""
       compteur = compteur + 1
       Fichier = Dir
       Loop
    Next extension
    nbfich = compteur
    End Function
    Et ceci en OpenForm :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Private Sub Form_Open(Cancel As Integer)
     
        NbFichier = Null       
        NbFichier = nbfich("F:\Mes documents\Finance\Application\Relevés banque", "xls")     'Appelle la Fonction nbfich
     
        If NbFichier = 0 Then
            NbFichier.Visible = False
            NbFichierTexte = "Aucun relevé bancaire disponible."
            BtnTelecharger.Enabled = False
        Else: BtnTelecharger.Enabled = True
            NbFichierTexte = "relevé(s) bancaire(s) en attente de téléchargement"
        End If
     
        Dim rep As String
     
        ' Obtient le premier fichier ou répertoire qui est dans "F:\"
        rep = Dir("F:\Mes documents\Finance\Application\Relevés banque\*.xls*", vbNormal)
     
        ' Boucle tant que le répertoire n'a pas été entièrement parcouru
        Do While (rep <> "")
            DoCmd.RunSQL "insert into Tempo_Fichiers (IdNom) values ('" & rep & "');"
            ' Passe à l'élément suivant
            rep = Dir
        Loop
     
        SF_FichiersDispos.Requery
     
    End Sub
    Normalement, à l'ouverture de ton Form, ce code ajoutera la liste des noms des fichiers (disponibles dans ton répertoire) dans Tempo_Fichiers.
    Il te reste qu'a aller les rechercher depuis cette table pour les afficher dans un menu déroulant. Perso, j'ai opté pour un SForm.

    Ensuite, place un bouton "BtnTelecharger" dans ton Form avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acImport .......
    pour organiser l'importation à proprement parler.

    Pour ma part, je n'ai pas permis à l'utilisateur de choisir un fichier à importer plutôt qu'un autre car dans mon contexte il est impératif que l'import se fasse chronologiquement (du plus ancien au récent).

    Bon courage.

  5. #5
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    Bonjour Car0le , Dixies ,

    Pour compléter la réponse de Dixies tu peux te servir aussi du "Office.FileDialog" pour laisser le choix à l'utilisateur de sélectionner un fichier dans n'importe quel répertoire de l'ordi. Tu as besoin de la référence "Microsoft Office XX.X Object Library" et l'aide d'Access est très complète. Il y a de bons exemples.

    Bonne journée

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    Bonjour,
    Robert1957 a raison. L'objet FileDialog est la solution à ce que tu souhaites. Explications...

    Dans le VBE (ALT+F11 dans Access), dans le menu Outils/référence, actives la référence "Microsoft Office XX.X Object Library" où XX.X est le numéro de version de la bibliothèque.
    Ensuite, renommes ta zone de texte en txt_path et ton bouton "parcourir" en btn_browser.
    La zone de texte doit avoir les propriétés suivantes :
    • Activé : Oui
    • Verrouillé : Oui



    Sur l'évènement Click du bouton, il faut récupérer le chemin du fichier :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Private Sub btn_browser_Click()
        Dim fd As Office.FileDialog
     
        ' Créer un objet FileDialog
        Set fd = Application.FileDialog(msoFileDialogOpen)
     
        ' Titre de la boîte de dialogue
        fd.Title = "Sélectionnez un fichier Excel..."
     
        ' Ne pas autoriser la sélection multiple
        ' (donc 1 seul fichier est sélectionnable à la fois)
        fd.AllowMultiSelect = False
     
        ' Définir les types de fichiers autorisés en ajoutant un filtre
        fd.Filters.Clear
        fd.Filters.Add "Fichiers Excel", "*.xls; *.xlsx"
     
        ' Présélectionner le filtre
        fd.FilterIndex = 0
     
        ' Afficher la boîte de dialogue
        If fd.Show() Then
            Me.txt_path = fd.SelectedItems(1)
        End If
        Set fd = Nothing
    End Sub
    Sur l’événement Click de ton 2ème bouton (qu'on appellera btn_import), on pourra utiliser la fonction présentée par Dixies :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub btn_import_Click()
        DoCmd.TransferSpreadsheet acImport, 8, "Export_iShare", Me.txt_path
    End Sub
    Avec ceci tu devrais y arriver

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/04/2015, 17h06
  2. Réponses: 2
    Dernier message: 10/02/2014, 23h02
  3. Importation d'un fichier excel dans une table access
    Par cmaitre dans le forum VBA Access
    Réponses: 11
    Dernier message: 15/04/2008, 16h59
  4. importer un fichier excel dans une table
    Par joe370 dans le forum VBA Access
    Réponses: 3
    Dernier message: 13/07/2007, 11h21
  5. Réponses: 7
    Dernier message: 04/10/2005, 18h21

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