XL 2010 Supprimer les modules d'un projet VBA protegé par mdp

fattah_5791

XLDnaute Occasionnel
Salut tt le monde,
J'ai realisé un petit applicatif me permettant d'effectuer des taches bien precises, mias je voulais que les modules de CODE VBA s'effacent automatiquement apres une date precise que je dois declarer dans le module ThisWorkbook.

ci joint le code trouvé qlq part sur le net, il marche mais sans protection par mdp du ProjetVBA.
je voulais inserer un mot de passe (exemple: 0000) dans le code ci joint.

le mdp (0000) est celui utilisé pour protege le projet VBA

merci infiniment.

VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Wkb As Workbook, EndJob As Date, VBC As Object

   Set Wkb = ThisWorkbook
   EndJob = DateSerial(2017, 9, 1)  'Choisir la date de fin applicatif
   
If Date >= EndJob Then
          With ActiveWorkbook.VBProject
                       For Each VBC In .VBComponents
                          If VBC.Type = 100 Then
                             With VBC.CodeModule
                                .DeleteLines 1, .CountOfLines
                                   .CodePane.Window.Close
                             End With
                       Else: .VBComponents.Remove VBC
                        End If
                       Next VBC
            End With
                  Application.Quit 'penser à fermer tous les fichiers ouverts avant
                  SendKeys "%O"
Else
Exit Sub
  End If
  Application.DisplayAlerts = False
Wkb.Save
End Sub
 

job75

XLDnaute Barbatruc
Bonjour Yurperquod,

Je n'ai jamais observé ce que vous décrivez, sur aucune version.

La Workbook_Open se déclenche toujours à l'ouverture du fichier, heureusement !!!

Si bien sûr les macros sont activées.

Et si les évènements n'ont pas été désactivés par Application.EnableEvents = False.

A+
 

Yurperqod

XLDnaute Occasionnel
Les macros sont bien activées.

Sur ce PC (Windows 7 PRO) avec Excel 2010.
Un classeur vierge avec dans ThisWorkbook
Private Sub Workbook_Open()
MsgBox Me.FullName
End Sub

J'ouvre le classeur à partir de l'explorateur Windows, le MsgBox s'affiche

Excel est déjà ouvert, je fais Fichier/Ouvrir , choix du classeur avec la macro pas de MsgBox
Excel est déjà ouvert, je fais Fichier/Récent/Classeurs récents, choix du classeur avec la macro, pas de MsgBox

C'est peut-être au paramétrage du PC car quand j'ouvre Excel, la sécurité Macros est automatiquement réglée sur : Désactiver toutes les macros avec notifications
(Si je change ce réglage , à chaque ouverture d'Excel, le réglage sera effacé et se remettra sur Désactiver toutes les macros avec notifications)

Je suis donc obligé d'ouvrir les classeurs avec macros en appuyant sur la touche SHIFT et puis choisir Activer les macros pour qu'elles s’exécutent.

Sauf que sur ce PC, cela marche uniquement lorsque le classeur est ouvert par un double-clic tout en appuyant sur SHIFT.

Ajout EDITION:
Si dans l'explorateur, je clique droit sur le classeur tout en appuyant sur SHIFT, le fichier s'ouvre sans afficher le message pour Activer et Workbook_Open est ignoré.

Je suppose que c'est par sécurité que les PC de mon travail sont réglés comme ca.
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour le fil, le forum,

Dans le fichier des Shapes commandent des macros.

Il est donc utile de les supprimer dans le fichier .xlsx :
Code:
Private Sub Workbook_Open()
If Date >= DateSerial(2017, 9, 1) Then  'Choisir la date de fin applicatif
  Dim Sh As Object, s As Shape, fn$
  For Each Sh In Me.Sheets
    If Sh.ProtectContents Then Sh.Protect "0000", UserInterfaceOnly:=True
    For Each s In Sh.Shapes
      If s.OnAction <> "" Then s.Delete
  Next s, Sh
  Application.DisplayAlerts = False
  fn = Me.FullName
  Me.SaveAs Left(fn, InStrRev(fn, ".") - 1), 51
  Kill fn
  Workbooks.Open Me.FullName
End If
Me.Sheets("Recp").Activate
End Sub
Une feuille est protégée par le mot de passe "0000".

Fichier (2).

Bonne journée.

Bonne journée.
 

Pièces jointes

  • Applicatif(2).xlsm
    806.8 KB · Affichages: 47

Yurperqod

XLDnaute Occasionnel
Bonjour à tous

Est-ce que vous arrivez à reproduire ce qui se passe sur mon PC si vous cochez:
Désactiver toutes les macros avec notification
Le Workbook_Open s’exécute uniquement quand on double-clique sur le classeur tout en appuyant sur SHIFT et en répondant Activer les macros au message d'alerte.
 

Yurperqod

XLDnaute Occasionnel
Bonjour à tous

eriiiic
Voici les réglages par défaut d'Excel de mon ordinateur au travail
(Si je les change quand je ferme puis rouvres Excel, ce sont toujours ceux-là)
Reglages.jpg

Ajout EDITION
eriiiic, tu as trouvé la solution
BarreMacro.jpg

C'était le choix Ne jamais afficher d'informations sur un contenu bloqué qui était coché
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour à tous,

Ce n'est pas l'objet du fil mais si le fichier ne sert plus à rien supprimons-le :
Code:
Private Sub Workbook_Open()
If Date >= DateSerial(2017, 9, 1) Then  'Choisir la date de fin applicatif
  Application.DisplayAlerts = False 'si formules (volatiles) recalculées
  Me.ChangeFileAccess xlReadOnly 'lecture seule
  Kill Me.FullName
  If Workbooks.Count = 1 Then Application.Quit Else Me.Close
End If
Feuil25.Activate 'Me.Sheets("Recp").Activate
End Sub
Fichier (3).

A+
 

Pièces jointes

  • Applicatif(3).xlsm
    806.1 KB · Affichages: 21