Erreur FSO

none42 Messages postés 4 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 29 octobre 2008 - 28 oct. 2008 à 11:56
none42 Messages postés 4 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 29 octobre 2008 - 29 oct. 2008 à 16:58
Salut à tous !

Voilà, je suis en stage et depuis peu je fais du VBA Excel.

Je suis sur une macro permettant de suivre les évolutions de différents fichiers.

Je vous explique en gros ce que je veux faire :
Dans un dossier "Demande de modification", j'ai plusieurs sous-dossiers nommés "référence_année_mois_jour" et dans ces sous-dossiers un fichier type Excel nommé de la même façon que précédement.

Voici le début de mon code :

Sub LMAJ()


Dim objFSO, objDossier
Dim Chemin As String
....


Chemin = ....
Set objFSO = CreateObject("Scripting.FolderSystemObject")
'Ouvrir un répertoire en créant un objet Folder
Set objDossier = objFSO.GetFolder(Chemin)


If (objDossier.Folders.Count > 0) Then
    For Each Dossier In objDossier.Folders
        NomDossier = Dossier.Name
...

J'ai une erreur 429 qui s'affiche quand je suis sur la ligne "Set objFSO = CreateObject("Scripting.FolderSystemObject")" quand le code est sur une feuille.

Quand le code est dans un module, j'ai une autre erreure : "Le composant active X ne peut pas créer l'objet".

J'ai changer le mot "Folder" par "File" pour avoir les noms de fichiers dans "Chemin" et tout semble marcher correctement.

Merci de me trouver une astuce, car je ne sais plus où chercher.

Arnaud

7 réponses

gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
28 oct. 2008 à 12:59
Bonjour,

n'y a il pas une fonction "Dir" en vba?

a+
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
28 oct. 2008 à 13:35
Salut

As-tu mis les références a windows scripting dans les références de ton projet VBA?
0
none42 Messages postés 4 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 29 octobre 2008
28 oct. 2008 à 13:41
Alors
gillardg : je suis débutant en VBA et je n'ai pas encore utilisé la commande DIR
nhervagault : j'ai bien mis la référence windows scripting dans mon projet VBA
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
28 oct. 2008 à 14:48
Salut,
Si tu passes par CreateObject, tu n'as aucun besoin de faire références à windows scripting runtime.

De plus ce n'est pas.

Set objFSO = CreateObject( "Scripting.FolderSystemObject" )

Mais

Set objFSO = CreateObject(
"Scripting.FileSystemObject")

@+: Ju£i€n
Pensez: Réponse acceptée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
none42 Messages postés 4 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 29 octobre 2008
28 oct. 2008 à 19:01
Merci j'ai réussi a trouver la solution
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
28 oct. 2008 à 19:33
Salut,
Et quelle était la solution???? merci de la partager c'est un peu le but de ce site non???

@+: Ju£i€n
Pensez: Réponse acceptée
0
none42 Messages postés 4 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 29 octobre 2008
29 oct. 2008 à 16:58
C'était prévu de mettre la solution mais je n'étais plus au boulot
La voiçi :

Sub LMAJ()


Dim objFSO As Scripting.FileSystemObject


Dim objDossier As Scripting.Folder
Dim objFichier


Dim Chemin As String
Dim CheminFichier As String
Dim NomFichier As String
Dim NomDossier As String

Chemin = ...
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objDossier = objFSO.GetFolder(Chemin)


For Each Dossier In objDossier.SubFolders
    NomDossier = Dossier.Name
    CheminFichier = Chemin & NomDossier & ""
    Set objFichier = objFSO.GetFolder(CheminFichier)
   
    For Each Fichier In objFichier.Files
    ...

Merci d'avoir répondu au post !

Arnaud
0
Rejoignez-nous