1ere erreur repérée :
1 2 3 4 5
| For Each Fich In Rep.Files
If Right(Fich.Name, 4) = ".xlsx" Then
dest.Offset(1, 1).Value = Fich.Name
End If
Next |
Il faut mettre 5 car ton extension fait 5 caractères (.xlsx) :
If Right(Fich.Name, 5) = ".xlsx" Then
Du coup tu ne passe jamais dans le condition, et cette commande :
dest.Offset(1, 1).Value = Fich.Name
n'est jamais exécutée ! Tu peux le constater en mettant un point d'arrêt dessus --> ça ne s'arrête jamais avec la valeur 4.
Cette commande dans ton cas n'est pas propre, if faut tester si le fichier existe :
On Error Resume Next 'Pour éviter les erreur si classeur n'existe pas
Fais plutôt :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
if objFSO.FileExists("\mon_rep\suivi.xlsx") then
Set oWk = oExcel.Workbooks.Open("\mon_rep\suivi.xlsx")
On Error GoTo 0
If oWk Is Nothing Then
MsgBox "Erreur sur ouverture classeur fichier inexistant ", vbCritical
Exit Sub
End If
Set dest = oWk.Sheets("feuil1").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)
For Each Fich In Rep.Files
If Right(Fich.Name, 4) = ".xlsx" Then
dest.Offset(1, 1).Value = Fich.Name
End If
Next
End if |
C'est objFSO.FileExists ou objFSO.Exist("chemin") --> à voir avec l'intellisense si tu as activé la référence dans VB.
Ensuite pour
1 2 3
| Set objFSO = New Scripting.FileSystemObject
Set objFSO = CreateObject("Scripting.FileSystemObject") |
Les deux commandes font la même chose ! Donc tu ne mets qu'une des 2.
"Set objFSO = New Scripting.FileSystemObject" --> Si tu as ajouté la référence à fso dans VB
"Set objFSO = CreateObject("Scripting.FileSystemObject")" --> Si tu n'as pas ajouté la référence.
C'est le même principe pour Excel...
Je te conseille d'ajouter les références pour profiter de "l'intellisense" c'est à dire le "menu déroulant" qui apparait pour te proposer les méthodes disponibles sur les objets...
Pour ce code :
1 2 3 4 5
| For Each Fich In Rep.Files
If Right(Fich.Name, 5) = ".xlsx" Then
dest.Offset(1, 1).Value = Fich.Name
End If
Next |
Tu veux surement ajouter le nom de plusieurs fichiers dans ton Offset Excel, il faut faire une concaténation :
dest.Offset(1, 1).Value = dest.Offset(1, 1).Value & Fich.Name & VbCrLf
"VbCrLf" = retour chariot
PS : Désolé s'il y a des erreurs de syntaxe ça fait des plombes que je n'ai pas codé en VB6
Partager