XL 2013 le dézipage ne fonctionne pas

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

patricktoulon

XLDnaute Barbatruc
Bonjour a tous
j'ai un petit soucis avec dezip and rezip
j'aimerais sortir le dossier "_rels" et mettre le mien
ou l’écraser avec le mien
pour le sortir movehere ne fonctionne pas
pour l’écrasement j'ai un msgbox me disant de renommer le fichier donc l’écrasement niet
Capture.JPG

voir les lignes "sortie du dossier" et "insertion du dossier"
VB:
Public newprojetFolder$
Public SampleC$
Public SampleZip$
Public previewZip$
Public dézipé$
Sub newprojet()
    With Application: .ScreenUpdating = False: .DisplayAlerts = False: End With
    newprojetFolder = ThisWorkbook.Path & "\NewProjet"
    dézipé = newprojetFolder & "\dezip"
    If Dir(newprojetFolder, vbDirectory) <> "" Then deleteFolder newprojetFolder
    MkDir newprojetFolder
    MkDir newprojetFolder & "\dezip"
    MkDir newprojetFolder & "\dezip\_rels"
    MkDir newprojetFolder & "\dezip\customUI"

    SampleC = newprojetFolder & "\sample.xlsm"
    SampleZip = newprojetFolder & "\sample.zip"
    previewZip = newprojetFolder & "\preview.zip"
    With Workbooks.Add: .SaveAs Filename:=SampleC, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False: .Close: End With
    Application.ScreenUpdating = True
    Do While Dir(SampleC) = "": DoEvents: Loop
    Name SampleC As SampleZip
    FileCopy SampleZip, previewZip
    CreatedemoXML
    DeplacerFichierDanspreviewsZip
End Sub

Sub deleteFolder(dossier)
    With CreateObject("Scripting.FileSystemObject"): .GetFolder(dossier).Delete: End With
End Sub
Sub CreatedemoXML()
    fichier = newprojetFolder & "\dezip\customUI\customUI14.xml"
    x = FreeFile: Open fichier For Append As #x: Print #x, [A2].Text: Close #x
    fichier = newprojetFolder & "\dezip\customUI\customUI.xml"
    x = FreeFile: Open fichier For Append As #x: Print #x, [A3].Text: Close #x
    fichier = newprojetFolder & "\dezip\_rels\.rels"
    x = FreeFile: Open fichier For Append As #x: Print #x, [A1].Text: Close #x
End Sub


Sub DeplacerFichierDanspreviewsZip()

'gestion des erreurs
    On Error GoTo ErreurCompression

'définition des variables
    Dim ApplicationArchivage As Object
    Dim dossier, dossier2, FichierZip
  
'informations sur les fichiers (chemins & noms)
     FichierZip = newprojetFolder & "\preview.zip"
     dossier = newprojetFolder & "\dezip\customUI"
    dossier2 = newprojetFolder & "\dezip\_rels"
  
'je voudrais sortir le dossier "_rels"
'ApplicationArchivage.Namespace(newprojetFolder).moveHere ApplicationArchivage.Namespace(FichierZip).items.Item("_rels") ' sortie du dossier

'copier le dossier dans l'archive
    Set ApplicationArchivage = CreateObject("Shell.Application")
    ApplicationArchivage.Namespace(FichierZip).copyHere dossier
    Application.Wait Now + 0.00001

'si je n'arrive pas a le sortir au moins l'ecraser avec celui là!!!!!!!!!!!
ApplicationArchivage.Namespace(FichierZip).copyHere dossier2' insertion du dossier
   'Message final
    MsgBox "L'archivage a été mis à jour..."

Exit Sub
ErreurCompression:
    MsgBox "Une erreur s'est produite..."
End Sub
 
bonjours a tous
il n'y a vraiment personne que ça intéresse?
aujourd'hui j'essaie de sortir un dossier et je plante toujours sur la ligne d'extraction
que ce soit "copyhere" ou "movehere" j'ai toujours l'erreur 91 "variable block non définie"
je pige plus rien

au secours !!!je me noie dans 10 lignes de code
VB:
Sub startingProject()
    Dim NewProjet$, DeZip$, zipzip$,SampleC, ApplicationArchivage As Object
    NewProjet = ThisWorkbook.path & "\NewProjet"
    DeZip = NewProjet & "\dezip"
    SampleC = NewProjet & "\sample.xlsm"
    zizip = NewProjet & "\sample.zip"

    If Dir(NewProjet, vbDirectory) <> "" Then deleteFolder (NewProjet)
    MkDir (NewProjet)
    If Dir(DeZip, vbDirectory) = "" Then MkDir (DeZip)

    'creation archive sur la base du xlsm
    Application.ScreenUpdating = False
    With Workbooks.Add: .SaveAs Filename:=SampleC, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False: .Close: End With
    Application.ScreenUpdating = True
    Do While Dir(SampleC) = "": DoEvents: Loop
    Name SampleC As zizip



    'On Error GoTo ErreurCompression
    Set ApplicationArchivage = CreateObject("Shell.Application")
    MsgBox ApplicationArchivage.Namespace(zizip).items.Item(1).Name
    
    ApplicationArchivage.Namespace(DeZip).moveHere ApplicationArchivage.Namespace(zizip).items.Item("_rels")
    Set ApplicationArchivage = Nothing
    Exit Sub
ErreurCompression:
    MsgBox "Une erreur s'est produite..."
End Sub
Sub deleteFolder(dossier)
    With CreateObject("Scripting.FileSystemObject"): .GetFolder(dossier).Delete: End With
End Sub
 
Dernière édition:
re
bon laurent t'inquiet j'y suis arrivé
la raison n'est pas là elle est que shell namespaces imposes des contraintes de temps et d'affiliation
1°de temps pour laisser le temps de faire le job
2°d'affiliation :quand on ce sert de namespace(source ) namespace(dossier ou fichier) les fichiers dans l'un ou dans l'autre ne peuvent plus être touchés avant la fin

donc voila la demo
le but étant de créer a la volée un fichier xlsm avec son ruban perso
ouvrir le demo.xlsm après

finalement j'ai trouvé tout seul 😉
VB:
Dim Folder_NewProjet$, Folder_DeZip$, zipzip$, Folder_customUI, Folder_rels, customUIxml, customUI14xml, relXML, SampleC$
Sub startingProject2()
    Dim ApplicationArchivage As Object, motifs
    Application.ScreenUpdating = False

    Folder_NewProjet = ThisWorkbook.path & "\NewProjet"
    Folder_DeZip = Folder_NewProjet & "\DeZip"

    SampleC = Folder_NewProjet & "\sample.xlsm"
    zizip = Folder_NewProjet & "\sample.zip"
    tempo = Folder_NewProjet
    Folder_customUI = Folder_DeZip & "\customUI"
    Folder_rels = Folder_DeZip & "\_rels"
    customUIxml = Folder_customUI & "\customUI.xml"
    customUI14xml = Folder_customUI & "\customUI14.xml"
    relXML = Folder_rels & "\.rels"
    If Dir(Folder_NewProjet, vbDirectory) <> "" Then deleteFolder2 (Folder_NewProjet)
    MkDir (Folder_NewProjet): MkDir Folder_DeZip: MkDir Folder_customUI: MkDir Folder_rels

    'creation archive sur la base d'un xlsm vierge
    With Workbooks.Add: .SaveAs Filename:=SampleC, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False: .Close: End With
    Application.ScreenUpdating = True
    Do While Dir(SampleC) = "": DoEvents: Loop    'attente creation
    Name SampleC As zizip    'conversion en archive ZIP

    motif = "la décompression"
    On Error GoTo ErreurCompressiondecompression
    '*********************************************************
    ' suppression  du dossier "_rels de l'archive

    Set ApplicationArchivage = CreateObject("Shell.Application")
    ApplicationArchivage.Namespace(tempo).moveHere ApplicationArchivage.Namespace(zizip).items.Item("_rels")
    Set ApplicationArchivage = Nothing

    Do: DoEvents: Loop While Dir(tempo & "\_rels", vbDirectory) = ""    ' attente d'extraction
    deleteFolder2 tempo & "\_rels"    ' suppression de ce dossier
    '*********************************************************
    ' MsgBox "l'Archive  a été crée et le dossier ""_rels"" en a  été supprimé"

    CreatedemoXML2    ' creation des customui de demo

    Do: DoEvents: Loop While Dir(relXML) = ""


    '*********************************************************
    'injection des dossier customui et rels dans l'archive
    motif = " l'injection dans l'archive"
    Set ApplicationArchivage = CreateObject("Shell.Application")
    ApplicationArchivage.Namespace(zizip).copyHere ApplicationArchivage.Namespace(Folder_customUI)
    Application.Wait Now + 0.00001
    ApplicationArchivage.Namespace(zizip).copyHere ApplicationArchivage.Namespace(Folder_rels)
    Set ApplicationArchivage = Nothing
    '*********************************************************
    motif = " reconversion en ""xlsm"""
    Application.Wait Now + 0.00002
    Name zizip As SampleC  'conversion en "".xlsm""
 

    MsgBox "terminé opération reussie :)"
    Exit Sub
ErreurCompressiondecompression:
    MsgBox "Une erreur s'est produite à " & motif & vbCrLf & Err.Description
End Sub
Sub deleteFolder2(dossier)
    With CreateObject("Scripting.FileSystemObject"): .GetFolder(dossier).Delete: End With
End Sub
Sub CreatedemoXML2()
    fichier1 = customUI14xml
    x = FreeFile: Open fichier1 For Append As #x: Print #x, [A2].Text: Close #x
    fichier2 = customUIxml
    x = FreeFile: Open fichier2 For Append As #x: Print #x, [A3].Text: Close #x
    fichier3 = relXML
    x = FreeFile: Open fichier3 For Append As #x: Print #x, Replace([A1].Text, "><", ">" & vbCrLf & "<"): Close #x
End Sub
 

Pièces jointes

bonjour Thierry
oui laborieux la manip de namespace (dossier/ archive) et (vice et versa)
c'est juste un tour de passe entre deux fichier
les contraintes sont quand même pénibles
  1. le transfert dans dossier ou sub dossier est sensible
  2. si riche arborescence dans dossier de l'archive temps allongé
  3. etc...
il faut faire avec
mais j'ai ma base 😉
je suis en train de voir a simplifier pour accélérer

et qui a dit que l'on pouvait pas créer un ribbon dynamique hein!!
et si je le fait en xla et que je l'open tout de suite c'est pas du dynamique ca ?? 😉
 
Ne me parle pas de "Dynamique" LoL
Je suis les deux pieds dedans au taff avec Microsoft Dynamics Business Central que l'on doit adapter à nos besoins customisés à bloc avec les anciennes versions NAV (ou Navision)... Ca aussi ce n'est pas simple...

Bon courage
@+Thierry
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour