Interdire l'option couper/coller avec vba
#1
Débutant XLPages

Inscription: 30/04/2013

Messages: 6

Système d'exploitation:
PC
Version Excel utilisée:
2003,2007
Posté le : 03-05-2013 15h41

Bonjour à tous,
Je voudrais interdire l’option copier/couper pour les feuilles d’un fichier. Lorsque ma macro s’exécute , le résultat s’ouvre dans un nouveau fichier que l’utilisateur est libre de sauvegarder si il le souhaite. Je veux éviter qu’ il puisse en modifier les résultats…J’ai réussi à créer un macro qui protège avec un code les cellules de la feuille. MAIS l’utilisateur a tjrs la possibilité de copier l’onglet ou de sélectionner une plage de cellules pour les coller dans un autre fichier et les modifier à sa guise….[B][U]ce que je ne veux pa[/U]s [/B]! Je voudrais donc que l’option couper/copier d’une cellule et plage de cellules soit interdite…(si possible avec un code…je ne sais pas si je demande la lune….). Si l’utilisateur essaie de copier/couper les résultats alors une msgbox s’afficherait disant ‘vous n’êtes pas autorisé à copier/modifier les résultats’.
Alors j’ai d’abord essayé le code suivant pour afficher la MSgBox (mais sans succès…)
[I]Sub CopyDelte()

   
        If ActiveSheet.Copy Or ActiveSheet.Cut Then
            vRet = MsgBoxPerso("Vous n'êtes pas autorisé à modifier le résultat obtenu", T1 & N & T2, vCritical, "Ok", "Book Antiqua", 11, vnormal, vCenter)
           
        Else: Exit Sub
        End If
End Sub[/I]
Ensuite, j’ai utilisé (ou plutôt essayé) ce code pour interdire le copier/couper, encore une fois sans succès. Alors vu que je n’ai pour le moment jamais utilisé de private sub (en gros je n’y comprends pas grd chose), je crois qu’il y a qqch que j’ai du mal faire.

[I]Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Application.CutCopyMode = False
Application.CellDragAndDrop = False
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _
ByVal Target As Range)
Application.CutCopyMode = False
Application.CellDragAndDrop = False
End Sub[/I]

D’avance un grand merci. J’espère que quelqu’un pourra m’aider à élucider ce mystère !

Deb


Hors Ligne
Rapport   Haut 

Re: Interdire l'option couper/coller avec vba
#2
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 03-05-2013 23h45
Bonjour debutant84, bonjour à tous,

Si je puis me permettre une remarque, une simple protection de la feuille permettrait peut-être plus simplement d'éviter les erreurs de saisie.
Une autre solution si rien ne doit être modifié sur un onglet mais simplement consulté: faire un PDF.

Toute macro sera totalement inutile, il suffira de ne pas activer les macros pour pouvoir tout modifier.

(Sourire... dis, ils sont si méchants que ça tes utilisateurs, pour que tu veuilles les empêcher de travailler? )

Très bonne soirée,

mth
Hors Ligne
Rapport   Haut 

Re: Interdire l'option couper/coller avec vba
#3
Débutant XLPages

Inscription: 30/04/2013

Messages: 6

Système d'exploitation:
PC
Version Excel utilisée:
2003,2007
Posté le : 04-05-2013 15h46
Merci bcp pour ta réponse.

Mes collegues ne sont pas mechants en tt cas pas si mechant   Mais il s'agit de rapport comptable d'où l'importance pour eux de ne pas modifier les resultats obtenus lors de mon controle!

Alors, j'ai 2 problemes:
1/ qd je protège la feuillle le résultat peut qd meme etre copier et coller ds une autre feuille et donc modifier
2/qd je protege le fichier, je ne peux pas fermer le fichier sans l'enregistrer. Or le rapport obtenu ne doit pas etre automatiquement enregistrer, ceux-ci sont aussi utilises juste pour consultation.

Une autre proposition?

Merci

Deb 
Hors Ligne
Rapport   Haut 

Re: Interdire l'option couper/coller avec vba
#4
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 05-05-2013 01h45
Bonsoir débutant84, bonsoir à tous,

Pour le point 1, si tu protèges ta feuille en bloquant la sélection des cellules, ça complique nettement le copier coller puisqu'on ne peut rien sélectionner, il ne  reste que le print screen.
Tu peux aussi masquer les onglets.
Ceci dit, si l'utilisateur n'a pas besoin de travailler sur le nouveau fichier qui doit juste être une trace consultable, génère un PDF c'est plus simple.

Pour le point 2, à priori il n'y a pas de rapport entre la protection et la sauvegarde, ou alors quelque chose m'échappe mais pourquoi ne peux-tu pas fermer ton fichier sans l'enregistrer?

Pour fermer un fichier sans sauvegarder, tu peux simplement essayer ceci, mais je ne sais pas si cela répond à la question:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
 Application.ThisWorkbook.Saved = True
End Sub

Tu peux aussi interdire la sauvegarde en fonction du user, du nom du fichier, ou autre (test à intégrer dans le code si-dessus)

Bien à toi,

mth
Hors Ligne
Rapport   Haut 

Re: Interdire l'option couper/coller avec vba
#5
Débutant XLPages

Inscription: 30/04/2013

Messages: 6

Système d'exploitation:
PC
Version Excel utilisée:
2003,2007
Posté le : 06-05-2013 22h21

Bonjour,

La protection que j’ai applique, c’est via l’onglet Révision – protéger la feuille (PS : j’utilise Excel2010). En faisant cela mes cellules ne peuvent pas être modifiés, mais on peut malgré tt sélectionner les cellules et les copier pour les coller ailleurs (autre onglet ou autre fichier). En effet, je ne souhaite pas enlever l’option – sélection de cellules 1/pck un message apparait au moindre clickà pas pratique, 2/il y a énormément de données et on utilise souvent l’option sélection de cellules pour mieux visualiser les lignes qui nous intéresse.

Ça ne m’arrange pas de générer un pdf pck l’utilisateur a le droit de modifier la mise en page, la police et éventuellement ajouter des lignes ou colonnes.

En ce qui concerne le rapport entre protection de la structure et des fenêtres du fichier et sauvegarde (le point 2), le fichier généré càd ‘classeur 1’ refuse de se fermer à moins que je le sauvegarde ou que je retire la protection. J’ai beau appuyer sur la petite croix ça ne marche pas. Donc j’en ai déduis qu’il y avait un lien vu que je n’ai pas de problème pour mes autres fichiers.

 

Maintenant, j’utilise le code macro ci-dessous, c’est ce qui est le plus proche de ce que je recherche. MAiS le probleme c’est que celui-ci s’applique à tous les fichiers excel ouverts et pas uniquement au fichier en question. Une idée pour résoudre ce probleme ?

Private Sub Workbook_Deactivate()
Application.CutCopyMode = False
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.CutCopyMode = False
End Sub
Private Sub Workbook_Open()
Application.CellDragAndDrop = False
Application.CutCopyMode = False
Application.CommandBars("Ply").Enabled = False
End Sub

 

Un grand merci ;) 
Hors Ligne
Rapport   Haut 

Re: Interdire l'option couper/coller avec vba
#6
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 07-05-2013 00h05
Bonsoir débutat84, bonsoir le forum,

Pour ta protection, il faut tout d'abord que tu ailles dans le format de cellules, en décochant la protection sur les cellules auxquelles tu souhaites laisser l'accès, puis en laissant la case protection cochée pour les cellules que tu souhaites bloquer.
Ensuite tu vas effectivement dans le menu Révision/Protection, et là il faut que tu décoches la case "Sélectionner les cellules verrouillées", elles ne pourront pas du tout être sélectionnées donc difficilement copiables hormis un print screen.
Les autres cellules seront sélectionnables, et toutes les possibilités d'insertions conservées également (si tu as bien laissé cette possibilité dans les options de protection)

En ce qui concerne le code que tu utilises, tu peux noter qu'il travaille sur l'Application, par conséquent tu bloques l'utilisation normale d'Excel sur tous les fichiers ouverts. Je pense que la simple protection des cellules est une bien meilleure solution que de toucher à l'application.

Quant à ton fichier qui ne se ferme pas, c'est étrange, cela semble plutôt lié à une spécificité du fichier de départ, ou du code que tu utilises, il faudrait en savoir plus.

Pour terminer, je te conseille d'appliquer ce qui est décrit dans ce lien ICI pour insérer du code VBA ou des formules dans tes posts.

Très bonne soirée et à bientôt,

mth
Hors Ligne
Rapport   Haut 

Re: Interdire l'option couper/coller avec vba
#7
Débutant XLPages

Inscription: 21/01/2013

Messages: 10

Système d'exploitation:
PC
Version Excel utilisée:
2003
Posté le : 12-05-2013 07h45

Bonjour debutant84

 

Tout est possible, mais tout peut être contourné...

Par expérience, je comprends ton problème, mais ce type d'interdiction va à l'encontre de l'usage d'Excel, et fait perdre beaucoup de temps au développeur et à l'utilisateur : Je te propose de créer un bouton de type "export des données" qui crée un classeur à usage limité, pour des éditions ou calculs complémentaires

 

papyjac

 

 


bidon
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes