OVH Cloud OVH Cloud

Protection de classeur - structure

2 réponses
Avatar
Stéphan DuQuébec
Bonjour,

La présente question fait référence à une réponse qui avait déjà été rendue
par AnonymousA plus tôt cet été (cette réponse figure au bas).

Je voudrais parvenir à invalider les suppression, ajout, déplacement et
renommage de feuilles (déjà protégées) dans un classeur. Cependant, je ne
peux me servir du module de protection classeur parce que j'ai des procédures
qui elles doivent pouvoir le faire librement. À ma grande surprise, la
méthode UserInterfaceOnly empêche ces opérations même si elles viennent de
mon code VBA.

La seule option qu'il me reste est-elle la 2ième solution d'AnonymousA ? Et
dans le cas où la réponse serait "oui", quelqu'un peut-il m'indiquer où
trouver les autres numéro de ID controls qui correspondent aux insertion,
renommage et déplacement (pas seulement la suppression #847).

Aussi, ai-je bien compris qu'il n'y a nul besoin de ré-autoriser ces
commandes en événement Worbook Before Close ? le prochain fichier ouvert
retrouverait automatiquement ces commandes ?

Merci bien de m'éclairer.

-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

bonjour,

2 solutions possibles:

la 1ere, protéger le classeur ce qui empêchera la suppression des feuilles
mais aussi d'ailleurs d'autres corollaires (insertion, déplacement..). C'est
un peu contaignant.

2eme solution: écrire un petit programme VBA

Set CollControls = Application.CommandBars.FindControls(ID:=847)

For I = 1 To CollControls.Count
CollControls(I).Enabled = false
Next

ce qui invalidera la seule commande "supprimer" du menu Popup qui abrite
cette commande.Attention, est valable tout le temps de la session et pour
tous les ficheris ouverts durant celle-ci. Pour ne la réserver qu'à un seul
fichier , il faut gérer l'evenement Workbook_Deactivate et Workbook_activate
du présent fichier.
Ne résoud cependant pas le problème d'un petit malin qui connait VBA et qui
pourrait la revalider mais c'est quand même pas forcément féquent.

A+

2 réponses

Avatar
anonymousA
Bonjour,

je ne comprends pas bien ton affaire de UserInterfaceOnly , étant
entendu que ce paramètre s'applique à une protection de feuille et non
de classeur.
Ceci dit, pour trouver tous les ID des controles , je te conseille soit
le site de Frédéric Sigonneau à la rubrique BO soit de mémoire sur
Excelabo où des procédures de détermination de tous les controles
existent. Tu trouveras sans peine ton bonheur.

A+


Bonjour,

La présente question fait référence à une réponse qui avait déjà été rendue
par AnonymousA plus tôt cet été (cette réponse figure au bas).

Je voudrais parvenir à invalider les suppression, ajout, déplacement et
renommage de feuilles (déjà protégées) dans un classeur. Cependant, je ne
peux me servir du module de protection classeur parce que j'ai des procédures
qui elles doivent pouvoir le faire librement. À ma grande surprise, la
méthode UserInterfaceOnly empêche ces opérations même si elles viennent de
mon code VBA.

La seule option qu'il me reste est-elle la 2ième solution d'AnonymousA ? Et
dans le cas où la réponse serait "oui", quelqu'un peut-il m'indiquer où
trouver les autres numéro de ID controls qui correspondent aux insertion,
renommage et déplacement (pas seulement la suppression #847).

Aussi, ai-je bien compris qu'il n'y a nul besoin de ré-autoriser ces
commandes en événement Worbook Before Close ? le prochain fichier ouvert
retrouverait automatiquement ces commandes ?

Merci bien de m'éclairer.

-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

bonjour,

2 solutions possibles:

la 1ere, protéger le classeur ce qui empêchera la suppression des feuilles
mais aussi d'ailleurs d'autres corollaires (insertion, déplacement..). C'est
un peu contaignant.

2eme solution: écrire un petit programme VBA

Set CollControls = Application.CommandBars.FindControls(ID:„7)

For I = 1 To CollControls.Count
CollControls(I).Enabled = false
Next

ce qui invalidera la seule commande "supprimer" du menu Popup qui abrite
cette commande.Attention, est valable tout le temps de la session et pour
tous les ficheris ouverts durant celle-ci. Pour ne la réserver qu'à un seul
fichier , il faut gérer l'evenement Workbook_Deactivate et Workbook_activate
du présent fichier.
Ne résoud cependant pas le problème d'un petit malin qui connait VBA et qui
pourrait la revalider mais c'est quand même pas forcément féquent.

A+





Avatar
Stéphan DuQuébec
Tu vois, c'est ce que je ne savais pas mais que j'ai appris hier, à ma
grande tristesse (que le UserinterfaceOnly ne s'appliquait qu'à la protection
de feuille et non de classeur).

Je me précipite sur le site de M. Sigonneau.

Merci !


Bonjour,

je ne comprends pas bien ton affaire de UserInterfaceOnly , étant
entendu que ce paramètre s'applique à une protection de feuille et non
de classeur.
Ceci dit, pour trouver tous les ID des controles , je te conseille soit
le site de Frédéric Sigonneau à la rubrique BO soit de mémoire sur
Excelabo où des procédures de détermination de tous les controles
existent. Tu trouveras sans peine ton bonheur.

A+


Bonjour,

La présente question fait référence à une réponse qui avait déjà été rendue
par AnonymousA plus tôt cet été (cette réponse figure au bas).

Je voudrais parvenir à invalider les suppression, ajout, déplacement et
renommage de feuilles (déjà protégées) dans un classeur. Cependant, je ne
peux me servir du module de protection classeur parce que j'ai des procédures
qui elles doivent pouvoir le faire librement. À ma grande surprise, la
méthode UserInterfaceOnly empêche ces opérations même si elles viennent de
mon code VBA.

La seule option qu'il me reste est-elle la 2ième solution d'AnonymousA ? Et
dans le cas où la réponse serait "oui", quelqu'un peut-il m'indiquer où
trouver les autres numéro de ID controls qui correspondent aux insertion,
renommage et déplacement (pas seulement la suppression #847).

Aussi, ai-je bien compris qu'il n'y a nul besoin de ré-autoriser ces
commandes en événement Worbook Before Close ? le prochain fichier ouvert
retrouverait automatiquement ces commandes ?

Merci bien de m'éclairer.

-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

bonjour,

2 solutions possibles:

la 1ere, protéger le classeur ce qui empêchera la suppression des feuilles
mais aussi d'ailleurs d'autres corollaires (insertion, déplacement..). C'est
un peu contaignant.

2eme solution: écrire un petit programme VBA

Set CollControls = Application.CommandBars.FindControls(ID:„7)

For I = 1 To CollControls.Count
CollControls(I).Enabled = false
Next

ce qui invalidera la seule commande "supprimer" du menu Popup qui abrite
cette commande.Attention, est valable tout le temps de la session et pour
tous les ficheris ouverts durant celle-ci. Pour ne la réserver qu'à un seul
fichier , il faut gérer l'evenement Workbook_Deactivate et Workbook_activate
du présent fichier.
Ne résoud cependant pas le problème d'un petit malin qui connait VBA et qui
pourrait la revalider mais c'est quand même pas forcément féquent.

A+