XL 2016 Renommer fichier après extraction zip

Dymouille

XLDnaute Nouveau
Hello !

j'ai ce petit bout de code qui dezip un fichier,

VB:
    Set ApplicationArchivage = CreateObject("Shell.Application")
    ApplicationArchivage.Namespace(DossierDestination).CopyHere ApplicationArchivage.Namespace(FichierArchive).items
    Set ApplicationArchivage = Nothing

j'aimerais ensuite renommer le fichier avec le nom du dossier,
j'ai essayé avec Dir(), mais je dois mal m'y prendre

Merci d'avance !
 

Dymouille

XLDnaute Nouveau
Bonjour,

Merci pour ta proposition,
ca me retourner mon dossier Zip comme ceci :
1620653524691.png


Ca ne touche pas au nom du fichier !

Je te joins le code ci-dessous, Merci !

VB:
Sub DecompresserArchiveZip()



'définition des variables
    Dim ApplicationArchivage As Object
    Dim FichierArchive As Variant
    Dim DossierDestination As Variant

'informations sur l'archive et le dossier pour les fichiers décompressés
    FichierArchive = "C:\Users\dl\FnB Panel,Descriptions,Reference3012789200103.zip" 'l'archive à décompresser
    DossierDestination = "C:\Users\dl\Extraction PDH\Unzip" 'le dossier dans lequel les fichiers seront décompressés
    
'vérification du format du chemin du dossier de destination
    If Right(DossierDestination, 1) <> "\" Then DossierDestination = DossierDestination & "\"

'Décompression
    Set ApplicationArchivage = CreateObject("Shell.Application")
    ApplicationArchivage.Namespace(DossierDestination).CopyHere ApplicationArchivage.Namespace(FichierArchive).items
    Set ApplicationArchivage = Nothing
 

End Sub
 

fanch55

XLDnaute Barbatruc
Cette partie n'est pas nécessaire à la décompression et nuit au rename :
VB:
'vérification du format du chemin du dossier de destination
    If Right(DossierDestination, 1) <> "\" Then DossierDestination = DossierDestination & "\"
 

fanch55

XLDnaute Barbatruc
j'aimerais ensuite renommer le fichier avec le nom du dossier,
j'ai essayé avec Dir(), mais je dois mal m'y prendre
J'ai peut-être mal décodé la demande initiale :
Dymouille.gif


Essayez ce code :
VB:
'Décompression
    Set ApplicationArchivage = CreateObject("Shell.Application")
    ApplicationArchivage.Namespace(DossierDestination).CopyHere ApplicationArchivage.Namespace(FichierArchive).items

' rename du fichier
    ApplicationArchivage.Namespace(FichierArchive).self.Name = ApplicationArchivage.Namespace(DossierDestination).self.Name & ".zip"
    
    Set ApplicationArchivage = Nothing
    

End Sub
 

Dymouille

XLDnaute Nouveau
Hello,

c'est ma faute, c'est moi qui explique vraiment mal !
Toutes les semaines je fais une extractions qui me sort 28 dossiers compressés,
avec chacun un nom diffèrent (c'est le FichierArchive en brut dans le code pour l'instant)
le problème est que chaque dossier comporte un fichier excel qui a comme nom les 13 derniers chiffres
du nom du dossier !
Les noms des dossiers sont uniques, mais pas les noms des fichiers Excel !

Exemple :
Dossier -> FnB Panel,Descriptions,Reference3010337111109 / Fichier -> 3010337111109
Dossier -> Reference,Descriptions,Assets3010337111109 / Fichier -> 3010337111109


du coup en décompressant sans changer le nom des fichiers excel, ca m'écrase le précedant portant le même nom !

J'ai un dossier Unzip, qui est déjà créé dans lequel les fichiers excel après renommage doivent être mis,

Merci !
 

fanch55

XLDnaute Barbatruc
Salut,

Si je comprend bien :
Un fichier zippé contient un et un seul fichier excel compressé.
le fichier zippé doit être dézippé et le fichier Excel extrait doit avoir le même nom que le fichier zippé ( l'extension étant celui d'excel)
Le fichier décompressé devra être stocké dans le dossier Unzip

Ai-je bon ?🤔
 
Dernière édition:

fanch55

XLDnaute Barbatruc
Le code ci-dessous devrait le faire 🤗
VB:
Sub DecompresserArchiveZip()
Const NOCONFIRMATION = 16

'définition des variables
    Dim OShell As Object, XFiles As Object
    Dim FRacine, FZip, FTemp, FUnzip, FNom ' par défaut type Varian

'informations sur l'archive et le dossier pour les fichiers décompressés
       FNom = "FnB Panel,Descriptions,Reference3012789200103.zip" ' nom du fichier Zip
    
    FRacine = "C:\Users\dl"                     ' racine où on travaille
       FZip = FRacine & "\" & FNom              ' l'archive à décompresser
     FUnzip = FRacine & "\Extraction PDH\Unzip"  ' Dossier Final de stockage
      FTemp = FRacine & "\TempZip"              ' Dossier intermédiaire  de décompression
      
    If Dir(FTemp, vbDirectory) = vbNullString Then MkDir FTemp
    
'Décompression

    Set OShell = CreateObject("Shell.Application")
        ' Décompression dans le dossier intermédiaire
        OShell.Namespace(FTemp).CopyHere OShell.Namespace(FZip).Items, NOCONFIRMATION
        
        Set XFiles = CreateObject("Scripting.FileSystemObject").getfolder(FTemp).Files
        If XFiles.Count = 1 Then
            For Each File In XFiles
              ' Mise en conformité du nom
                File.Name = Replace(FNom, ".zip", ".csv")
              ' Déplacement du fichier dans le dossier Final
                OShell.Namespace(FUnzip).MoveHere File.Path, NOCONFIRMATION
            Next
        End If
        Set XFiles = Nothing
        
    Set OShell = Nothing
    If Dir(FTemp, vbDirectory) <> vbNullString Then RmDir FTemp

End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 322
Membres
103 178
dernier inscrit
BERSEB50