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 :

Extraction de données excel à partir d'un répertoire


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2018
    Messages : 14
    Par défaut Extraction de données excel à partir d'un répertoire
    Bonjour,

    Je rencontre un petit problème ...

    J'aurais aimé savoir s'il était possible d'extraire des données en partant d'un Répertoire / dossier.

    J'ai trouvé des petites lignes de codes qui me permettent de sélectionner un répertoire mais je ne sais absolument pas comment extraire des données de ces répertoires ...

    Auriez-vous déjà eu affaire à ce genre de problème svp??

    Ou tout simplement es que vous connaîtriez des lignes me permettant de faire ceci svp ??



    Voici quelques exemples d'exploitation de répertoire que j'ai trouvé sur internet :

    Exemple 1 pour trouver via un répertoire le nom des fichiers interne :

    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
    Sub SelectionRepertoireEtAction()
    Dim Repertoire As FileDialog
        Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker)
        Repertoire.Show
        If Repertoire.SelectedItems.Count > 0 Then
            Call BoucleDir(Repertoire.SelectedItems(1), "*.xls*")
        End If
    End Sub
     
    Private Sub BoucleDir(Chemin As String, Extension As String)
    Dim Fichier As String
        If Right(Chemin, 1) <> Application.PathSeparator Then Chemin = Chemin & Application.PathSeparator
        Fichier = Dir(Chemin & Extension)
        If Fichier <> vbNullString Then
            Do
                MsgBox Chemin & Fichier
                Fichier = Dir
            Loop While Fichier <> vbNullString
        End If
    End Sub
    Exemple 2 qui me donne le chemin d'un répertoire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub selectionRepertoire_afficherChemin()
    Dim Repertoire As FileDialog
     
    Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker)
    Repertoire.Show
     
    MsgBox Repertoire.SelectedItems(1)
    End Sub

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Bonjour,

    Je te propose le code suivant que j'utilise souvent pour parcourir un dossier.
    Il nécessite d'activer la référence Microsoft Scripting Runtime pour pouvoir l'exécuter.

    La macro ouvre une boîte dialogue pour que tu sélectionnes le dossier que tu veux parcourir.
    Puis elle "scanne" le dossier en bouclant sur tous les éléments qui s'y trouve.
    Si l'élément trouvé est un fichier, alors tu peux faire le traitement que tu veux sur ce fichier.
    Si l'élément trouvé est un sous-dossier, alors la macro s'appelle elle même (elle est récursive) pour "scanner" à nouveau ce sous-dossier et ainsi de suite.

    N'hésite pas si tu veux des explications complémentaires.

    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
    Sub ParcourirDossier()
     
    Dim FichierSélectionné As String
    Dim NumFichier As Integer
    Dim fs As FileDialog
    Dim Chemin As String
    Dim DossierSélectionné As Folder
     
        Set FichierPrincipal = ThisWorkbook
        Set FeuilleCompil = FichierPrincipal.Sheets("Feuil1")
        Chemin = Range("Chemin").Value
        Set fs = Application.FileDialog(msoFileDialogFolderPicker)
        fs.Title = "Selection du dossier à parcourir"
        fs.AllowMultiSelect = False
        fs.InitialFileName = Chemin
        fs.Show
        If fs.SelectedItems.Count < 1 Then Exit Sub
        Set fso = New FileSystemObject
        Set DossierSélectionné = fso.GetFolder(fs.SelectedItems(1))
     
        Call scan(DossierSélectionné)
     
    End Sub
     
    Sub scan(ByVal Dossier As Folder)
     
    Dim NomFichier As String
    Dim Classeur As Workbook
     
        For Each Fichier In Dossier.Files
            Select Case Right(Fichier, 3)
                Case "xls", "lsx", "lsm", "lsb"
                    If Left(Fichier.Name, 1) <> "~" Then 'Permet d'exclure les fichier temporaires
                        Workbooks.Open Fichier
                        Set Classeur = ActiveWorkbook
     
                        'Traitement du fichier ouvert
     
                        Classeur.Close False
                    End If
            End Select
        Next Fichier
     
        For Each Sousdossier In Dossier.SubFolders
            Call scan(Sousdossier)
        Next
     
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2018
    Messages : 14
    Par défaut
    Merci bien de votre réponse.

    J'avais néanmoins quelques questions ?

    Comment activer le Microsoft Scripting Runtime ??

    Et dans un second temps comment effectuer le traitement que je souhaite faire sur les fichiers svp ?

    Merci d'avance pour votre réponse !

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Re,

    Pour activer une référence, aller dans le VBE (la fenêtre Visual Basic), cliquer sur Outils > Références... et sélectionner Microsoft Scripting Runtime dans la liste.

    Ensuite, tout dépend de ce que tu veux faire, dans mon exemple, si les fichiers trouvés sont des fichiers Excel, alors ils sont ouverts, et ensuite il suffit d'écrire le code souhaité, puis de refermer le fichier. C'est ce qu'il y dans mon code à cet endroit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Workbooks.Open Fichier
     Set Classeur = ActiveWorkbook
     
    'Traitement du fichier ouvert
     
    Classeur.Close False

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2018
    Messages : 14
    Par défaut
    Petit problème quand je lance la macro ...
    Images attachées Images attachées  

  6. #6
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Je pense que ça vient de la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Chemin = Range("Chemin").Value
    En effet, j'avais nommé une cellule "Chemin" et cette cellule contenait le répertoire par défaut à ouvrir dans la boîte de dialogue.
    Et j'imagine que tu n'as pas de cellule nommée ainsi dans ton fichier, ou alors ce serait une belle coïncidence !

    Il faut que tu remplaces par la cellule de ton choix qui contient le chemin par défaut.
    Ou alors tu mets directement en dur le chemin dans le code VBA, mais c'est moins paramétrable.

    Exemples :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Chemin = Range("A1").Value
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Chemin = "C:\Bureau\MonDossier"

Discussions similaires

  1. [Débutant] Extraction de données de logs dans un répertoire vers Excel
    Par Arcenix dans le forum VB.NET
    Réponses: 5
    Dernier message: 11/04/2017, 13h36
  2. Extraction des données a partir d'un Matcher
    Par msahmi dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 17/06/2009, 11h36
  3. Solution pour Extraction de données Excell ? Routines?
    Par ccbbrr172 dans le forum Alimentation
    Réponses: 8
    Dernier message: 28/03/2008, 15h37
  4. extraction de données excel
    Par gzanax dans le forum Excel
    Réponses: 2
    Dernier message: 13/03/2007, 14h41
  5. Réponses: 23
    Dernier message: 01/03/2007, 15h03

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