Sub Cracker()
Dim fso As Object
Dim zipPath As String
Dim xlsmPath As String
Dim xlsmCopyPath As String
Dim extractFolder As String
Dim ApplicationArchivage As Object
Dim FichierArchive As Variant
Dim DossierDestination As Variant
Dim cheminFichier As String
Dim fichier As Integer
Dim contenuFichier() As Byte
Dim chaineRecherchee As String
Dim nouvelleChaine As String
Dim i As Long
Dim j As Long
Dim trouve As Boolean
Dim FichierASupprimer As String
Dim Wbk As Workbook
Dim dossier As Object
Dim fichierr As Object
Set Wbk = ActiveWorkbook
'convertion en zip
xlsmPath = "D:\Users\Nicolas\Desktop\" & Wbk.Name
zipPath = "D:\Users\Nicolas\Desktop\Temp.zip"
' Dossier où le contenu du .zip sera extrait
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile xlsmPath, zipPath
'extraction dans dossier
FichierArchive = zipPath 'l'archive à décompresser
DossierDestination = "D:\Users\Nicolas\Desktop\TestZip" '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
'""""""""""""""""""""""""""""""""""""""""""""""""""""""""
' Spécifiez le chemin du fichier
cheminFichier = "D:\Users\Nicolas\Desktop\TestZip\xl\vbaProject.bin"
' Spécifiez la chaîne à rechercher et la nouvelle chaîne
chaineRecherchee = "..." 'pas mis exprès pour le forum
nouvelleChaine = "..." 'pas mis exprès pour le forum
' Ouvrir le fichier en mode binaire
fichier = FreeFile
Open cheminFichier For Binary Access Read Write As #fichier
' Lire tout le fichier dans un tableau de bytes
ReDim contenuFichier(LOF(fichier) - 1)
Get #fichier, , contenuFichier
' Recherche de la chaîne
For i = 0 To UBound(contenuFichier) - Len(chaineRecherchee)
trouve = True
For j = 0 To Len(chaineRecherchee) - 1
If contenuFichier(i + j) <> Asc(Mid(chaineRecherchee, j + 1, 1)) Then
trouve = False
Exit For
End If
Next j
If trouve Then
' Remplacer la chaîne
For j = 0 To Len(nouvelleChaine) - 1
contenuFichier(i + j) = Asc(Mid(nouvelleChaine, j + 1, 1))
Next j
Exit For
End If
Next i
' Réécrire le fichier avec les modifications
Put #fichier, , contenuFichier
' Fermer le fichier
Close #fichier
'""""""""""""""""""""""""""""""""""""""""""""""""""""""""
FichierASupprimer = zipPath '<- le nom du fichier à supprimer
If Len(Dir(FichierASupprimer)) > 0 Then Kill FichierASupprimer
'""""""""""""""""""""""""""""""""""""""""""""""""""""""""
ZipRepertoire
'""""""""""""""""""""""""""""""""""""""""""""""""""""""""
'RenommerZipEnXlsm
Dim cheminDossier As String
Dim nomFichierZip As String
Dim nomFichierXlsm As String
Dim cheminCompletZip As String
Dim cheminCompletXlsm As String
' Spécifiez le chemin du dossier contenant le fichier zip
cheminDossier = "D:\Users\Nicolas\Desktop\" ' Modifier le chemin selon votre configuration
' Spécifiez le nom du fichier zip
nomFichierZip = "MaSauvegarde.zip" ' Modifier le nom du fichier zip
' Spécifiez le nom du fichier xlsm
nomFichierXlsm = "MaSauvegarde.xlsm" ' Modifier le nom du fichier xlsm
' Construire les chemins complets des fichiers
cheminCompletZip = cheminDossier & nomFichierZip
cheminCompletXlsm = cheminDossier & nomFichierXlsm
' Vérifiez si le fichier zip existe
If Dir(cheminCompletZip) <> "" Then
' Renommer le fichier zip en fichier xlsm
Name cheminCompletZip As cheminCompletXlsm
MsgBox "Le fichier a été renommé avec succès.", vbInformation
Else
MsgBox "Le fichier zip spécifié n'existe pas.", vbExclamation
End If
'""""""""""""""""""""""""""""""""""""""""""""""""""""""""
'Chemin du dossier dont vous voulez supprimer le contenu
cheminDossier = "D:\Users\Nicolas\Desktop\TestZip"
' Créer une instance de FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
' Obtenir le dossier
Set dossier = fso.GetFolder(cheminDossier)
' Supprimer tous les fichiers dans le dossier
For Each fichierr In dossier.Files
fichierr.Delete
Next fichierr
' Supprimer tous les sous-dossiers dans le dossier
Dim sousDossier As Object
For Each sousDossier In dossier.SubFolders
sousDossier.Delete True
Next sousDossier
'""""""""""""""""""""""""""""""""""""""""""""""""""""""""
'Spécifiez le chemin complet du fichier ( ZIP ) à supprimer
nomFichierZip = "D:\Users\Nicolas\Desktop\MaSauvegarde.zip"
' Vérifiez si le fichier existe avant de tenter de le supprimer
If Dir(nomFichierZip) <> "" Then
' Supprimez le fichier
'Kill nomFichierZip
MsgBox "Le fichier a été supprimé avec succès.", vbInformation
Else
MsgBox "Le fichier spécifié n'existe pas.", vbExclamation
End If
'""""""""""""""""""""""""""""""""""""""""""""""""""""""""
' Libérer les objets
Set fichierr = Nothing
Set dossier = Nothing
Set fso = Nothing
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub ZipRepertoire()
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim Source, Destination, MyHex, MyBinary, i
Dim oShell, oApP, oFolder, oCTF, oFile
Dim oFileSys
'Spécifiez le répertoire
Source = "D:\Users\Nicolas\Desktop\TestZip"
Destination = "D:\Users\Nicolas\Desktop\MaSauvegarde.zip"
MyHex = _
Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
For i = 0 To UBound(MyHex)
MyBinary = MyBinary & Chr(MyHex(i))
Next
Set oShell = CreateObject("WScript.Shell")
Set oFileSys = CreateObject("Scripting.FileSystemObject")
'Création de la base du fichier zip.
Set oCTF = oFileSys.CreateTextFile(Destination, True)
oCTF.Write MyBinary
oCTF.Close
Set oCTF = Nothing
Set oApP = CreateObject("Shell.Application")
Set oFolder = oApP.Namespace(Source)
If Not oFolder Is Nothing Then _
oApP.Namespace(Destination).CopyHere oFolder.Items
Set oFile = Nothing
On Error Resume Next
Do While (oFile Is Nothing)
'Attention: provoque une erreur 70 si un des fichiers à zipper
'est toujours ouvert.
Set oFile = oFileSys.OpenTextFile(Destination, ForAppending, False)
If Err.Number <> 0 Then
Err.Clear
End If
Loop
Set oFile = Nothing
Set oFileSys = Nothing
End Sub