Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Tout effacer si déprotection projet VBA

  • Initiateur de la discussion Initiateur de la discussion GUY rrr
  • Date de début Date de début

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 !

GUY rrr

XLDnaute Occasionnel
Bonjour le forum,

Je souhaite savoir si il est possible de faire une macro qui vérifie que le projet VBA soit bien protégé et si non, qui efface toute les données du fichier en prenant soin d'enregistrer dans la foulée.

Merci aux personnes qui voudront bien se pencher sur ma demande.
 
Dernière édition:
Bonsoir dysorthographie, Patrice33740, le forum,

Je me permets de faire remonter cette discussion (que j'avais mis en statut résolu), car à l'épreuve, je me suis rendu compte que si je déprotège et efface dans la foulée la macro située dans ThisWorkbook, et en restant dans le VBA, il ne se passe rien au niveau des feuilles. Vous allez me dire que c'est normal car il n'y a plus de macro 😎. Du coup, ma question est la suivante:
Est-il possible d'avoir la même action que précédemment à la seconde ou la déprotection est active (sans forcément retourner sur le tableur) ?

Je joins mon classeur test (mdp:GUY)

Merci pour votre retour
 

Pièces jointes

Bonsoir,
Je t'invites à demander aux internautes de ce forum te tester ton fichier en l'état sans activer le centre de gestion de la confidentialité {poste#10}!

Cette option doit être activé sur la machine qui exécute la macro pour que ça fonctionne.

Cette option n'est jamais activé par défaut et le SI de quasiment toutes les entreprise l'interdisent!

Nous connaissons le mot de passe il sera facile de vérifier !
 
Bonjour,

Voyez le fichier joint et cette macro dans Module1 :
VB:
Sub Test()
Static t 'mémorise la variable
Dim i%
Application.DisplayAlerts = False
With ThisWorkbook
    If .VBProject.Protection = 0 Then
        For i = .Sheets.Count To 2 Step -1
            .Sheets(i).Delete
        Next
        .Sheets(1).Cells.Delete
    End If
End With
On Error Resume Next
Application.OnTime t, "Test", , False 'sécurité
t = Now + 1 / 86400
Application.OnTime t, "Test" 'relance le processus
End Sub
Et dans ThisWorkbook, pour lancer le processus :
VB:
Private Sub Workbook_Open()
Test
End Sub
Bien sûr comme cela a été déjà dit il faut avoir coché l'option :

- sur Excel 2003 et versions antérieures Faire confiance au projet Visual Basic (menu Outils-Macro-Sécurité-Editeurs approuvés)

- sur Excel 2007 et versions suivantes Accès approuvé au modèle d'objet du projet VBA (onglet Fichier-Options-Centre de gestion de la confidentialité-Paramètres...-Paramètres des macros).

A+
 

Pièces jointes

Bonsoir job75, dysorthographie, Patrice33740, le forum,

@dysorthographie, votre macro du post 14 fonctionne très bien,
- Sauf lorsque je lève la protection (sans retourner directement sur le tableur) et efface ensuite la macro située dans ThisWorkbook.

Après cette étape,

- Lorsque je retourne sur le tableur, les feuilles ne sont pas effacées ... 🙁

Malgré que l'option Accès approuvé au modèle d'objet du projet VBA soit cochée depuis le post 10.

@job75, votre macro effectue correctement le travail demandé 🙂.

D'après ma compréhension, la macro tourne cycliquement et indéfiniment en boucle 😵.
2 questions se posent à moi:

- Le fait que cette macro tourne continuellement ne risque pas d'interférer avec le programme qui comporte d'autres macros et formules multiples ou de le ralentir ?

- Est-il possible, si pas d'autre solution, de ralentir le cycle de la macro afin de "laisser respirer" le programme ?

Merci pour vos retours et vos propositions 😉
 
Dernière édition:
Bonsoir,
bien sur et c'est ce que je m'évertue à dire à GUY rrr!

personne n'a l'obligation d'activé cette option et personne ne peut obliger le détenteur de la machine à l'activer même par macros car c'est une directive qui relève de la sécurité de l'ordinateur!

avant de ce lancer dans une véritable cours à l'armement, soyons certain de l'efficacité
 
Retour au début Post #2 :
le VBA ne s'exécute que si l'utilisateur l'autorise : Protection vs Sécurité !
Bonjour,
Oui c'est ce que je n'arrête pas de dire poste#10

Qui va activer cette option, déjà qui la connait, qui voudrait pirater le mot de passe et voir le fichier ce dileter comme dans mission impossible !

L'entreprise de notre ami est voué à l'échec dans la mesure ou les utilisateurs soit ignorent cette option soit ne veulent pas, et c'est mon cas, activer cette option !

Soit je suis incapable de faire sauter la sécurité et il n'y a pas de problème, soit je suis capable et faut pas me prendre pour un idiot !
 
Dernière édition:
Qui va activer cette option, déjà qui la connait
En ajoutant On Error Resume Next tout se passera comme si la protection n'existait pas :
VB:
Sub Test()
Static t 'mémorise la variable
Dim i%
Application.DisplayAlerts = False
On Error Resume Next 'si n'est pas cochée l'option "Accès approuvé au modèle d'objet du projet VBA"
With ThisWorkbook
    If .VBProject.Protection = 0 Then
        For i = .Sheets.Count To 2 Step -1
            .Sheets(i).Delete
        Next
        .Sheets(1).Cells.Delete
    End If
End With
On Error Resume Next
Application.OnTime t, "Test", , False 'sécurité
t = Now + 1 / 86400
Application.OnTime t, "Test" 'relance le processus
End Sub
Testez ce fichier (2) en décochant l'option "Accès approuvé au modèle d'objet du projet VBA".
 

Pièces jointes

Bonsoir job75, dysorthographie, Patrice33740, le forum,


personne n'a l'obligation d'activé cette option et personne ne peut obliger le détenteur de la machine à l'activer

le VBA ne s'exécute que si l'utilisateur l'autorise : Protection vs Sécurité !

Qui va activer cette option,

J'activerai cette option lorsque j'aurai installé le fichier sur l'appareil ...

déjà qui la connait,

Au moins moi, grâce à vous 😉...

L'entreprise de notre ami est voué à l'échec dans la mesure ou les utilisateurs soit ignorent cette option soit ne veulent pas, et c'est mon cas, activer cette option !
Sauf erreur de ma part, job75 pare à cette éventualité ...
En ajoutant On Error Resume Next tout se passera comme si la protection n'existait pas :


Donc on supprime tous à l'ouverture car l'utilisateur ne le sait pas?

A priori, non, sauf si l'utilisateur (basique comme moi ...) commence à forcer pour ouvrir le pot de confiture

C'est absurde et heureusement que je n'aurais pas besoin de ce fichier !

...

Si tu ne connais pas VBA reste couché?
Ça part en vrille je quitte

Dommage, la discussion me semble intéressante 😕

@job75,

Votre astuce me parait pertinente et appropriée.
Au risque de me répéter, le fait que cette macro tourne continuellement ne risque pas d'interférer avec le programme qui comporte d'autres macros et formules multiples ou de le ralentir ?


Merci pour votre réponse et un GRAND MERCI à tous les intervenants

Bonne soirée
 
Au risque de me répéter, le fait que cette macro tourne continuellement ne risque pas d'interférer avec le programme qui comporte d'autres macros et formules multiples ou de le ralentir ?
C'est vous qui avez le fichier et les macros...

Mais bien voir que ma macro ne prend qu'un millionième de seconde chaque seconde, c'est peanuts.

Et il y a bien d'autres programmes qui tournent en arrière-plan sur Excel.
 
Il sera toujours possible :
1) d'interdire l'exécution des macro
2) de déprotéger le VBA (et donc sans que la macro s'exécute).
3) supprimer cette macro.
 
Private Sub Workbook_Open()
Dim Feuille As Worksheet
Application.DisplayAlerts = False ' Désactiver les alertes
For Each Feuille In ThisWorkbook.Worksheets
If Feuille.Name <> ActiveSheet.Name Then
Feuille.Delete
End If
Next Feuille
Application.DisplayAlerts = True ' Réactiver les alertes
ActiveSheet.Cells.Delete Shift:=xlUp
ThisWorkbook.Save
End Sub

efface toutes les feuilles du classeur, sauf la feuille active
 
- 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

Discussions similaires

Réponses
4
Affichages
604
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…