VBA - Boucle pour ouvrir chaque dossier puis fichier contenu
Bonjour à tous,
j'aimerais réaliser une macro me permettant de parcourir une page SharePoint, ouvrir le 1er dossier de cette page, puis ouvrir le fichier excel contenu commençant par "SIMULATION_". Ensuite elle ouvrirait le 2ème dossier, puis ouvrirait le fichier excel contenu commençant par "SIMULATION_". Et ainsi de suite jusqu'à ce qu'elle ait parcouru tous ces fichiers.
Jusqu'ici je parcourais une page SharePoint sur laquelle tous mes fichiers "SIMULATION_" étaient listés et j'utilisais cette macro:
Function BoucleFichiers(Chemin As String, Extension As String) As Integer
Dim Fichier As String
BoucleFichiers = 0
'Boucle sur tous les fichiers 'Extension' du répertoire 'Chemin'
Fichier = Dir(Chemin & "*" & Extension)
Do While Len(Fichier) > 0
BoucleFichiers = BoucleFichiers + ChargerFichier(Chemin & Fichier)
Fichier = Dir()
Loop
End FunctionDans ma variable Chemin j'avais rentré l'adresse SharePoint et j'avais rentré ".xlsx" dans ma variable extension. La fonction ChargerFichier que j'appelais me permettait de faire ce que j'avais à faire dans chacun des fichiers. Quelqu'un pourrait-il m'aider ?
Je vous souhaite une bonne journée,
SkillzZ
Rebonjour à tous,
ma demande n'était peut-être pas assez précise ou trop importante. Du coup je vous transmets le travail que j'ai effectué depuis pour essayer d'obtenir ce que je veux:
Dim i As Long
Sub Consolider_Simu()
Dim S_Commande As Worksheet
Dim Chemin As String
Dim Extension As String
Set S_Commande = ThisWorkbook.Sheets("Commande")
Chemin = S_Commande.Cells(3, 2).Value
Extension = S_Commande.Cells(4, 2).Value
i = 6
Nb = BoucleFichiers(Chemin, Extension)
End Sub
Function BoucleFichiers(Chemin As String, Extension As String) As Integer
Dim Fso As Object
Dim Dossier As Object
Dim Fichier As Object
Dim WB_TargetFichier As Workbook
Dim TargetSheet As Worksheet
Dim MainSheet As Worksheet
Set Fso = CreateObject("Scripting.FileSystemObject")
Set WB_TargetFichier = Workbooks.Open(Fichier)
Set TargetSheet = WB_TargetFichier.Sheets("SIMULATION")
Set MainSheet = ThisWorkbook.Sheets("Main")
BoucleFichiers = 0
For Each Dossier In Fso.GetFolder(Chemin).SubFolders
For Each Fichier In Dossier.Files
If Fichier = "SIMULATION_" & "*" Then
TargetSheet.Range("F6:G13").Select
Selection.Copy
MainSheet.Range("D" & i).PasteSpecial Paste:=xlPasteValues
MainSheet.Range("D" & i).PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
i = i + 22
BoucleFichiers = BoucleFichiers + 1
WB_TargetFichier.Close savechanges:=False
Else: i = i + 22
End If
Next Fichier
Next Dossier
End FunctionMa macro ne fonctionne malheureusement pas, j'ai le message d'erreur 91 Variable objet ou variable de bloc With non définie. Je pense que c'est parce que je lui demande d'ouvrir un une variable qui est un "Object" et non un "Workbook". Le souci est que j'utilise derrière une boucle "For each" avec cette même variable, et cette boucle ne fonctionnera pas avec une variable du type "Workbook". Quelqu'un pourrait-il m'aider sur le sujet ?
SkillzZ