Erreur 429: un composant activeX ne peut pas créer d'objet

Bonjour,

Je tente de réaliser une macro qui dezippe un dossier et sous-dossier dans un autre dossier, mais j'ai une erreur sur la création d'objet. (J'ai récupérer cette macro sur le forum).

erreur 429: un composant ActiveX ne peut pas créer d'objet

J'ai déjà eu cette erreur par le passé avec une macro qui me permettait de récupérer tout les fichier Excel dans plusieurs sous-dossier d'un dossier (plus précisément sur l'objet FileSystemObject).

En revanche, la je bloque sur la création d'un objet Shell.. J'ai tenté de la contourner de la même manière en créant Shell32.shell mais cela n'a pas fonctionné car Excel ne reconnait pas l'objet..

Toutes propositions de solutions est la bienvenue. Je poste ma macro juste en dessous.

Merci d'avance.

Sub Unzip()

    Dim FSO As Object
    Dim ShApp As Object
    Dim dossier As Object, fichier As Object
    Dim répertoire_zip As String, répertoire_unzip As Variant

    '// Assignation des répertoires
     répertoire_zip = "C:\Users\XXX\Documents\ELM_Qualimetry\test_zip_file.zip"
    répertoire_unzip = "C:\Users\XXX\Documents\ELM_Qualimetry\test_unzip_file"

    '// Assignation Application Shell et Objet gestion de fichiers
     Set ShApp = CreateObject("Shell.Application")
    Set FSO = CreateObject("Scripting.FileSystemObject")

    '// Balayage des fichiers .zip se trouvant dans le répertoire et dézippage
     Set dossier = FSO.GetFolder(répertoire_zip)
    For Each fichier In dossier.Files
        If FSO.GetExtensionName(fichier.path) = "zip" Then
            ShApp.Namespace(répertoire_unzip).CopyHere ShApp.Namespace(fichier.path).Items
        End If
    Next

End Sub

Salut,

1) Sur qu'elle création cela bloque FSO ou ShApp

2) As-tu des références de cochées dans Outils/Références ?

Salut,

Pardon pour le délai.

1 - Le problème se trouve sur ShApp, je ne sais pas pour FSO car le programme plante avant...

J'avais déjà eu ce type de problème justement avec un FileSystemObject sur une boucle de parcours de dossier et sous-dossier, mais je l'avais contourné en déclarant FSO de cette manière :

Dim FSO as FileSystemObject

Set FSO = New FileSystemObject

J'ai essayé une combine un peu pareil pour ShApp mais sans succès. (Shell32.Shell)

2 - Oui, j'en ai 6 de cochées : VBA for Application, Microsoft Excel 16.0 Object Library, OLE Automation, Microsoft Office 16.0 Object Library, Microsoft Forms 2.0 Object Library et Microsoft Scripting Runtime

Salut,

Je rectifie mon message car pas bien tout lu.
Teste en déclarant tes références dans outils/Références,

Et en passant les accents sont à proscrire en VBA

Ok trouvé !

J'ai coché "Microsoft Shell Controls and Automation" dans Outils/Références et j'ai utilisé de l'early binding, plus d'erreur à ce niveau la.

J'ai une erreur de "chemin d'accès introuvable" mais je devrais pouvoir régler ce problème sans trop de soucis.

Merci encore

Le code :

Sub Unzip()

    Dim FSO As Scripting.FileSystemObject
    Dim ShApp As Shell32.IShellDispatch4
    Dim dossier As Object, fichier As Object
    Dim repertoire_zip As String, repertoire_unzip As Variant

    '// Assignation des répertoires
    repertoire_zip = "C:\Users\XXX\Documents\ELM_Qualimetry\test_zip_file.zip"
    repertoire_unzip = "C:\Users\XXX\Documents\ELM_Qualimetry\test_unzip_file"

    '// Assignation Application Shell et Objet gestion de fichiers
    Set ShApp = New Shell32.Shell
    Set FSO = New Scripting.FileSystemObject

    '// Balayage des fichiers .zip se trouvant dans le répertoire et dézippage
    Set dossier = FSO.GetFolder(repertoire_zip)
    For Each fichier In dossier.Files
        If FSO.GetExtensionName(fichier.path) = "zip" Then
            ShApp.Namespace(repertoire_unzip).CopyHere ShApp.Namespace(fichier.path).Items
        End If
    Next

End Sub
Rechercher des sujets similaires à "erreur 429 composant activex pas creer objet"