XL VBA "Sécurité"
Résolu
fabien25000
Messages postés
697
Statut
Membre
-
fabien25000 Messages postés 697 Statut Membre -
fabien25000 Messages postés 697 Statut Membre -
Bonjour,
Je reviens vers vous à la suite du poste ci dessous qui date de l'année dernière
https://forums.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é :
Merci d'avance pour vos conseils avisés
--
Quand on ne dispose que d'un marteau tout les problèmes ressemblent à un clou
Je reviens vers vous à la suite du poste ci dessous qui date de l'année dernière
https://forums.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
--
Quand on ne dispose que d'un marteau tout les problèmes ressemblent à un clou
1 réponse
-
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/
-
j'ai tellement trifouillé que j'ai reussi à mal recopier..
je n'ai pas bien compris d'ou venait le problème mais je l'ai résolu en supprimant ce passage, redémarrer l'ordi et re copier ton code..
J'ai sûrement fait une erreur hier soir..
@cs_Le Pivert J'essaye de comprendre ton deuxième fichier "protection vbaproject" pour l'adapter également..
Encore merci pour ces deux fichiers !
J'ai d'ailleurs une autre question : je travail sur ce fichier avecApplication.WindowState = xlMinimized Application.Visible = False
ça fonctionne très bien mais si le commercial ouvre un autre fichier excel alors que mon application est en route, ça a le même effet que si j'écrivais :Application.WindowState = xlMaximized Application.Visible = True
y a t'il un moyen de contrer cela? -
voir ceci, si classeur ouvert tu lances ta macro
Application.WindowState = xlMinimized Application.Visible = False
https://excel-malin.com/codes-sources-vba/vba-verifier-si-un-classeur-est-ouvert/
cela necessite l'emploi d'un timer qui va relancer la macro toutes les x secondes, ce qui est contraignant. Il vaut mieux faire l'opération manuellement
@+ Le Pivert -
Merci cs mais j'ai peur que je ne puisse pas utiliser cette solution
Je détailles :
le fichier excel que j'ai créé sert à nos commerciaux à faire des devis en direct avec les clients
une fois arrivé à l'étape du budget ils peuvent avoir besoin de Cetelem et il s'avère que c'est aussi un fichier excel
si ils ouvrent le fichier de financement ca rend mon classeur de devis visible et accessible et le plus ennuyant : modifiable
le fichier de financement est bien sûr verrouillé de partout donc impossible d'y ajouter une macro or si j'ai bien compris c'est dans ce classeur qu'il faudrait entrer la fonction "si ouvert" et si je redonne l'ordre minimised et visible=false ça va également cacher cetelem non?
en écrivant une interrogation me vient : ne peut on pas avoir le même résultat avec une commande sur thisworkbook? -
-
autant pour moi, je n'avais pas fait le rapprochement!
tu peux mettre dans ThisWorkbook ce code:
Option Explicit Private Sub Workbook_Open() If Application.WindowState = xlMaximized Then Application.WindowState = xlMinimized End If End Sub
Pour y avoir accès de nouveau, il suffit de cliquer sur l'icone dans la barre de tâche
Voilà
@+ Le Pivert
-