Menu

XL VBA "Sécurité" [Résolu]

fabien25000 319 Messages postés mercredi 5 octobre 2016Date d'inscription 22 septembre 2018 Dernière intervention - 12 sept. 2018 à 09:32 - Dernière réponse : fabien25000 319 Messages postés mercredi 5 octobre 2016Date d'inscription 22 septembre 2018 Dernière intervention
- 13 sept. 2018 à 16:02
Bonjour,

Je reviens vers vous à la suite du poste ci dessous qui date de l'année dernière
https://www.commentcamarche.net/forum/affich-34839603-information-securite-mots-de-passe-feuilles-classeur-et-vba
pour ceux qui ne veulent pas tout lire je cherchais à sécuriser un fichier et cs_Le Pivert m'a généreusement fournit quelques exemples de code.
Mon problème c'est que j'ai essayé de m'en servir et que depuis toutes mes procedures sont systématiquement interrompues et je n'arrive pas à rétablir ce phénomène
J'ai essayé de trouver les ordres contraires sans grand succès, j'ai contrôlé les options excel mais rien n'y fait..
voici le code utilisé :

Private Sub Workbook_BeforeClose(Cancel As Boolean)

' 'on rétabli à la fermeture
 ThisWorkbook.IsAddin = True
'et à la fin de ta macro : remettre raccourci clavier Ctrl Pause
Application.EnableCancelKey = xlInterrupt 'Ou xlErrorHandler

End Sub

Private Sub Workbook_Open()
    Dim tmpmsgbx As Integer
    
''empêcher l'affichage d'un classeur s'il est ouvert alors que l'exécution
''des macros est désactivée dans les options de sécurité
    ThisWorkbook.IsAddin = True
''au début de ta macro
    Application.EnableCancelKey = xlDisabled 'empeche raccourci clavier Ctrl Pause

    Names("EditDevis").Visible = False
    Worksheets("BDD devis").Visible = 0
    Worksheets("Statistiques").Visible = 0
    Worksheets("bddCPVA").Visible = 0
    Worksheets("tmptarif").Visible = 0
    Worksheets("Fiche Contact").Visible = 0
    Worksheets("PERGOLA VERANDA").Visible = 1
    Worksheets("PERGOLA VERANDA").Activate
    ActiveWindow.DisplayHeadings = False
    ActiveWindow.DisplayGridlines = False
    Application.DisplayFormulaBar = False
       
    tmpmsgbx = MsgBox("Merci de vous assurer de ne pas avoir d'autre fichier Excel ouvert" & vbCrLf & vbCrLf & _
    "Assurez vous d'enregistrer et fermer vos différents fichiers Excel avant de lancer l'aplication de chiffrage XXX", vbCritical + vbOKCancel, "XXX")
    
    If tmpmsgbx = vbOK Then
        Application.WindowState = xlMinimized
        Application.Visible = False
        ufLoggin.Show 0
    Else
        ThisWorkbook.Close savechanges:=False
    End If

End Sub

Merci d'avance pour vos conseils avisés


Afficher la suite 

Votre réponse

14 réponses

cs_Le Pivert 5360 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 22 septembre 2018 Dernière intervention - Modifié par cs_Le Pivert le 12/09/2018 à 14:33
0
Merci
Bonjour,

a la place de cela

Private Sub Workbook_Open()
    Dim tmpmsgbx As Integer
    
''empêcher l'affichage d'un classeur s'il est ouvert alors que l'exécution
''des macros est désactivée dans les options de sécurité
    ThisWorkbook.IsAddin = True


il faut mettre

Private Sub Workbook_Open()
    Dim tmpmsgbx As Integer
    
''empêcher l'affichage d'un classeur s'il est ouvert alors que l'exécution
''des macros est désactivée dans les options de sécurité
    ThisWorkbook.IsAddin = False


par ailleurs, je n'ai jamais vu cela:

  Names("EditDevis").Visible = False


A consulter:

https://silkyroad.developpez.com/VBA/FeuilleDeCalcul/

fabien25000 319 Messages postés mercredi 5 octobre 2016Date d'inscription 22 septembre 2018 Dernière intervention - 13 sept. 2018 à 14:08
Toujours le même résultat, dès l'instant de cetelem s'affiche le classeur devis s'affiche également.. je me dit que la solution la plus simple serait de cacher toutes les feuilles dont je veux proteger l'accès et mettre un mot de passe sur la structure du classeur, ça vaut ce que ça vaut mais ça protège au moins des accidents
merci encore cs_Le Pivert
cs_Le Pivert 5360 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 22 septembre 2018 Dernière intervention - 13 sept. 2018 à 14:22
Dans ce post j'avais mis un modèle de protection des feuilles par mot de passe à l'ouverture du classeur:

https://www.commentcamarche.net/forum/affich-35553634-autoriser-acces-feuillet-excel-uniquement-avec-mdp

Voici le modèle si cela peut t'interesser, en l'adaptant naturellement:

https://www.cjoint.com/c/HInmsaWQogQ

@+ Le Pivert
fabien25000 319 Messages postés mercredi 5 octobre 2016Date d'inscription 22 septembre 2018 Dernière intervention - 13 sept. 2018 à 14:52
C'est toujours intéressant de lire tes codes merci!

Effectivement veryhidden semble être le plus efficace pour cacher une feuille mais si j'ai bien compris ce que j'ai pu lire, vba ne peut pas lire ni écrire sur une feuille cachée de cette manière alors que sur une feuille "juste" masquée si
cs_Le Pivert 5360 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 22 septembre 2018 Dernière intervention - 13 sept. 2018 à 15:39
Voir ceci:

https://silkyroad.developpez.com/VBA/FeuilleDeCalcul/#LII-B-44


C'est la même chose, on peut lire et écrire dans une feuille cachée.

l'avantage de

 Sheets(Ws.Name).Visible = xlSheetVeryHidden 'feuille cachées


par rapport à :

 Sheets(Ws.Name).Visible = False 'feuille cachées


c'est que lorsque l'on clic droit sur l'onglet le menu contextuel Afficher n'est pas présent, qu'avec False il y est!

@+
fabien25000 319 Messages postés mercredi 5 octobre 2016Date d'inscription 22 septembre 2018 Dernière intervention - 13 sept. 2018 à 16:02
Super dans ce cas oui c'est veryhidden que je dois utiliser, je connaissais la nuance du clic droit mais j'avais en tête que la lecture ecriture étaient bloquées ..
je passe en résolu merci encore !
Commenter la réponse de cs_Le Pivert