Bonjour,

J'ai trouvé ce sujet https://www.developpez.net/forums/d1...er-code-macro/ sur le forum qui permet de supprimer une partie définie d'un code.

J'aimerais une solution moins radicale qui permet d'avoir la possibilité de "commenter" certaines lignes de "ThisWorkbook" (ensuite la macro enregistre le fichier sous un emplacement de mon archive) puis dans un second temps un code permet de "décommenter" les procédures ciblées de "ThisWorkbook".
En fait, lors de la création de mon archive (le code permettant de créer le backup est déjà créé) j'aimerais que certains codes ne soient plus actifs car non nécessaires pour un fichier d'archive.

Par contre je ne sais pas si une telle chose est possible en VBA
Mon besoin est de figer une procédure dans Thisworkbook qui créé des fichiers temporaires dans un emplacement précis pour indiquer à n'importe quel utilisateur en lecture seule qui verrouille le fichier. Cette procédure ne sera plus utile pour un fichier d'archive.

Voici mon début de codage :

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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
 
Sub Archiver()
 
    Dim Nbr As Variant
    Dim AdresseCell As Variant
 
    Dim objShell As Object, objFolder As Object, oFolderItem As Object
    Dim Chemin As String, NomComplet As String
 
 
' ICI ON METTRA LE CODE QUI DESACTIVERA DES PROCEDURES DE THISWORKBOOK
 
 
    'On fait une sauvegarde du fichier avant rénitialisation
 
 
'.xlsm = 5
'.xls = 4
wk = ActiveWorkbook.Name
LeNom = Left(wk, Len(wk) - 5) & " (copie de sauvegarde)" & ".xlsm" 'A adapter
 
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
 
On Error Resume Next
Set oFolderItem = objFolder.Items.Item
Chemin = oFolderItem.Path
 
ActiveWorkbook.SaveCopyAs Chemin & "\" & LeNom   'à adapter
 
    MsgBox "Le fichier va être rénitialisé"
 
' ICI ON METTRA LE CODE QUI REACTIVERA LES PROCEDURES DE THISWORKBOOK AVANT RENITIALISATION DU FICHIER
 
     With Sheets("Suivi").Select
     Nbr = Application.WorksheetFunction.CountA(Range(Cells(2, 2), Cells(Rows.Count, 2).End(xlUp)))
     End With
 
     'On ajoute 2 correspondant aux lignes utilisées pour l'header du document
     AdresseCell = Nbr + 2
 
     'On compte le nombre de cellules non vides du document
     MsgBox "La dernière ligne utilisée est la ligne : " & AdresseCell
 
     'On sélectionne toutes les lignes dont la colonne C contient des cellules non vides à partir de la ligne 4
     Rows("4:" & AdresseCell).Select
 
     'On supprime la sélection
     Selection.Delete Shift:=xlUp
 
     'Rénitialisation de la première ligne
     Range("A3:M3").ClearContents
 
End Sub
Merci d'avance pour votre aide,
Baptiste