Bonjour,
Je reviens aujourd'hui suite à un nouveau problème, que je comprend très bien, mais dont je ne trouve pas de solution.
Je suis entrain de créer un petit programme qui liste tout les fichiers d'une arborescence dans un fichier texte.
Le problème est la manière dont je l'ai programmé. C'est à dire que lors de l'événement du clique sur un bouton, j'exécute une fonction qui fait la liste. Mais j'ouvre mon projet à chaque fois quand je passe d'un répertoire à l'autre, donc le premier passage passe bien, puis au second passage (après être passé au sous-répertoire donc) j'ai une erreur 70 car je crée une seconde fois le fichier texte.
Pour résoudre ce problème j'ai essayé de faire un système d'"interrupteur", donc avec une variable globale de type booléenne, je regarde si c'était la première fois ou la seconde fois que je passais dans la fonction, pour éviter de recréer 2 fois le fichier.
Mais un autre problème survient, car j'utilise des méthodes de l'objet du fichier texte (pour écrire dedans : WriteLine) et donc comme on n'y a plus accès VBA fait la tronche...
Je ne sais pas si je me suis bien expliqué, donc je vous montre ma fonction :
Si ce n'est pas suffisant, ou que je ne suis pas assez précis dans mes explications dites le moi, je ferai de mon mieux pour expliquer le problème.
Merci d'avance
Je reviens aujourd'hui suite à un nouveau problème, que je comprend très bien, mais dont je ne trouve pas de solution.
Je suis entrain de créer un petit programme qui liste tout les fichiers d'une arborescence dans un fichier texte.
Le problème est la manière dont je l'ai programmé. C'est à dire que lors de l'événement du clique sur un bouton, j'exécute une fonction qui fait la liste. Mais j'ouvre mon projet à chaque fois quand je passe d'un répertoire à l'autre, donc le premier passage passe bien, puis au second passage (après être passé au sous-répertoire donc) j'ai une erreur 70 car je crée une seconde fois le fichier texte.
Pour résoudre ce problème j'ai essayé de faire un système d'"interrupteur", donc avec une variable globale de type booléenne, je regarde si c'était la première fois ou la seconde fois que je passais dans la fonction, pour éviter de recréer 2 fois le fichier.
Mais un autre problème survient, car j'utilise des méthodes de l'objet du fichier texte (pour écrire dedans : WriteLine) et donc comme on n'y a plus accès VBA fait la tronche...
Je ne sais pas si je me suis bien expliqué, donc je vous montre ma fonction :
Code:
Function ListeFichiers(Repertoire As String)
'Déclaration de l'objet FSO, qui nous permettra de manipuler les fichiers
Dim Fso As Scripting.FileSystemObject
'Déclaration de plusieurs objets
'SourceFolder définie le répertoire ou le dossier source d'où part les listes
Dim SourceFolder As Scripting.Folder
'SubFolder est le sous-dossier du dossier actuellement selectionné
'il permettra de lister ses fichiers grâce à un appel récursif.
Dim SubFolder As Scripting.Folder
'FileItem correspond au fichier sélectionné
Dim FileItem As Scripting.File
'Txt est le fichier texte qu'on utilisera pour lister les fichiers de l'arborescence
Dim Txt
'L'instanciation des différents objets
Set Fso = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = Fso.GetFolder(Repertoire)
' C'est ici que l'erreur 70 apparait.
Set Txt = Fso.CreateTextFile("F:\Macros\Test.txt", True)
Dim i As Long
Dim ecrire As String
'Boucle sur tous les fichiers du répertoire
For Each FileItem In SourceFolder.Files
Txt.WriteLine i
ecrire = FileItem.Name
Txt.WriteLine ecrire
ecrire = FileItem.Type
Txt.WriteLine ecrire
ecrire = FileItem.ParentFolder
Txt.WriteLine ecrire
Txt.WriteLine " "
i = i + 1
Next FileItem
'Appel récursif pour lister les fichier dans les sous-répertoires
For Each SubFolder In SourceFolder.subfolders
ListeFichiers SubFolder.Path
Next SubFolder
End Function
Si ce n'est pas suffisant, ou que je ne suis pas assez précis dans mes explications dites le moi, je ferai de mon mieux pour expliquer le problème.
Merci d'avance
Dernière édition: