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...
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...
Merci d'avance pour votre aide,
Bonne soirée,
Panpipes
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