Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Empêcher copier/coller vers un autre classeur ou une autre application

30 réponses
Avatar
renroy
Bonjour =E0 tous,

Je fais appel =E0 vos lumi=E8res et vos solutions parfois g=E9niales =E0 de=
s
probl=E8mes pointilleux.

J'ai un classeur Excel comportant quelques onglets d'information et
que je souhaite rendre disponible =E0 un utilisateur. Je souhaite
permettre =E0 cet utilisateur de compl=E9ter l'information des onglets
existants s'il le souhaite mais je ne veux pas lui permettre de copier
l'information vers un autre classeur ou vers une autre application
(par exemple: Word, Bloc-Note, etc.). Est-ce possible ?

J'ai ins=E9r=E9 une macro vba dans l'objet ThisWorkbook qui semble bien
emp=EAcher de copier vers un autre classeur tout en permettant de copier-
coller d'un autre classeur vers le mien:

Private Sub Workbook_Deactivate()
'Pour interdire le collage suite =E0 une copie venant du classeur vers
un autre classeur
Application.CutCopyMode =3D False
End Sub

Mon probl=E8me est que rien n'emp=EAche l'utilisateur de copier vers Word
ou le Bloc-note et ensuite de copier de Word ou Bloc-note vers un
nouveau classeur Excel.

1- J'ai lu quelque part que Application.CutCopyMode=3DFalse ou
Application.CutCopyMode=3DTrue =E9quivaut =E0 l'appui sur la touche Echap
(annulation du mode Copier ou Coller, disparition des pointill=E9s).
Quelle est la diff=E9rence entre les deux puisque False et True ont le
m=EAme effet ?

2- Existe-t'il une fa=E7on universelle (applicable peu importe la
version d'Excel) de vider le presse-papier au moment de basculer
d'Excel vers une autre application ?

3- Workbook_Deactivate() ne semble d=E9tecter que la bascule entre
classeurs. Comment peut-on d=E9tecter la bascule entre Excel et une
autre application ?


Merci =E0 l'avance pour vos pr=E9cieuses suggestions.

Ren=E9 R.

10 réponses

1 2 3
Avatar
DanielCo
Alors OK, il ne faut en attendre plus.
Daniel


Daniel,

Je comprend et je suis conscient que ma solution n'est pas à toute
épreuve. Disons que je me contente d'une solution à l'épreuve des
utilisateurs "ordinaires" ayant peu ou pas de connaissance VBA.

René

On 3 fév, 12:18, DanielCo wrote:
C'est un vieux débat, ici. Depuis un classeur externe, avec une macro,
je peux afficher toutes les feuilles du classeur principal, sans
activer les macros sur celui-ci.
Daniel
Avatar
michdenis
Bonjour,

| Je souhaite permettre à cet utilisateur de compléter l'information
| des onglets existants s'il le souhaite mais je ne veux pas lui
| permettre de copier

Pourquoi ne pas utiliser un formulaire (userform) pour permettre
d'insérer dans la feuille de ton choix toute l'information dont tu as
besoin. Cette feuille peut demeurer masquée
(Worksheets("feuil1").Visible =xlSheetVeryHidden, donc impossible à l'usager
de connaître l'existence de la feuille et de la visualiser sans avoir accès
à VBA. Comme la feuille n'est jamais affichée, impossible aussi d'en faire
une copie.

Afin que quelqu'un ne puisse pas afficher la feuille masquée à partir
d'un autre classeur (vba), tu protèges le classeur (pas les feuilles)
(structure et fenêtres)

Tu ajoutes ceci dans le ThisWorkbook au cas où en déprotégerait le classeur

'---------------------
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
On Error Resume Next
Worksheets(Array("sheet2", "sheet4")).Visible = xlVeryHidden
ThisWorkbook.Protect "MotDepasse", Structure:=True, Windows:=True
End Sub

'---------------------
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
ThisWorkbook.Protect "MotDepasse", Structure:=True, Windows:=True
End Sub
'---------------------


MichD
--------------------------------------------
Avatar
renroy
Merci Daniel et Isabelle pour votre précieuse collaboration.

René
Avatar
isabelle
bonjour Daniel,

il y a une discution ici :
http://social.answers.microsoft.com/Forums/fr-FR/w7filesfr/thread/241a362d-6ade-4579-af1a-9fcbaa3ab6f7
les réponses de Jean-Claude BELLAMY et de Pierre TORRIS donne une
solution pour pallier à la commande "Effacer le Clipboard" pour les
versions 2007 et +

isabelle



Le 2011-02-03 11:49, DanielCo a écrit :
Non plus (je ne la connaissais pas, celle là !)
On dirait que c'est "by design"; pas possible qIls ne l'aient pas fait
exprès.
Daniel


et avec la commande xl4 ?

Sub vide_Clipboard()
On Error Resume Next
Application.CommandBars("Clipboard").Controls(4).Execute
End Sub

isabelle




Le 2011-02-03 11:31, DanielCo a écrit :
Pas mieux, apparemment.
Daniel


bonjour Daniel,

peut tu essayer celle-ci,

Private Declare Function OpenClipboard Lib "user32" _
(ByVal hwnd As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function CloseClipboard Lib "user32" () As Long

Sub Vider_Presse_Papier()
OpenClipboard 0
EmptyClipboard
CloseClipboard
End Sub

isabelle






Le 2011-02-03 10:58, news.free.fr a écrit :
Bonjour Isabelle,
Je crois que ça ne fonctionne plus depuis XL2007.
Daniel










Avatar
DanielCo
J'ai lu en diagonale et je n'ai pas compris. Je suis sous XP et Office
2010. Mon problème est avec VBA. J'ai essayé le script de Pierre Torris
qui n' a rien vidé.
Daniel


bonjour Daniel,

il y a une discution ici :
http://social.answers.microsoft.com/Forums/fr-FR/w7filesfr/thread/241a362d-6ade-4579-af1a-9fcbaa3ab6f7
les réponses de Jean-Claude BELLAMY et de Pierre TORRIS donne une solution
pour pallier à la commande "Effacer le Clipboard" pour les versions 2007 et
+

isabelle



Le 2011-02-03 11:49, DanielCo a écrit :
Non plus (je ne la connaissais pas, celle là !)
On dirait que c'est "by design"; pas possible qIls ne l'aient pas fait
exprès.
Daniel


et avec la commande xl4 ?

Sub vide_Clipboard()
On Error Resume Next
Application.CommandBars("Clipboard").Controls(4).Execute
End Sub

isabelle




Le 2011-02-03 11:31, DanielCo a écrit :
Pas mieux, apparemment.
Daniel


bonjour Daniel,

peut tu essayer celle-ci,

Private Declare Function OpenClipboard Lib "user32" _
(ByVal hwnd As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function CloseClipboard Lib "user32" () As Long

Sub Vider_Presse_Papier()
OpenClipboard 0
EmptyClipboard
CloseClipboard
End Sub

isabelle






Le 2011-02-03 10:58, news.free.fr a écrit :
Bonjour Isabelle,
Je crois que ça ne fonctionne plus depuis XL2007.
Daniel
Avatar
news.free.fr
J'ai lu en diagonale et je n'ai pas compris. En fait, tes trois macros
fonctionnent et vident le presse-papiers Windows, mais pas le
presse-papiers Office.
Daniel


bonjour Daniel,

il y a une discution ici :
http://social.answers.microsoft.com/Forums/fr-FR/w7filesfr/thread/241a362d-6ade-4579-af1a-9fcbaa3ab6f7
les réponses de Jean-Claude BELLAMY et de Pierre TORRIS donne une solution
pour pallier à la commande "Effacer le Clipboard" pour les versions 2007 et
+

isabelle
Avatar
isabelle
tu as téléchager le fichier ?

http://www.ptorris.com/reg.php
-> clipboard-clear.vista-7

Il suffit de créer un raccourci et de le mettre où vous voulez.

------------------------------------------------------------------------
isabelle

Le 2011-02-03 15:23, DanielCo a écrit :
J'ai lu en diagonale et je n'ai pas compris. Je suis sous XP et Office
2010. Mon problème est avec VBA. J'ai essayé le script de Pierre
Torris qui n' a rien vidé.
Daniel


bonjour Daniel,

il y a une discution ici :
http://social.answers.microsoft.com/Forums/fr-FR/w7filesfr/thread/241a362d-6ade-4579-af1a-9fcbaa3ab6f7

les réponses de Jean-Claude BELLAMY et de Pierre TORRIS donne une
solution pour pallier à la commande "Effacer le Clipboard" pour les
versions 2007 et +

isabelle


Avatar
DanielCo
Oui, lui ne vide rien, ni le clipboard Windows, ni celui d'Office, mais
bon, je suis sous XP.
Daniel


tu as téléchager le fichier ?

http://www.ptorris.com/reg.php
-> clipboard-clear.vista-7

Il suffit de créer un raccourci et de le mettre où vous voulez.

------------------------------------------------------------------------
isabelle

Le 2011-02-03 15:23, DanielCo a écrit :
J'ai lu en diagonale et je n'ai pas compris. Je suis sous XP et Office
2010. Mon problème est avec VBA. J'ai essayé le script de Pierre Torris qui
n' a rien vidé.
Daniel


bonjour Daniel,

il y a une discution ici :
http://social.answers.microsoft.com/Forums/fr-FR/w7filesfr/thread/241a362d-6ade-4579-af1a-9fcbaa3ab6f7

les réponses de Jean-Claude BELLAMY et de Pierre TORRIS donne une solution
pour pallier à la commande "Effacer le Clipboard" pour les versions 2007
et +

isabelle
Avatar
LSteph
Bonjour à tous,

Tout cela est bien trop facilement déjouable vous le savez bien Isa et
Daniel c'est pour souscrire à une réponse gentillement mais il faut le dire
quand même:

Application.enableventsúlse

ou les désactiver à l'ouverture

On ne pourra pas empêcher d'empêcher...

Une autre façon, certes contournable aussi, serait de protèger les feuilles
en empêchant la sélection des cellules verrouillées et mettre masquer et
déverrouillées sur celles ou l'on saisit.

Cordialement.

--
LSteph

"DanielCo" a écrit dans le message de
news:iiel7s$ps2$
Pas mieux, apparemment.
Daniel


bonjour Daniel,

peut tu essayer celle-ci,

Private Declare Function OpenClipboard Lib "user32" _
(ByVal hwnd As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function CloseClipboard Lib "user32" () As Long

Sub Vider_Presse_Papier()
OpenClipboard 0
EmptyClipboard
CloseClipboard
End Sub

isabelle






Le 2011-02-03 10:58, news.free.fr a écrit :
Bonjour Isabelle,
Je crois que ça ne fonctionne plus depuis XL2007.
Daniel






Avatar
LSteph
Bonjour,

Tu ne l'empêchera pas complètement.

déjà ton premier code n'y fera rien:

Application.enableventsúlse
on désactve les évennements et le déactivate passe à la trappe.

ou même ne pas activer les macros à l'ouverture.

Reste la protection de feuille par mot de passe et empêcher la sélection des
cellules vérouillées
qui est déjà plus efficace avec ses limites là aussi.

Cordialement.

__
LSteph

"renroy" a écrit dans le message de
news:
Bonjour à tous,

Je fais appel à vos lumières et vos solutions parfois géniales à des
problèmes pointilleux.

J'ai un classeur Excel comportant quelques onglets d'information et
que je souhaite rendre disponible à un utilisateur. Je souhaite
permettre à cet utilisateur de compléter l'information des onglets
existants s'il le souhaite mais je ne veux pas lui permettre de copier
l'information vers un autre classeur ou vers une autre application
(par exemple: Word, Bloc-Note, etc.). Est-ce possible ?

J'ai inséré une macro vba dans l'objet ThisWorkbook qui semble bien
empêcher de copier vers un autre classeur tout en permettant de copier-
coller d'un autre classeur vers le mien:

Private Sub Workbook_Deactivate()
'Pour interdire le collage suite à une copie venant du classeur vers
un autre classeur
Application.CutCopyMode = False
End Sub

Mon problème est que rien n'empêche l'utilisateur de copier vers Word
ou le Bloc-note et ensuite de copier de Word ou Bloc-note vers un
nouveau classeur Excel.

1- J'ai lu quelque part que Application.CutCopyModeúlse ou
Application.CutCopyMode=True équivaut à l'appui sur la touche Echap
(annulation du mode Copier ou Coller, disparition des pointillés).
Quelle est la différence entre les deux puisque False et True ont le
même effet ?

2- Existe-t'il une façon universelle (applicable peu importe la
version d'Excel) de vider le presse-papier au moment de basculer
d'Excel vers une autre application ?

3- Workbook_Deactivate() ne semble détecter que la bascule entre
classeurs. Comment peut-on détecter la bascule entre Excel et une
autre application ?


Merci à l'avance pour vos précieuses suggestions.

René R.
1 2 3