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

Protection maximale de ma feuille

8 réponses
Avatar
sunburn
Bonjour,
comment vérouiller l'utilisateur, pour éviter qu'il ne déplace
malencontreusement une cellule ?
En fait, je ne veux lui autoriser de ne faire que Ctrl+C et Ctrl+V, et
collage spécial (là, comment puis-je définir un raccourci pour ça).
Merci.
YANN

8 réponses

Avatar
MichDenis
Bonjour SunBurn,

Voici une façon de procéder :

Si tu veux utiliser les événements "Activate" est "Desactivate"
pour appeler la procédure "Test" et "Remettre_Comme_Avant"

La procédure "CollageSpecial" doit être dans un module standard.

'-----------------------------------------------
Sub test()
Application.OnKey "^v", "CollageSpecial"
End Sub
'-----------------------------------------------
Sub CollageSpecial()
ActiveSheet.Unprotect
Application.Dialogs(xlDialogPasteSpecial).Show
ActiveCell.PasteSpecial (xlPasteValues)
ActiveSheet.Protect
End Sub
'-----------------------------------------------
Sub Remettre_Comme_Avant()
Application.OnKey "^v"
End Sub
'-----------------------------------------------



"sunburn" a écrit dans le message de groupe de
discussion :
Bonjour,
comment vérouiller l'utilisateur, pour éviter qu'il ne déplace
malencontreusement une cellule ?
En fait, je ne veux lui autoriser de ne faire que Ctrl+C et Ctrl+V, et
collage spécial (là, comment puis-je définir un raccourci pour ça).
Merci.
YANN
Avatar
sunburn
Bonjour,
donc si j'ai bien compris, si pour tout mon classeur, je bloque tout (toutes
les touches Ctrl + le clic droit, puis après que j'autorise le Ctrl+C et le
Ctrl+V défini par moi, je vais arriver à avoir une protection pas trop mal ?
par contre, j'ai tout mis dans un module standard.
ça marche pas, tu peux m'aider plus ?
je te remercie.
YANN

"MichDenis" a écrit :

Bonjour SunBurn,

Voici une façon de procéder :

Si tu veux utiliser les événements "Activate" est "Desactivate"
pour appeler la procédure "Test" et "Remettre_Comme_Avant"

La procédure "CollageSpecial" doit être dans un module standard.

'-----------------------------------------------
Sub test()
Application.OnKey "^v", "CollageSpecial"
End Sub
'-----------------------------------------------
Sub CollageSpecial()
ActiveSheet.Unprotect
Application.Dialogs(xlDialogPasteSpecial).Show
ActiveCell.PasteSpecial (xlPasteValues)
ActiveSheet.Protect
End Sub
'-----------------------------------------------
Sub Remettre_Comme_Avant()
Application.OnKey "^v"
End Sub
'-----------------------------------------------



"sunburn" a écrit dans le message de groupe de
discussion :
Bonjour,
comment vérouiller l'utilisateur, pour éviter qu'il ne déplace
malencontreusement une cellule ?
En fait, je ne veux lui autoriser de ne faire que Ctrl+C et Ctrl+V, et
collage spécial (là, comment puis-je définir un raccourci pour ça).
Merci.
YANN




Avatar
MichDenis
Tu mets tout ça dans un module standard.
Tu appelles la procédure "Modifier_Les_Raccourcis"
pour modifier le travail des raccourci.
Avant la fermeture de ton fichier ou à la désactivation
de celui-ci, tu remets les raccourcis normaux en place
en appelant la procédure : Les_Raccourci_Normaux

Déclaration de la variable dans le haut du module
Dim Rg As Variant
'------------------------------------------
Sub Modifier_Les_Raccourcis()
Application.OnKey "^v", "CollageSpecial"
Application.OnKey "^c", "copieSpecial"
End Sub
'-----------------------------------------------
Sub Les_Raccourci_Normaux()
Application.OnKey "^v"
Application.OnKey "^c"
End Sub
'------------------------------------------
Sub Déprotéger()
ActiveSheet.Unprotect
DoEvents
End Sub
'------------------------------------------
Sub CollageSpecial()
ActiveSheet.Unprotect
Rg.Copy
Application.Dialogs(xlDialogPasteSpecial).Show
ActiveSheet.Protect
'Ou l'autre ligne, fait le même travail.
'Application.CommandBars.FindControl(ID:u5).Execute
End Sub
'------------------------------------------
Sub copieSpecial()
Set Rg = Selection
Application.CommandBars.FindControl(ID:).Execute
End Sub
'------------------------------------------






"sunburn" a écrit dans le message de groupe de
discussion :
Bonjour,
donc si j'ai bien compris, si pour tout mon classeur, je bloque tout (toutes
les touches Ctrl + le clic droit, puis après que j'autorise le Ctrl+C et le
Ctrl+V défini par moi, je vais arriver à avoir une protection pas trop mal ?
par contre, j'ai tout mis dans un module standard.
ça marche pas, tu peux m'aider plus ?
je te remercie.
YANN

"MichDenis" a écrit :

Bonjour SunBurn,

Voici une façon de procéder :

Si tu veux utiliser les événements "Activate" est "Desactivate"
pour appeler la procédure "Test" et "Remettre_Comme_Avant"

La procédure "CollageSpecial" doit être dans un module standard.

'-----------------------------------------------
Sub test()
Application.OnKey "^v", "CollageSpecial"
End Sub
'-----------------------------------------------
Sub CollageSpecial()
ActiveSheet.Unprotect
Application.Dialogs(xlDialogPasteSpecial).Show
ActiveCell.PasteSpecial (xlPasteValues)
ActiveSheet.Protect
End Sub
'-----------------------------------------------
Sub Remettre_Comme_Avant()
Application.OnKey "^v"
End Sub
'-----------------------------------------------



"sunburn" a écrit dans le message de groupe de
discussion :
Bonjour,
comment vérouiller l'utilisateur, pour éviter qu'il ne déplace
malencontreusement une cellule ?
En fait, je ne veux lui autoriser de ne faire que Ctrl+C et Ctrl+V, et
collage spécial (là, comment puis-je définir un raccourci pour ça).
Merci.
YANN




Avatar
sunburn
re,
alors, c'est un peu mieux.
par contre :
. comment ne pas avoir la boite de dialogue, mais obligatoirement du collage
spécial valeur
. pour des cellules fusionnées, ça plante...

merci de ton aide.
YANN

"MichDenis" a écrit :

Tu mets tout ça dans un module standard.
Tu appelles la procédure "Modifier_Les_Raccourcis"
pour modifier le travail des raccourci.
Avant la fermeture de ton fichier ou à la désactivation
de celui-ci, tu remets les raccourcis normaux en place
en appelant la procédure : Les_Raccourci_Normaux

Déclaration de la variable dans le haut du module
Dim Rg As Variant
'------------------------------------------
Sub Modifier_Les_Raccourcis()
Application.OnKey "^v", "CollageSpecial"
Application.OnKey "^c", "copieSpecial"
End Sub
'-----------------------------------------------
Sub Les_Raccourci_Normaux()
Application.OnKey "^v"
Application.OnKey "^c"
End Sub
'------------------------------------------
Sub Déprotéger()
ActiveSheet.Unprotect
DoEvents
End Sub
'------------------------------------------
Sub CollageSpecial()
ActiveSheet.Unprotect
Rg.Copy
Application.Dialogs(xlDialogPasteSpecial).Show
ActiveSheet.Protect
'Ou l'autre ligne, fait le même travail.
'Application.CommandBars.FindControl(ID:u5).Execute
End Sub
'------------------------------------------
Sub copieSpecial()
Set Rg = Selection
Application.CommandBars.FindControl(ID:).Execute
End Sub
'------------------------------------------






"sunburn" a écrit dans le message de groupe de
discussion :
Bonjour,
donc si j'ai bien compris, si pour tout mon classeur, je bloque tout (toutes
les touches Ctrl + le clic droit, puis après que j'autorise le Ctrl+C et le
Ctrl+V défini par moi, je vais arriver à avoir une protection pas trop mal ?
par contre, j'ai tout mis dans un module standard.
ça marche pas, tu peux m'aider plus ?
je te remercie.
YANN

"MichDenis" a écrit :

> Bonjour SunBurn,
>
> Voici une façon de procéder :
>
> Si tu veux utiliser les événements "Activate" est "Desactivate"
> pour appeler la procédure "Test" et "Remettre_Comme_Avant"
>
> La procédure "CollageSpecial" doit être dans un module standard.
>
> '-----------------------------------------------
> Sub test()
> Application.OnKey "^v", "CollageSpecial"
> End Sub
> '-----------------------------------------------
> Sub CollageSpecial()
> ActiveSheet.Unprotect
> Application.Dialogs(xlDialogPasteSpecial).Show
> ActiveCell.PasteSpecial (xlPasteValues)
> ActiveSheet.Protect
> End Sub
> '-----------------------------------------------
> Sub Remettre_Comme_Avant()
> Application.OnKey "^v"
> End Sub
> '-----------------------------------------------
>
>
>
> "sunburn" a écrit dans le message de groupe de
> discussion :
> Bonjour,
> comment vérouiller l'utilisateur, pour éviter qu'il ne déplace
> malencontreusement une cellule ?
> En fait, je ne veux lui autoriser de ne faire que Ctrl+C et Ctrl+V, et
> collage spécial (là, comment puis-je définir un raccourci pour ça).
> Merci.
> YANN
>
>



Avatar
MichDenis
Remplace dans le message précédent, la procédure de ce nom
par celle-ci. Si tu tentes de coller des données vers une plage où
tu as des cellules fusionnées, tu n'auras pas un message d'erreur
mais la copie ne se fera pas.

Pour ce qui est de tes cellules fusionnées, je n'y peux rien. Même
si la feuille n'était pas protégée, tu aurais le même problème.
Copier des cellules non fusionnées vers des cellules fusionnées,
c'est problématique ! Et, faut pas compter sur moi pour tenter
de développer une vraie usine à gaz !

'----------------------------------------
Sub CollageSpecial()
ActiveSheet.Unprotect
On Error Resume Next
Rg.Copy
ActiveCell.PasteSpecial xlPasteValues
ActiveSheet.Protect
'Application.Dialogs(xlDialogPasteSpecial).Show
'Ou l'autre ligne, fait le même travail.
'Application.CommandBars.FindControl(ID:u5).Execute
End Sub
'----------------------------------------



"sunburn" a écrit dans le message de groupe de
discussion :
re,
alors, c'est un peu mieux.
par contre :
. comment ne pas avoir la boite de dialogue, mais obligatoirement du collage
spécial valeur
. pour des cellules fusionnées, ça plante...

merci de ton aide.
YANN

"MichDenis" a écrit :

Tu mets tout ça dans un module standard.
Tu appelles la procédure "Modifier_Les_Raccourcis"
pour modifier le travail des raccourci.
Avant la fermeture de ton fichier ou à la désactivation
de celui-ci, tu remets les raccourcis normaux en place
en appelant la procédure : Les_Raccourci_Normaux

Déclaration de la variable dans le haut du module
Dim Rg As Variant
'------------------------------------------
Sub Modifier_Les_Raccourcis()
Application.OnKey "^v", "CollageSpecial"
Application.OnKey "^c", "copieSpecial"
End Sub
'-----------------------------------------------
Sub Les_Raccourci_Normaux()
Application.OnKey "^v"
Application.OnKey "^c"
End Sub
'------------------------------------------
Sub Déprotéger()
ActiveSheet.Unprotect
DoEvents
End Sub
'------------------------------------------
Sub CollageSpecial()
ActiveSheet.Unprotect
Rg.Copy
Application.Dialogs(xlDialogPasteSpecial).Show
ActiveSheet.Protect
'Ou l'autre ligne, fait le même travail.
'Application.CommandBars.FindControl(ID:u5).Execute
End Sub
'------------------------------------------
Sub copieSpecial()
Set Rg = Selection
Application.CommandBars.FindControl(ID:).Execute
End Sub
'------------------------------------------






"sunburn" a écrit dans le message de groupe de
discussion :
Bonjour,
donc si j'ai bien compris, si pour tout mon classeur, je bloque tout (toutes
les touches Ctrl + le clic droit, puis après que j'autorise le Ctrl+C et le
Ctrl+V défini par moi, je vais arriver à avoir une protection pas trop mal ?
par contre, j'ai tout mis dans un module standard.
ça marche pas, tu peux m'aider plus ?
je te remercie.
YANN

"MichDenis" a écrit :

> Bonjour SunBurn,
>
> Voici une façon de procéder :
>
> Si tu veux utiliser les événements "Activate" est "Desactivate"
> pour appeler la procédure "Test" et "Remettre_Comme_Avant"
>
> La procédure "CollageSpecial" doit être dans un module standard.
>
> '-----------------------------------------------
> Sub test()
> Application.OnKey "^v", "CollageSpecial"
> End Sub
> '-----------------------------------------------
> Sub CollageSpecial()
> ActiveSheet.Unprotect
> Application.Dialogs(xlDialogPasteSpecial).Show
> ActiveCell.PasteSpecial (xlPasteValues)
> ActiveSheet.Protect
> End Sub
> '-----------------------------------------------
> Sub Remettre_Comme_Avant()
> Application.OnKey "^v"
> End Sub
> '-----------------------------------------------
>
>
>
> "sunburn" a écrit dans le message de groupe de
> discussion :
> Bonjour,
> comment vérouiller l'utilisateur, pour éviter qu'il ne déplace
> malencontreusement une cellule ?
> En fait, je ne veux lui autoriser de ne faire que Ctrl+C et Ctrl+V, et
> collage spécial (là, comment puis-je définir un raccourci pour ça).
> Merci.
> YANN
>
>



Avatar
sunburn
re,
en fait, ça ne marche pas comme je voudrais....
je veux pouvoir copier-coller special valeur, uniquement d'une cellule
'normale' à une autre cellule 'normale', ou d'une cellule fusionnée à une
autre cellule fusionnée (avec le meme nombre de cellules fusionnée).

Je sais que les cellules fusionnées c'est ch...t.

si c'est pas possible, c'est pas grave. ou au moins limiter le copier
coller, c'est dire si je le fais d'une cellule fusionnée vers une
non-fusionnée ou l'inverse, alors message d'erreur ....

Merci sui c'est possible simplement, sinon c'est pas grave.

YANN
Avatar
MichDenis
Si tu mets tout ce qui suit dans un module standard,
tu peux copier-collage spécial Valeur seulement des cellules
non fusionnées entre elles, même fusionnées si elles sont de
même dimension.


Dim Rg As Variant

Sub Modifier_Les_Raccourcis()
Application.OnKey "^v", "CollageSpecial"
Application.OnKey "^c", "copieSpecial"
End Sub
'-----------------------------------------------
Sub Les_Raccourci_Normaux()
Application.OnKey "^v"
Application.OnKey "^c"
End Sub


Sub Déprotéger()
ActiveSheet.Unprotect
DoEvents
End Sub

Sub CollageSpecial()
ActiveSheet.Unprotect
On Error Resume Next
Rg.Copy
ActiveCell.PasteSpecial xlPasteValues
ActiveSheet.Protect
'Application.Dialogs(xlDialogPasteSpecial).Show
'Ou l'autre ligne, fait le même travail.
'Application.CommandBars.FindControl(ID:u5).Execute
End Sub

Sub copieSpecial()
Set Rg = Selection
Application.CommandBars.FindControl(ID:).Execute
End Sub







"sunburn" a écrit dans le message de groupe de
discussion :
re,
en fait, ça ne marche pas comme je voudrais....
je veux pouvoir copier-coller special valeur, uniquement d'une cellule
'normale' à une autre cellule 'normale', ou d'une cellule fusionnée à une
autre cellule fusionnée (avec le meme nombre de cellules fusionnée).

Je sais que les cellules fusionnées c'est ch...t.

si c'est pas possible, c'est pas grave. ou au moins limiter le copier
coller, c'est dire si je le fais d'une cellule fusionnée vers une
non-fusionnée ou l'inverse, alors message d'erreur ....

Merci sui c'est possible simplement, sinon c'est pas grave.

YANN
Avatar
sunburn
Salut,
Ok, je te remercie, ça fonctionne, sauf pour certaines de mes cellules
fusionnées, qui sont pourtant les unes sous les autres .... mais bon, ça
vient des cellules...
merci pour le code.
YANN

"MichDenis" a écrit :

Si tu mets tout ce qui suit dans un module standard,
tu peux copier-collage spécial Valeur seulement des cellules
non fusionnées entre elles, même fusionnées si elles sont de
même dimension.


Dim Rg As Variant

Sub Modifier_Les_Raccourcis()
Application.OnKey "^v", "CollageSpecial"
Application.OnKey "^c", "copieSpecial"
End Sub
'-----------------------------------------------
Sub Les_Raccourci_Normaux()
Application.OnKey "^v"
Application.OnKey "^c"
End Sub


Sub Déprotéger()
ActiveSheet.Unprotect
DoEvents
End Sub

Sub CollageSpecial()
ActiveSheet.Unprotect
On Error Resume Next
Rg.Copy
ActiveCell.PasteSpecial xlPasteValues
ActiveSheet.Protect
'Application.Dialogs(xlDialogPasteSpecial).Show
'Ou l'autre ligne, fait le même travail.
'Application.CommandBars.FindControl(ID:u5).Execute
End Sub

Sub copieSpecial()
Set Rg = Selection
Application.CommandBars.FindControl(ID:).Execute
End Sub







"sunburn" a écrit dans le message de groupe de
discussion :
re,
en fait, ça ne marche pas comme je voudrais....
je veux pouvoir copier-coller special valeur, uniquement d'une cellule
'normale' à une autre cellule 'normale', ou d'une cellule fusionnée à une
autre cellule fusionnée (avec le meme nombre de cellules fusionnée).

Je sais que les cellules fusionnées c'est ch...t.

si c'est pas possible, c'est pas grave. ou au moins limiter le copier
coller, c'est dire si je le fais d'une cellule fusionnée vers une
non-fusionnée ou l'inverse, alors message d'erreur ....

Merci sui c'est possible simplement, sinon c'est pas grave.

YANN