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

VBA-enregistrement modifications

8 réponses
Avatar
Pierre.M
Salut à tous,

J'aimerais affecter une macro à une case à cocher.
Lorsque celle-ci est cochée il faudrait que la macro empeche toute
modification du contenu de toutes les feuilles du fichier (pas de
modification manuelle possible et bloquage de toutes les macros) et le
signale à l'utilisateur par un MsgBox.
Je désire en fait pouvoir figer mon fichier à un instant donné et
l'enregistrer ainsi.

En decochant la case on permet bien sur a nouveau la reprise des
modifications et les calculs par macros...

Quelqu'un aurait-il la gentillesse de m'aider à l'écrire ?

Merci d'avance et bonne soiree.

Pierre.M

8 réponses

Avatar
DanielCo
Bonjour.
C'est quasiment mission impossible :
1. parce que, si les macros ne sont pas activées, le fait de cocher la
case sera inopérant.
2. Parce que tu ne peux pas empêcher l'exécution d'une macro d'un autre
classeur, laquelle fera toutes les modifications qu'elle voudra.
Cordialement.
Daniel


Salut à tous,

J'aimerais affecter une macro à une case à cocher.
Lorsque celle-ci est cochée il faudrait que la macro empeche toute
modification du contenu de toutes les feuilles du fichier (pas de
modification manuelle possible et bloquage de toutes les macros) et le
signale à l'utilisateur par un MsgBox.
Je désire en fait pouvoir figer mon fichier à un instant donné et
l'enregistrer ainsi.

En decochant la case on permet bien sur a nouveau la reprise des
modifications et les calculs par macros...

Quelqu'un aurait-il la gentillesse de m'aider à l'écrire ?

Merci d'avance et bonne soiree.

Pierre.M
Avatar
Pierre.M
On 2010-12-09 18:28:09 +0100, DanielCo said:

Bonjour.
C'est quasiment mission impossible :
1. parce que, si les macros ne sont pas activées, le fait de cocher la
case sera inopérant.



Oui, évidemment. J'aurais pu y penser...
Est-il alors envisageable d'interdire l'enregistrement si cochée (avec
une alerte) ?
Ca figerait bien mon fichier dans l'etat jusqu'a une eventuelle decoche, non?

2. Parce que tu ne peux pas empêcher l'exécution d'une macro d'un autre
classeur, laquelle fera toutes les modifications qu'elle voudra.



OK, mais ce n'est pas prévu, donc pas de risques de ce cote-la.


Cordialement.
Daniel


Salut à tous,

J'aimerais affecter une macro à une case à cocher.
Lorsque celle-ci est cochée il faudrait que la macro empeche toute
modification du contenu de toutes les feuilles du fichier (pas de
modification manuelle possible et bloquage de toutes les macros) et le
signale à l'utilisateur par un MsgBox.
Je désire en fait pouvoir figer mon fichier à un instant donné et
l'enregistrer ainsi.

En decochant la case on permet bien sur a nouveau la reprise des
modifications et les calculs par macros...

Quelqu'un aurait-il la gentillesse de m'aider à l'écrire ?

Merci d'avance et bonne soiree.

Pierre.M
Avatar
DanielCo
On 2010-12-09 18:28:09 +0100, DanielCo said:

Bonjour.
C'est quasiment mission impossible :
1. parce que, si les macros ne sont pas activées, le fait de cocher la case
sera inopérant.



Oui, évidemment. J'aurais pu y penser...
Est-il alors envisageable d'interdire l'enregistrement si cochée (avec une
alerte) ?
Ca figerait bien mon fichier dans l'etat jusqu'a une eventuelle decoche, non?



Oui, si le classeur a un mot de passe pour la modification... encore
qu'il soit possible de l'enregistrer sous un autre nom, de supprimer
l'original et de renommer la copie

2. Parce que tu ne peux pas empêcher l'exécution d'une macro d'un autre
classeur, laquelle fera toutes les modifications qu'elle voudra.



OK, mais ce n'est pas prévu, donc pas de risques de ce cote-la.



C'est toi qui vois...
Daniel
Avatar
LSteph
Bonjour,

Malgré mon adhesion première à ce que dit Daniel, une solution de
contournement un peu lourdingue peut-être ets qui ne s'appliquera qu'aux
procèdures internes à ton classeur, à adapter voici l'idée:

'dans Module1 tout en haut

Public CodeActif as Boolean

'au début de toutes tes macros du classeur sauf celle attachée au checkbox
If Not CodeActif then Exit sub

'dans la macro appelée par le checkbox outre le protect de ton choix mettre
in fine

CodeActif= Not CheckBox1

'--
'LSteph

"Pierre.M" a écrit dans le message de
news:4d00faaf$0$7717$
Salut à tous,

J'aimerais affecter une macro à une case à cocher.
Lorsque celle-ci est cochée il faudrait que la macro empeche toute
modification du contenu de toutes les feuilles du fichier (pas de
modification manuelle possible et bloquage de toutes les macros) et le
signale à l'utilisateur par un MsgBox.
Je désire en fait pouvoir figer mon fichier à un instant donné et
l'enregistrer ainsi.

En decochant la case on permet bien sur a nouveau la reprise des
modifications et les calculs par macros...

Quelqu'un aurait-il la gentillesse de m'aider à l'écrire ?

Merci d'avance et bonne soiree.

Pierre.M

Avatar
Pierre.M
On 2010-12-09 22:46:38 +0100, DanielCo said:

On 2010-12-09 18:28:09 +0100, DanielCo said:

Bonjour.
C'est quasiment mission impossible :
1. parce que, si les macros ne sont pas activées, le fait de cocher la
case sera inopérant.



Oui, évidemment. J'aurais pu y penser...
Est-il alors envisageable d'interdire l'enregistrement si cochée (avec
une alerte) ?
Ca figerait bien mon fichier dans l'etat jusqu'a une eventuelle decoche, non?



Oui, si le classeur a un mot de passe pour la modification... encore
qu'il soit possible de l'enregistrer sous un autre nom, de supprimer
l'original et de renommer la copie





Pas de risque non plus...

Bon, je suis arrive a mes fins, mais il me reste un petit souci.
Est-il possible de proteger une feuille contre toute modification
manuelle et d'autoriser en meme temps le remplissage de cette feuille
par des macros du classeur ?

Encore merci beaucoup pour ton aide et bon après-midi.




2. Parce que tu ne peux pas empêcher l'exécution d'une macro d'un autre
classeur, laquelle fera toutes les modifications qu'elle voudra.



OK, mais ce n'est pas prévu, donc pas de risques de ce cote-la.



C'est toi qui vois...
Daniel
Avatar
Daniel.C
Oui, dans la méthode "protect", il y a une propriété
"userinterfaceonly" qui interdit la modification manuelle et ne permet
que la modification par macro.
Daniel

On 2010-12-09 22:46:38 +0100, DanielCo said:

On 2010-12-09 18:28:09 +0100, DanielCo said:

Bonjour.
C'est quasiment mission impossible :
1. parce que, si les macros ne sont pas activées, le fait de cocher la
case sera inopérant.



Oui, évidemment. J'aurais pu y penser...
Est-il alors envisageable d'interdire l'enregistrement si cochée (avec une
alerte) ?
Ca figerait bien mon fichier dans l'etat jusqu'a une eventuelle decoche,
non?



Oui, si le classeur a un mot de passe pour la modification... encore qu'il
soit possible de l'enregistrer sous un autre nom, de supprimer l'original
et de renommer la copie





Pas de risque non plus...

Bon, je suis arrive a mes fins, mais il me reste un petit souci.
Est-il possible de proteger une feuille contre toute modification manuelle et
d'autoriser en meme temps le remplissage de cette feuille par des macros du
classeur ?

Encore merci beaucoup pour ton aide et bon après-midi.




2. Parce que tu ne peux pas empêcher l'exécution d'une macro d'un autre
classeur, laquelle fera toutes les modifications qu'elle voudra.



OK, mais ce n'est pas prévu, donc pas de risques de ce cote-la.



C'est toi qui vois...
Daniel
Avatar
Pierre.M
On 2010-12-10 19:28:30 +0100, Daniel.C said:

Oui, dans la méthode "protect", il y a une propriété
"userinterfaceonly" qui interdit la modification manuelle et ne permet
que la modification par macro.
Daniel





Super ! Ce qu'il me fallait !
Merci encore et bon weekend.
Pierre




On 2010-12-09 22:46:38 +0100, DanielCo said:

On 2010-12-09 18:28:09 +0100, DanielCo said:

Bonjour.
C'est quasiment mission impossible :
1. parce que, si les macros ne sont pas activées, le fait de cocher la
case sera inopérant.



Oui, évidemment. J'aurais pu y penser...
Est-il alors envisageable d'interdire l'enregistrement si cochée (avec
une alerte) ?
Ca figerait bien mon fichier dans l'etat jusqu'a une eventuelle decoche, non?



Oui, si le classeur a un mot de passe pour la modification... encore
qu'il soit possible de l'enregistrer sous un autre nom, de supprimer
l'original et de renommer la copie





Pas de risque non plus...

Bon, je suis arrive a mes fins, mais il me reste un petit souci.
Est-il possible de proteger une feuille contre toute modification
manuelle et d'autoriser en meme temps le remplissage de cette feuille
par des macros du classeur ?

Encore merci beaucoup pour ton aide et bon après-midi.




2. Parce que tu ne peux pas empêcher l'exécution d'une macro d'un autre
classeur, laquelle fera toutes les modifications qu'elle voudra.



OK, mais ce n'est pas prévu, donc pas de risques de ce cote-la.



C'est toi qui vois...
Daniel
Avatar
Pierre.M
Merci beaucoup a toi aussi.
J'étudie ça des que possible...
Peut-etre une solution alternative pour mon projet.
Bon weekend.
Pierre



On 2010-12-10 09:04:58 +0100, "LSteph" said:

Bonjour,

Malgré mon adhesion première à ce que dit Daniel, une solution de
contournement un peu lourdingue peut-être ets qui ne s'appliquera
qu'aux procèdures internes à ton classeur, à adapter voici l'idée:

'dans Module1 tout en haut

Public CodeActif as Boolean

'au début de toutes tes macros du classeur sauf celle attachée au checkbox
If Not CodeActif then Exit sub

'dans la macro appelée par le checkbox outre le protect de ton choix
mettre in fine

CodeActif= Not CheckBox1

'--
'LSteph

"Pierre.M" a écrit dans le message de
news:4d00faaf$0$7717$
Salut à tous,

J'aimerais affecter une macro à une case à cocher.
Lorsque celle-ci est cochée il faudrait que la macro empeche toute
modification du contenu de toutes les feuilles du fichier (pas de
modification manuelle possible et bloquage de toutes les macros) et le
signale à l'utilisateur par un MsgBox.
Je désire en fait pouvoir figer mon fichier à un instant donné et
l'enregistrer ainsi.

En decochant la case on permet bien sur a nouveau la reprise des
modifications et les calculs par macros...

Quelqu'un aurait-il la gentillesse de m'aider à l'écrire ?

Merci d'avance et bonne soiree.

Pierre.M