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=False 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.
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
Dim oDataObject As DataObject
Set oDataObject = New DataObject
oDataObject.SetText ""
oDataObject.PutInClipboard
Set oDataObject = Nothing
End Sub
isabelle
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
Sub vide_Clipboard()
On Error Resume Next
Application.CommandBars("Clipboard").Controls(4).Execute
End Sub
isabelle
Merci de ton intervention ;-)
Tel que soulevé par Daniel, le code que tu suggère ci-après génère une
erreur de compilation "Type défini par l'utilisateur non défini"
lorsqu'appliqué dans Excel 2010.
René
> > René R.- Masquer le texte des messages précédents -
>
> - Afficher le texte des messages précédents -
Un homme averti en vaut deux. Merci! Cependant, je n'ai pas besoin de
tout interdire ni d'obliger l'activation des macros :)
René
René
> >>> Daniel- Masquer le texte des messages précédents -
> Bonjour Daniel,
>
> Un homme averti en vaut deux. Merci! Cependant, je n'ai pas besoin de
> tout interdire ni d'obliger l'activation des macros :)
>
> Renᅵ
>
> On 3 fᅵv, 10:51, DanielCo <dcolardelle...@free.fr> wrote:
>> Bonjour.
>> Et aussi, comment interdire l'impression, l'envoi par messagerie et la
>> copie d'ᅵcran, et comment obliger l'activation des macros... C'est
René
On 3 fév, 11:53, DanielCo <dcolardelle...@free.fr> wrote:
> ???
> Si tu veux utiliser Workbook_Deactivate ?
> Daniel
>
> > Bonjour Daniel,
>
> > Un homme averti en vaut deux. Merci! Cependant, je n'ai pas besoin de
> > tout interdire ni d'obliger l'activation des macros :)
>
> > Ren
>
> > On 3 f v, 10:51, DanielCo <dcolardelle...@free.fr> wrote:
> >> Bonjour.
> >> Et aussi, comment interdire l'impression, l'envoi par messagerie et la
> >> copie d' cran, et comment obliger l'activation des macros... C'est
> >> perdu d'avance.
> >> Cordialement.
tu as peut être désactivé les événements, execute cette macro pour être
sur qu'ils soient actif,
Sub Événemets_Actif()
Application.EnableEvents = True
End Sub
isabelle
isabelle
Le 2011-02-03 11:40, renroy a �crit :
> Bonjour Isabelle,
>
> Merci de ton intervention ;-)
>
> Tel que soulev� par Daniel, le code que tu sugg�re ci-apr�s g�n�re une
> erreur de compilation "Type d�fini par l'utilisateur non d�fini"
> lorsqu'appliqu� dans Excel 2010.
>
> Ren�
>
> On 3 f�v, 10:49, isabelle<i...@v.org> wrote:
>
>> bonjour Ren�,
tu peut aussi protéger la feuille en interdisant tout (même la sélection)
mais comme disait Daniel cela n'empeche pas la copie d'écran
isabelle
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é
René
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
>
>
| 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
--------------------------------------------
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 :
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=false
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" <dcolard...@free.fr> a écrit dans le message de
news:iiel7s$ps2$1...@speranza.aioe.org...
Tu ne l'empêchera pas complètement.
déjà ton premier code n'y fera rien:
Application.enablevents=false
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" <ren...@gmail.com> a écrit dans le message de
news:1722e23f-11f8-4eaa...@v7g2000yqh.googlegroups.com...
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