Bonjour,

Ne souhaitant pas réinventer la roue, j'ai récupérer du code pour extraire un zip. Le code fonctionne bien, je décide de le mettre dans une Fonction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Function ExtractZip(zipFileLocation As String, outputLocation As String)
 
    Dim fso, tempfile, tfolder
    Dim zipFile, output
 
    ' I don't know why but if I didn't do that it doesn't work <= ca c'est moi!!!
    zipFile = zipFileLocation
    output = outputLocation
 
    ' Shell object
    Set objShell = CreateObject("Shell.Application")
    ' File system object
    Set fso = CreateObject("Scripting.FileSystemObject")
 
    ' Extract the file
    Set FilesInZip = objShell.Namespace(zipFile).items
    objShell.Namespace(output).CopyHere (FilesInZip)
 
    ' Reset variable
    Set fso = Nothing
    Set objShell = Nothing
 
End Function
Mon soucis, c'est les affectations en début de fonction. Si je fais
Set FilesInZip = objShell.Namespace(zipFileLocation).items
sans passer par la variable intermédiaire, cela ne fonctionne pas, je me prend l'erreur 91, objet indéfini [Object variable or With block variable not set (Error 91)].

En soi, cela fonctionne et pourrai me convenir, mais je ne comprend pas trop pourquoi je dois utiliser des variables locales , merci de votre aide.