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 :

Boucle pour importer et traiter des fichiers excel dans un dossier


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 141
    Points : 35
    Points
    35
    Par défaut Boucle pour importer et traiter des fichiers excel dans un dossier
    Bonjour,

    Je travail sur actuellement sous access pour créer un reporting, mon but est d'importer en fin de mois des fichiers excel dans access, je récupérer des informations dans le fichier ( count , sum etc .. ) et je stock dans une table chacune des informations en utilisant une ligne par fichier.

    Je souhaiterais donc savoir comment importer et traiter un dossier complet contenant un nb x de fichiers excel tous au même formatage.

    Le but est d'importer un fichier effectuer les traitement , sauvegarder ces résultat sur la ligne avec le nom du fichier, vider les tables et recommencer avec le fichier suivant .. cela jusqu'au dernier de manière automatique.

    Merci pour votre aide.!!

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 124
    Points : 12 176
    Points
    12 176
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Il existe de nombreux tutoriels et de points soulevés dans la FAQ qui concernent ce dont tu as besoin...

    Mots clés : FSO, Spreadsheet, Scripting Runtime etc...

    Un peu de lecture et reviens si tu as des difficultés.

    Argy

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 141
    Points : 35
    Points
    35
    Par défaut
    J'ai effectuer une recherche pour chaque mot mais je ne tombe sur rien , j'ai chercher sur les FAQ vba ... mais rien .

    Merci

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 124
    Points : 12 176
    Points
    12 176
    Billets dans le blog
    5
    Par défaut
    Tu cherches comme ma femme ou mon fils...
    Tu sais, il y a un sommaire assez lisible, somme toute, enfin, l'équipe a fait en sorte que !

    Tu es dans un forum, n'oublie pas et donc tu es autorisé à le parcourir...

    Par compassion, je t'en donne 2 :
    http://access.developpez.com/faq/?page=Fichier
    http://access.developpez.com/faq/?pa...l#ImpFichExcel

    Argy

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 141
    Points : 35
    Points
    35
    Par défaut
    Dsl de ne pas avoir répondu avant, j'ai essayer cependant j'ai besoin de librairie que je ne peut techniquement charger.. je dois donc trouver une autre manière de faire , en découpant une table en plusieurs tables selon une variable contenu dans une colonne , est-ce possible !

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 124
    Points : 12 176
    Points
    12 176
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Tinien Voir le message
    j'ai essayer cependant j'ai besoin de librairie que je ne peut techniquement charger...
    Pourquoi, c'est à dire ?

  7. #7
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 141
    Points : 35
    Points
    35
    Par défaut
    En faite je travail sous une version limité de microsoft server , et j'ai une version de base d'access, impossible de charger une librairie.
    contrainte de l'informatique de ma boite :s

  8. #8
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 124
    Points : 12 176
    Points
    12 176
    Billets dans le blog
    5
    Par défaut
    Sympa

    Enfin, on sait jamais, si tu étais un espion...
    Humm, normalement, tu n'as pas besoin de charger de librairie...
    Disons que c'est plus simple et plus propre et cela te fait bénéficier de l'Intellisence pour confortabiliser la rédaction de ton code.
    Donc, tu peux procéder avec une techno LateBinding soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim oFSO As Object
    Set oFSO = CreateObject ("Scripting.FileSystemObject")
    Veux-tu un exemple ?

    Argy

  9. #9
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 141
    Points : 35
    Points
    35
    Par défaut
    Oui je veut bien un petit exemple si c'est possible , merci.

  10. #10
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 124
    Points : 12 176
    Points
    12 176
    Billets dans le blog
    5
    Par défaut
    Humm, bon voilà...
    Renomme UserName par le nom de ton compte pour tester si toutefois tes fichiers Excel se trouvent là :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
    Option Explicit
     
    Private m_lngErrorNumber                               As Long
    Private m_intFolders                                   As Integer
    Private m_lngFiles                                     As Long
     
    Sub TesterPourVoir()
        Call ReadExcelFiles("C:\Documents and Settings\UserName\Mes documents\", "xls")
    End Sub
     
    Private Sub ReadExcelFiles(ByVal StartDir As String, Optional ByVal FileExtension As String = "xls")
        Dim oFSO                                           As Object
        Dim straAllFiles()                                 As String
        Dim strErrorDescription                            As String
     
        m_intFolders = 0
        m_lngFiles = 0
        On Error GoTo ReadExcelFiles_Error
        Set oFSO = CreateObject("Scripting.FileSystemObject")
        With oFSO
            If Not .FolderExists(StartDir) Then
                Err.Raise 75
            Else
                If ListAllFiles(StartDir, FileExtension, straAllFiles, oFSO, strErrorDescription) Then
                    MsgBox m_intFolders & " dossier(s) contenant des fiechier Excel" & vbCrLf & m_lngFiles & " fichier(s) trouvé(s)", vbInformation
                Else
                    Err.Raise m_lngErrorNumber, "ReadExcelFiles()", strErrorDescription
                End If
            End If
     
        End With
     
        On Error GoTo 0
    ReadExcelFiles_Exit:
        Erase straAllFiles
        Set oFSO = Nothing
        Exit Sub
     
    ReadExcelFiles_Error:
        MsgBox Err.Description, vbExclamation, "Erreur " & Err.Number
        Resume ReadExcelFiles_Exit
    End Sub
     
    Function ListAllFiles(ByVal FilePath As String, ByVal FileExtension As String, ByRef FileArray() As String, ByVal FSO As Object, ByRef ErrorDesc As String) As Boolean
        Dim oFolder                                        As Object
        Dim oSubFolder                                     As Object
        Dim oFile                                          As Object
        Dim blnNext                                        As Boolean
        Dim F                                              As Long
        Dim P                                              As Integer
        On Error GoTo ListAllFiles_Error
     
        ListAllFiles = False
        On Error Resume Next
        Set oFolder = FSO.GetFolder(FilePath)
        F = oFolder.Files.Count
        If F <> 0 Then
            For Each oFile In oFolder.Files
                If StrComp(FSO.GetExtensionName(oFile.Name), FileExtension, 1) = 0 Then
                    P = P + 1
                    If P <= 1 Then
                         Debug.Print vbCrLf & oFolder.Path: Debug.Print String(Len(oFolder.Path), "-")
                    End If
                    m_lngFiles = m_lngFiles + 1
                    ReDim Preserve FileArray(UBound(FileArray) + 1)
                    FileArray(UBound(FileArray)) = oFile.Path
                    Debug.Print oFile.Name
                    '--------------------------------------
                    ' => C'est là que tu lances ton traitement d'import Access
                    ' Call ImportThisFileIntoDB(oFile.Path)
                    '--------------------------------------
                End If
            Next
        End If
        If oFolder.SubFolders.Count <> 0 Then
            m_intFolders = m_intFolders + P
            P = 0
            For Each oSubFolder In oFolder.SubFolders
                Call ListAllFiles(oSubFolder.Path, FileExtension, FileArray, FSO, ErrorDesc)
            Next
        End If
     
        ListAllFiles = True
     
        On Error GoTo 0
    ListAllFiles_Exit:
        Set oFolder = Nothing
        Set oSubFolder = Nothing
        Set oFile = Nothing
        Exit Function
     
    ListAllFiles_Error:
        ListAllFiles = False
        ErrorDesc = Err.Description
        m_lngErrorNumber = Err.Number
        Resume ListAllFiles_Exit
    End Function
    Argy

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/04/2014, 22h31
  2. Réponses: 4
    Dernier message: 02/09/2013, 08h51
  3. Réponses: 1
    Dernier message: 04/02/2010, 20h41
  4. importer des fichiers excel dans access
    Par skillipo dans le forum Access
    Réponses: 1
    Dernier message: 12/11/2007, 16h53
  5. Réponses: 7
    Dernier message: 15/06/2006, 17h36

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