Macro - Recherche et sélection de fichier

panpipes

XLDnaute Nouveau
Bonjour,

Je rencontre un problème dans la réalisation d'une macro visant à récupérer des données dans d'autres fichiers.

Je sais faire en sorte de récupérer des informations si les fichiers où se trouvent les informations à extraire sont situés dans le même dossier que le fichier excel où se situe la macro (voir ci dessous), mais je n'arrive pas à modifier ce code de façon à aller chercher les fichiers dans d'autres dossiers...



Code:
    Dim navirename1 As String
    
    Private ch As String 'déclare la variable ch (CHemin)
    Private cd As Workbook 'déclare la variable cd (Classeur Destination)
    Private od As Object 'déclare la variable od (Onglet Destination)


    Dim sf As Object 'déclare la variable sf (Système de Fichiers)
    Dim d As Object 'déclare la variable d (Dossiers1)
    Dim fs As Object 'déclare la variable fs (FichierS)
    Dim f As Object 'déclare la variable f (Fichier)

    ch = ThisWorkbook.Path 'définit le chemin d'accès ch
    Set cd = ThisWorkbook 'définit le classeur destination cd
    Set od = cd.Sheets("FuelConsumptionDATA") 'définit l'onglet destination od
    Set sf = CreateObject("Scripting.FileSystemObject") 'définit le système de fichiers sf
    Set d = sf.getfolder(ch) 'définit le dossiers d
    Set fs = d.Files 'définit l'ensemble des fichiers fs du dossier d
    
        If ComboBox1.Value = "navire 1" Then

            navirename1 = "NAVIRE 1"

            For Each f In fs 'boucle sur tous les fichiers f de l'ensemble de fichiers fs
                If Left(f.Name, 4) = "NAVI" Then Me.ListBox1.AddItem f.Name
            Next f 'prochain fichier de la boucle

        End If


    Dim i As Integer 'déclare la variable i (Incrément)
    Dim j As Integer 'déclare la variable i (Incrément)
    Dim cs As Workbook 'déclare la variable cs (Classeur Source)
    Dim os As Object 'déclare la variable os (Onglet Source)
    Dim dest As Range 'déclare la variable dest (cellule de DESTination)

    Me.Hide 'masque l'UserForm1

    Application.ScreenUpdating = False 'masque les rafraîchissements d'écran

    For i = 0 To Me.ListBox1.ListCount - 1 'boucle sur tous les éléments de la ListBox1

        If Me.ListBox1.Selected(i) = True Then 'condition : si l'élément est sélectionné
    
            Workbooks.Open (ch & "\" & Me.ListBox1.List(i)) 'ouvre le fichier


Ce code me permet :
- de lister les fichiers excel figurant dans le même dossier et commençant par NAVI
- de les faire apparaître dans une listebox pour ensuite sélectionner ceux désirés
- d'ouvrir et récupérer les fichiers sélectionnées pour en retirer les informations

Cependant, dans ce cas précis, j'aimerai faire en sorte de :
- suivant le nom entré dans la combobox, définir le chemin d'accès des dossiers à parcourir
- sélectionner, ouvrir, et retirer les informations de l'ensemble des fichiers excel présents dans ce dossiers en fonction de leur nom (pas besoin de les faire apparaître dans une liste box)

J'ai essayé le code suivant mais je bloque...

Code:
c = Dir("C:\Users\meyerv\Desktop\Fuel & Surface\Test\17 - Dossiers Voyages\" & navirename1 & "\" & y1 & "\" & x & " - " & y1 & "\" & "*.xls")

            Do While c <> ""
            
                Set cs = GetObject("C:\Users\meyerv\Desktop\Fuel & Surface\Test\17 - Dossiers Voyages\" & navirename1 & "\" & y1 & "\" & x & " - " & y1 & "\" & c)
                
                If Left(c.Name, 3) = fi Then
                
                    Workbooks.Open (ch & "\" & f)   'ouvre le fichier
                    Set os = cs.Sheets(1)           'définit l'onglet source os
    
                    
                    Set dest = od.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination

Merci d'avance pour votre aide,

Bonne soirée,

Panpipes
 

Discussions similaires

Statistiques des forums

Discussions
312 164
Messages
2 085 877
Membres
103 009
dernier inscrit
dede972