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

Feuille protégée contre effacement

13 réponses
Avatar
josephb
Bonjour / Bonsoir

j'ai un classeur dont une feuille sert de "gabarit" pour le traitement
de données importées d'après une autre application. Elle contient entre
autres des listes de validation.
Cette feuille est sécurisée par procédure Workbook_SheetChange et
Workbook_SheetSelection contre toute modification et on ne peut que la
dupliquer (automatiquement) pour travailler sur copie qui, elle, est
libre pour l'utilisateur.

Par contre, je ne trouve pas la stratégie comment protéger cette feuille
gabarit contre un effacement malencontreux de l'utilisateur.
Une (petite) recherche sur le oueb ne m'a pas ouvert de piste.

Auriez-vous une solution ?

Autre question : comment remplacer le principe de la liste de validation
en feuille par une proc VBA, parce que là aussi, je crains que
l'utilisateur, en effaçant des lignes entières sur sa feuille de
travail, efface aussi tout ou partie des listes de validation.

Excel 98 Mac et Excel 2000 Win.

Merci et bon WE à tous.

--
J. B.

3 réponses

1 2
Avatar
josephb
Rebonsoir MichDenis

michdenis wrote:

Comme tu travailles à partir d'une version antérieure, je te
propose ceci pour le plaisir :

Tu peux supprimer la commande "Supprimer..."



Comme ça ne marchait pas mais sans aucun message d'erreur, j'ai inséré
un point d'arrêt pour pouvoir faire du pas à pas et là j'ai trouvé une
petite coquille à l'appel d'une procédure :

RemettreLaFonctionSupprimerCommeAvant
et
Sub RemettreLaFonctionSupprimerCommeAvante()
^^^^^

mais pour autant, aucun signe d'interception d'événement d'activation
désactivation de feuille avec

Private Sub Worksheet_Activate()
et
Private Sub Worksheet_Deactivate()

comme d'autre part j'utilise
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
pour d'autres actions
et que je sais mon Excel98 Mac des plus tatillons, j'ai tenté

Private Sub Workbook_Activate()
et
Private Sub Workbook_Deactivate()

pour ton code et ça c'est mis à fonctionner à la perfection.

Donc un grand merci pour tout.

--
J. B.
Avatar
michdenis
| Private Sub Workbook_Activate()

Cette procédure événementielle est déclenchée à l'ouverture du fichier
et par la suite, tu dois avoir au moins 2 classeurs ouverts dans la même
instance de l'application Excel. Lorsqu'un autre classeur est actif, si tu
reviens au classeur source, alors la procédure va s'exécuter.

Je te ferais remarquer que ce type de procédure n'a besoin que d'une
exécution lorsque le classeur devient actif pour désactiver la commandes
des barres de menu. Par la suite, peu importe le temps passé dans ce
classeur, les barres de menu demeureront les mêmes.

Désolé pour le "e" en trop dans la déclaration de la procédure !




"Joseph B." a écrit dans le message de groupe de discussion :
1j5yfln.1p20auxv3gu2oN%
Rebonsoir MichDenis

michdenis wrote:

Comme tu travailles à partir d'une version antérieure, je te
propose ceci pour le plaisir :

Tu peux supprimer la commande "Supprimer..."



Comme ça ne marchait pas mais sans aucun message d'erreur, j'ai inséré
un point d'arrêt pour pouvoir faire du pas à pas et là j'ai trouvé une
petite coquille à l'appel d'une procédure :

RemettreLaFonctionSupprimerCommeAvant
et
Sub RemettreLaFonctionSupprimerCommeAvante()
^^^^^

mais pour autant, aucun signe d'interception d'événement d'activation
désactivation de feuille avec

Private Sub Worksheet_Activate()
et
Private Sub Worksheet_Deactivate()

comme d'autre part j'utilise
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
pour d'autres actions
et que je sais mon Excel98 Mac des plus tatillons, j'ai tenté

Private Sub Workbook_Activate()
et
Private Sub Workbook_Deactivate()

pour ton code et ça c'est mis à fonctionner à la perfection.

Donc un grand merci pour tout.

--
J. B.
Avatar
josephb
michdenis wrote:

Cette procédure événementielle est déclenchée à l'ouverture du fichier



Oui, et tout fonctionne, comme tu le décris, et convenablement :-)
Maintenant je vais réfléchir à exploiter le "OnAction" sans tomber dans
l'usine à gaz non plus !

Désolé pour le "e" en trop dans la déclaration de la procédure !



Pas de quoi, vraiment, d'ailleurs qui peut se vanter de faire des
omelettes sans caser des "e" ;-))

Cordialement,
--
J. B.
1 2