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 :

Récupérer la liste des fichiers *.xlsm présent dans un répertoire sur one drive


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 84
    Points : 56
    Points
    56
    Par défaut Récupérer la liste des fichiers *.xlsm présent dans un répertoire sur one drive
    Bonjour à tous,

    Je souhaite comme dit dans le sujet, récupérer la liste de tous les fichiers Excel au format (*.xlsm) qui se trouvent dans un dossier sur un OneDrive partagé.
    Quand mes fichiers étaient sur mon lecteur local, j'utilisais le code suivant :

    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
     
    Dim i As Integer, Chemin As String, Fichier As String
    Me.CommandButton_Appliquer.Enabled = False
    Chemin = ThisWorkbook.Path & "\*.xlsm"
    Fichier = Dir(Chemin)
        Do While (Len(Fichier) > 0)
                If InStr(Fichier, "Présences") _
                And IsFileOpen(ThisWorkbook.Path & "\" & Fichier) = False Then
                    Me.ListBox_Atelier.AddItem Fichier
                Else
                    'Test si le fichier est ou n'est pas le fichier en cours
                    If InStr(Fichier, ThisWorkbook.Name) = 0 Then
                        'si ce n'est pas le fichier en cours puisqu'il est en lecture seul, on le note dans les fichiers bloqués
                        Me.ListBox_Fichiers_Ouverts.AddItem Fichier
                    Else
                        'si c'est le fichier en cours on l'inscrit dans les fichiers disponible
                        Me.ListBox_Atelier.AddItem Fichier
                        'et on le pré-sélectionne dans la liste
                        Me.ListBox_Atelier.ListIndex = Me.ListBox_Atelier.ListCount - 1
                    End If
                End If
            Fichier = Dir()
        Loop
    j'ai trouvé des explications sur un post d'Igloobel qui fonctionne très bien mais qui oblige à sélectionner les fichiers désirés pour en avoir la liste.

    https://www.developpez.net/forums/d1.../#post10844951
    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
     
        'ouverture d'un fichier par boite FileDialog
    '********************************************************************************
        'Declaration d'une variable comme objet FileDialog
        Dim fd As FileDialog
     
        'Creation d'un objet FileDialog comme un File Picker dialog box.
        Set fd = Application.FileDialog(msoFileDialogFilePicker)
     
        'Déclaration d'une variable contenant le "path" de style variant
        Dim vrtSelectedItem As Variant 'obligatoirement de type variant
     
        With fd
     
            'donner le Path initial lors de l'affichage de la boite filedialog.
            'Cela permet d'arriver directement sur le repertoire addéquat
            '.InitialFileName = "D:\Travail_tempo\Bons\Remises\"
            .InitialFileName = "\\Serv.com\Consultation\Donnees_techniques\LOG"
     
            'Utilisation de la méthode show pour afficher le File Picker de la boite de dialogue et
            '   retourne la valeur de l'action de l'utililisateur.
            If .Show = -1 Then
     
               'Dans le cas d'ue plusieurs saisies
                 'Step through each string in the FileDialogSelectedItems collection.
                For Each vrtSelectedItem In .SelectedItems
     
                    'vrtSelectedItem est un String contenant le "path"  de chaque item selectionné.
                    'affichage du "PATH et du fichier selectionné" dans une boite message
                    'MsgBox "Vous avez sélectionné : " & vrtSelectedItem
                    file_select = vrtSelectedItem
                Next vrtSelectedItem
     
            'Au cas ou l'utilisateur appuis sur Cancel...
            Else
                'Dans ce programme je ne fais rien.
            End If
        End With
    Existe-t-il un moyen de récupérer cette liste de fichiers Excel de façon transparente sans faire apparaitre une fenêtre FileDialog nécessaire pour faire une sélection dont je n'ai pas besoin puisque tous les fichiers (filtrés par un *.xlsm) doivent être pris en compte ?

    Merci de votre aide

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 205
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 205
    Points : 1 769
    Points
    1 769
    Par défaut
    Salut,

    Rien de plus facile avec FSO.
    Ci dessous un exemple qui renvoie la liste des fichiers dans une collection:
    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
    Public function GetFilesList(ByVal FolderPath as string, ByVal ExtentionName as string) As Collection
        Dim List As Collection
        Set List = New Collection
     
        Dim Fso As Object     '// Scripting.FileSystemObject
        Set Fso = CreateObject("Scripting.FileSystemObject")
     
        Dim Folder As Object    '// Scripting.Folder
        Set Folder = Fso.GetFolder(Path)
     
        Dim File As Object    '// Scripting.File
        For Each File In Folder.Files
            If(Fso.GetExtentionName(File.Name) = ExtentionName) Then
                List.Add File.Name
            End If
        Next
        Set GetFilesList = List
    End Function
    Utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim List As Collection
    Set List = GetfilesList("c:\.................", "xlsm")

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 84
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par deedolith Voir le message
    Ci dessous un exemple qui renvoie la liste des fichiers dans une collection:
    Merci, c'est exactement ce que je cherchais.👍

    Bonne soirée 😉

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/02/2009, 17h58
  2. Drag & Drop dans la liste des fichiers
    Par SaumonAgile dans le forum Dreamshield
    Réponses: 2
    Dernier message: 19/04/2008, 21h13
  3. Réponses: 9
    Dernier message: 21/08/2007, 08h22
  4. Réponses: 4
    Dernier message: 11/07/2007, 19h28
  5. Réponses: 9
    Dernier message: 27/10/2005, 22h38

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