document excel MdP ou lecture seule avec interdiction d'enregistrer

document excel MdP ou lecture seule avec interdiction d'enregistrer - VB/VBA/VBS - Programmation

Marsh Posté le 31-03-2010 à 10:32:27    

Bonjour à tous,
 
J'ai un soucis, j'ai un document Excel pour le suivi du personnel (horaires, conges). Je lui ai mis un mot de passe ou possibilité de regarder en lecture seule.
Seulement un petit rigolo, l'ouvre en lecture seule et l'enregistre sous... donc à la réouverture je n'ai plus de mot de passe et je dois veridier si les données n'ont pas été modifiées... donc grosse perte de temps et de patiente pour moi !!
 
Serait-il possible par le biais d'une MsgBox ou autres :
A l'ouverture du document la feuille soit cachée, une MsgBox saffiche est demande mot de passe, lecture seule, annuler (classique comme la protection standard) mais je désirerai que si la personne click qur lecture seule ne puisse que visualiser le document comme une image... ou le voix normalement mais ne puisse l'enregister sous...
 
Merci de vos réponse cela va bcp m'aider !!!!
 
Céline

Reply

Marsh Posté le 31-03-2010 à 10:32:27   

Reply

Marsh Posté le 31-03-2010 à 11:32:36    

Bonjour;
 
  Pourquoi ne pas enregistrer ce document sous un format difficile à modifier, pour le mettre à disposition?
  Je pense à du PDF, ou du Tif. Ce document serait facile à consulter, mais difficile à modifier!

Reply

Marsh Posté le 31-03-2010 à 12:30:43    

Comme je fais des modifications tous les jours, il est plus pratique pour moi de tout avoir sur le réseau ! Les personnes qui veulent voir où ils en sont, ont accès directement, cela évite l'oubli de la mise à jour du document en .pdf ou .tif... et donc des réclamations !
 
Merci quand même !!

Reply

Marsh Posté le 31-03-2010 à 15:58:42    

Une possibilité:
 - Créer un fichier Excel vide, avec juste un bouton "Importer".
   Lorsque l'utilisateur clique sur le bouton, une macro importe les feuilles de ton fichier original dans ce fichier vide.
   Lorsque l'utilisateur ferme le fichier, les feuilles importées sont détruites.
   Le fichier original est bien au chaud, dans un répertoire ouvert en écriture pour toi seulement.
 

Reply

Marsh Posté le 31-03-2010 à 16:14:10    

Pour empecher l'enregistrement sous, dans le module ThisWorkbook, voir l'évènement BeforeSave
Mais je ne suis pas sûr que ce soit suffisant...
 

Code :
  1. Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  2.    
  3.     MsgBox ("Il est interdit de copier ce fichier." )
  4.     Cancel = True
  5.    
  6. End Sub


 
Depuis l'exploreur Windows, rien n'empêche un utilisateur de copier/coller le fichier.
Personnellement, je préfère la solution que je suggère: un fichier vide, avec un bouton d'importation.


Message édité par Arcbitre le 31-03-2010 à 16:16:34
Reply

Marsh Posté le 31-03-2010 à 17:18:48    

Bonjour
 
Avec ton code Arcbitre, elle ne pourra plus non plus enregistrer ses modifs... Dommage...
 
Essaie quelque-chose comme ceci :

Code :
  1. Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  2.     If ActiveWorkbook.ReadOnly = True Then
  3.         'empêche l'enregistrement
  4.         SaveAsUI = False
  5.         Cancel = True
  6.     End If
  7. End Sub


 
En gros, si le fichier ouvert est en lecture seule (donc le mot de passe n'a pas été saisi) impossible d'enregistrer.


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 31-03-2010 à 23:07:08    

Arcbitre a écrit :

Une possibilité:
 - Créer un fichier Excel vide, avec juste un bouton "Importer".
   Lorsque l'utilisateur clique sur le bouton, une macro importe les feuilles de ton fichier original dans ce fichier vide.
   Lorsque l'utilisateur ferme le fichier, les feuilles importées sont détruites.
   Le fichier original est bien au chaud, dans un répertoire ouvert en écriture pour toi seulement.
 


La solution la plus simple a été donnée ici... il suffit de placer le fichier dans un répertoire où seul le propriétaire du fichier a les droits en écriture. Pas besoin de macro ou de protection pour ça !


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 01-04-2010 à 08:59:50    

La solution la plus simple... Tout dépend de la taille, et de la politique de sa société...
 
Je ne pense pas qu'une comptable ait accès aux droits des dossiers sur le serveur de l'entreprise. Derrière il faut demander à l'administrateur reseau, s'il y en a un de le faire, avec autorisation de la hierarchie. S'il n'y en a pas, appeler la société qui gere le parc info... Cout supplémentaire etc.
 
Et je ne parle pas du bruit/tapage généré dans la société pour un simple fichier Excel de congés...
 
Je ne suis pas certain que ca soit tellement plus simple qu'une pov' macro de 6 lignes...


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 01-04-2010 à 10:49:08    

Merci pour votre aide !
J'essaie la formule de dje69r mais rien ne se passe.
Je suis rentrée dans VBA, This WorkBook, j'ai selectionné WorkBook et BeforeSave, puis j'ai copier/coller la formule.... est rein... pas d'interdiction d'enregistrer en lecture seule !!
Je suis rouillée ça va faire 6 ans que je n'ai pas fait de VBA......
Qu'est-ce-que j'ai oublié ?
Merci

Reply

Marsh Posté le 01-04-2010 à 12:18:54    

Hello
 
Il faut mettre un mot de passe pour Modification.
Ce mot de passe tu le donnes pas.
 
Les gens vont ouvrir le fichier, et ca va leur demander le mot de passe qu'ils n'ont pas. Ils doivent obligatoirement cliquer sur "Lecture seule" pour ouvrir le fichier.
Le fichier etant donc ouvert en lecture seule, ils ne pourront pas faire un "Enregistrer sous"
 
Cordialement


Message édité par SuppotDeSaTante le 01-04-2010 à 12:19:08

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 01-04-2010 à 12:18:54   

Reply

Marsh Posté le 01-04-2010 à 12:47:47    

dje69r, c'est bien comme cela que je protege mon document pour Modification !
 
Et quand je me mets en lecture seule, et si j'appuye sur enregistrer, il me propose quand même d'enregistrer mon doc mais sous un autre nom ??? Que faire !!

Reply

Marsh Posté le 01-04-2010 à 13:50:47    

Bah écoute, moi sous Excel 2003, pas de souci.
 
Si le fichier est ouvert en lecture seule, si je clique sur la disquette, j'ai un message me disant "Fichier est en lecture seule. Pour enregistrer une copie, cliquez sur OK etc." mais si je clique sur OK, rien ne se passe.
Idem, avec les menu "Fichier", "enregistrer" et "enregistrer sous"
 
Fichier exemple ici
 
Edit : Sous Excel 2007, idem, ca fonctionne parfaitement. Que ca soit la disquette en haut, le menu Office enregistrer ou enregistrer sous (tous les types sauf pdf)


Message édité par SuppotDeSaTante le 01-04-2010 à 13:55:21

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 01-04-2010 à 13:57:15    

C'est marrant, j'ai essayé avec ton classeur et je peux l'enregistrer !!!!!

Reply

Marsh Posté le 01-04-2010 à 13:58:21    

Quelle version d'Excel as tu ?
Les macros sont elles activées ?


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 01-04-2010 à 14:02:52    

c'est le 2007, et normalement les macros sont acrifs... enfin je vais vérifier !!

Reply

Marsh Posté le 01-04-2010 à 14:12:55    

les macros n'étaient pas actifs ! Je viens de les activer et tu as raison ça fonctionne !! Mais ce qui veut dire que si quelqu'un a les macros non actifs, il pourra modifier mon document ??!

Reply

Marsh Posté le 01-04-2010 à 14:16:09    

C'est le principe des macros... Pour que ca "marche" faut qu'elles soient activent...


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 01-04-2010 à 14:36:01    

Merci beaucoup pour ton aide !! Je vais faire le tour des ordi et activer leurs macros !!!!

Reply

Marsh Posté le 01-04-2010 à 14:54:57    

Reply

Marsh Posté le 01-04-2010 à 18:13:19    

SuppotDeSaTante a écrit :

La solution la plus simple... Tout dépend de la taille, et de la politique de sa société...


OK, mais je pense que si le classeur est important, il ne sera pas difficile de faire un sous répertoire avec les bonnes options.
Parce que "faire le tour des poste pour activer les macros", il suffit qu'un petit malin s'amuse à annuler les macros (après tout, ce n'est pas stupide pour des raisons de sécurités) et il a un plein accès au classeur. Ca reste du bricolage.
Je persiste et signe dans le choix d'un répertoire en écriture seul pour les simples utilisateurs.


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 02-04-2010 à 10:17:08    

Ok, OtobOx, mais comment tu fais !
Quel est le code pour la macro ? Nous avons un serveur, et je n'ai aucun droit ! Donc il faudrait que je mette mon doc sur le "commun" completement verouillé ! et que je crée en sus un doc au nom quasiment similère pour que les gens si retrouvent ! Ce doc je lui insère un bouton "Visualiser/Importer", jusque l'à aucun soucis pour moi... mais après ???! Je ne sais plus !
Merci d'avance

Reply

Marsh Posté le 02-04-2010 à 11:26:36    

otobox a écrit :


OK, mais je pense que si le classeur est important, il ne sera pas difficile de faire un sous répertoire avec les bonnes options.
Parce que "faire le tour des poste pour activer les macros", il suffit qu'un petit malin s'amuse à annuler les macros (après tout, ce n'est pas stupide pour des raisons de sécurités) et il a un plein accès au classeur. Ca reste du bricolage.
Je persiste et signe dans le choix d'un répertoire en écriture seul pour les simples utilisateurs.


Je ne dis pas qu'en terme de sécurité ce n'est pas le meilleur choix... En terme de faisabilité...
Faut trouver un juste milieu...
Et quand on a pas accès au serveur... Il ne reste plus bcp de solution...


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 02-04-2010 à 15:02:34    


Bon, juste pour te remettre le pied à l'étrier, cette macro qui copie/colle depuis la feuille d'un classeur dans la feuille du classeur ouvert.
 
Crée un nouveau fichier, insère un bouton 'cmdView' et colle le code suivant dans sa procédure cmdView_Click

Code :
  1. Private Sub cmdView_Click()
  2. Dim objSourceWkb As Workbook, objDestWkb As Workbook
  3. Dim objSourceSht As Worksheet, objDestSht As Worksheet
  4.     ' Ouverture du fichier original.
  5.     Workbooks.Open Filename:="C:\Mes documents\Conges\abcdef", ReadOnly:=True
  6.    
  7.     ' Classeur source:
  8.     Set objSourceWkb = Workbooks("abcdef" )
  9.    
  10.     ' Feuille source
  11.     Set objSourceSht = objSourceWkb.Worksheets("Feuil1" )
  12.    
  13.     ' Classeur destination
  14.     Set objDestWkb = Workbooks("Conges.xls" )
  15.    
  16.     ' Feuille destination
  17.     Set objDestSht = objSourceWkb.Worksheets("Feuil1" )
  18.    
  19.     ' Copier / Coller
  20.     objSourceSht.Copy
  21.     objDestSht.Paste
  22.    
  23.     ' Fermeture classeur source.
  24.     objSourceWkb.Close False
  25.    
  26. End Sub


 
Je l'ai fait à l'arrache. Il y a certainement des choses à sécuriser, mais ça marche chez moi.
 
Nota1:  
Le nom du fichier original est baptisé sans relation avec le contenu et ne porte pas d'extension. C'est pour éviter que l'utilisateur lambda ne voit tout de suite que c'est un fichier Excel.
 
Nota2:
Si le rigolo persiste, tu peux en toucher 2 mots à son chef ou au patron. A un moment donné, saboter le boulot des autres, c'est répréhensible.

Reply

Marsh Posté le 02-04-2010 à 18:54:35    

03celine03 a écrit :

Ok, OtobOx, mais comment tu fais !
Quel est le code pour la macro ? Nous avons un serveur, et je n'ai aucun droit ! Donc il faudrait que je mette mon doc sur le "commun" completement verouillé ! et que je crée en sus un doc au nom quasiment similère pour que les gens si retrouvent ! Ce doc je lui insère un bouton "Visualiser/Importer", jusque l'à aucun soucis pour moi... mais après ???! Je ne sais plus !
Merci d'avance


Comment je fais ? Je demande au service S.I., via mon responsable hiérarchique, de bien vouloir me créer un répertoire en lecture/écriture pour moi et en lecture seul pour les autres. Bien argumenté, il n'y a aucune raison pour qu'ils refusent de le faire, car ça ne coûte que quelques minutes pour le faire.

 

Si tu as affaire à des malcomprenants, des qui ne veulent rien savoir et qui font de l'informatique pour eux même et pas pour les utilisateurs, des qui oublient que dans S.I. il y a le mot "Service", je procéderai alors de la façon suivante :

 

- je mettrais le classeur Excel en lecture seul dans les propriétés du fichier
- par l'intermédiaire d'une macro, si je veux éditer le fichier, je changerais les propriétés du fichier. Ainsi, je serai le seul a avoir cette macro et ne serait pas tributaire des autres utilisateurs qui ont les macros activées ou non. De plus, il est impossible de remplacer ce fichier par un autre avec cet attribut "lecture seul".

 

OK, un utilisateur peut toujours aller dans les propriétés du fichier pour changer cet attribut. Tout comme il peut aussi facilement désactiver l'affichage des macros.

 

La troisième solution serait de créer une base Access qui est un peu mieux sécurisée et qui sait gérer les accès à la base.


Message édité par otobox le 02-04-2010 à 18:55:06

---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 07-04-2010 à 10:57:23    

Merci à tous pour vos réponses !

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed