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

vba - onglet - renommer

12 réponses
Avatar
j-pascal
Bonjour à tous,

Je souhaiterais que l'utilisateur ne puisse pas renommer un onglet. Pour
info, j'ai seulement 2 onglets dans mon classeur gérés alternativement par
la propriété "very hidden" (l'onglet 1 affiche un message si les macros
n'ont pas été acceptées ... a contrario, l'onglet 2 correspond à la feuille
de travail). Le code est invisible pour l'utilisateur, et la feuille
protégée, mais il y a un Hic : on peut modifier la feuille si on renomme
l'onglet ! Ex. le scrollarea limite l'accès à certaines plages, mais pour un
nom de feuille donné !

Comme souvent, je pense que ma question est d'une grande limpidité ;-) ;-)
;-)

Merci d'avance pour vos (remarques !) réponses éventuelles.

--
Cordialement @+
JP

10 réponses

1 2
Avatar
MichDenis
Si tu protèges aussi le classeur pas seulement les feuilles,
les usagers ne pourront pas modifier le nom des feuilles.

Dans ton code, si tu utilises la propriété "Name" des modules
feuille, les usagers pourront s'amuser à modifier le nom des
feuilles sans aucune incidence sur ton code..

Exemple au lieu de
Worksheets("NomOngletFeuill").Range...

Tu écris en utilisant le "Name" de l'objet Feuille que tu vois dans la fenêtre de l'éditeur de code
MaFeuille.Range("A10")....




"j-pascal" a écrit dans le message de news:
%
Bonjour à tous,

Je souhaiterais que l'utilisateur ne puisse pas renommer un onglet. Pour
info, j'ai seulement 2 onglets dans mon classeur gérés alternativement par
la propriété "very hidden" (l'onglet 1 affiche un message si les macros
n'ont pas été acceptées ... a contrario, l'onglet 2 correspond à la feuille
de travail). Le code est invisible pour l'utilisateur, et la feuille
protégée, mais il y a un Hic : on peut modifier la feuille si on renomme
l'onglet ! Ex. le scrollarea limite l'accès à certaines plages, mais pour un
nom de feuille donné !

Comme souvent, je pense que ma question est d'une grande limpidité ;-) ;-)
;-)

Merci d'avance pour vos (remarques !) réponses éventuelles.

--
Cordialement @+
JP
Avatar
j-pascal
Bonsoir MichDenis,

Le "Name" dans ma fenêtre de propriétés = "Feuil2" (en fait mon onglet =
"planning activités").
Faut-il que je commence par renommer le "Name" de ma fenêtre propriétés en
"planning activités" ?
Faut-il ensuite que je remplace tous les Worksheets(2).Range par
planning_activité.Range ?
Je ne suis pas sûr d'avoir compris (le "pas sûr" me paraît même très exagéré
!)

A+ ?

JP

PS : comment puis-je "repérer" tous les Worksheets(2) pour être sûr de ne
pas en laisser un de côté ?
PS : le plus simple aurait été de ne pas avoir d'onglet visible, mais je
crois que ce n'est pas possible !

"MichDenis" a écrit dans le message de news:
%
Si tu protèges aussi le classeur pas seulement les feuilles,
les usagers ne pourront pas modifier le nom des feuilles.

Dans ton code, si tu utilises la propriété "Name" des modules
feuille, les usagers pourront s'amuser à modifier le nom des
feuilles sans aucune incidence sur ton code..

Exemple au lieu de
Worksheets("NomOngletFeuill").Range...

Tu écris en utilisant le "Name" de l'objet Feuille que tu vois dans la
fenêtre de l'éditeur de code
MaFeuille.Range("A10")....




"j-pascal" a écrit dans le message de news:
%
Bonjour à tous,

Je souhaiterais que l'utilisateur ne puisse pas renommer un onglet. Pour
info, j'ai seulement 2 onglets dans mon classeur gérés alternativement par
la propriété "very hidden" (l'onglet 1 affiche un message si les macros
n'ont pas été acceptées ... a contrario, l'onglet 2 correspond à la
feuille
de travail). Le code est invisible pour l'utilisateur, et la feuille
protégée, mais il y a un Hic : on peut modifier la feuille si on renomme
l'onglet ! Ex. le scrollarea limite l'accès à certaines plages, mais pour
un
nom de feuille donné !

Comme souvent, je pense que ma question est d'une grande limpidité ;-) ;-)
;-)

Merci d'avance pour vos (remarques !) réponses éventuelles.

--
Cordialement @+
JP




Avatar
MichDenis
Dans la fenêtre de l'éditeur de code
dans la section "VBAProjet",
quand tu double-cliques sur le nom de ton projet vba,
la liste des objets ("Feuil, workbook, module , formulaire)
s'affiche dans l'arborescence.

Les objets feuilles sont affichés de cette façon
Feuil1(Feuil1)

Feuil1 : Représente le nom de l'objet pour modifier son nom
tu dois afficher la fenêtre des propriétés et modifier la
propriété "Name" lorsque l'objet est sélectionné.
Ce n'est pas obligatoire de le repabtiser... c'est seulement
pour le programmeur -> tu peux lui donner un nom significatif
en fonction de son contenu si tu le désires !
A ce nom d'objet, seul le programmeur y a accès et il n'est pas
influencé par le changement de nom de l'onglet de la feuille.

(Feuiil) : Représente le nom de l'onglet de la feuille de l'interface de la feuille de calcul.
Peut changer selon l'humeur de l'usager

En conséquence : au lieu d'utiliser ceci :
Worksheets("Feuil1") -> qui est le nom de l'onglet
tu utilises ceci :
Feuil1.Range("A1") qui est la propriété Name de l'objet.



"j-pascal" a écrit dans le message de news:

Bonsoir MichDenis,

Le "Name" dans ma fenêtre de propriétés = "Feuil2" (en fait mon onglet "planning activités").
Faut-il que je commence par renommer le "Name" de ma fenêtre propriétés en
"planning activités" ?
Faut-il ensuite que je remplace tous les Worksheets(2).Range par
planning_activité.Range ?
Je ne suis pas sûr d'avoir compris (le "pas sûr" me paraît même très exagéré
!)

A+ ?

JP

PS : comment puis-je "repérer" tous les Worksheets(2) pour être sûr de ne
pas en laisser un de côté ?
PS : le plus simple aurait été de ne pas avoir d'onglet visible, mais je
crois que ce n'est pas possible !

"MichDenis" a écrit dans le message de news:
%
Si tu protèges aussi le classeur pas seulement les feuilles,
les usagers ne pourront pas modifier le nom des feuilles.

Dans ton code, si tu utilises la propriété "Name" des modules
feuille, les usagers pourront s'amuser à modifier le nom des
feuilles sans aucune incidence sur ton code..

Exemple au lieu de
Worksheets("NomOngletFeuill").Range...

Tu écris en utilisant le "Name" de l'objet Feuille que tu vois dans la
fenêtre de l'éditeur de code
MaFeuille.Range("A10")....




"j-pascal" a écrit dans le message de news:
%
Bonjour à tous,

Je souhaiterais que l'utilisateur ne puisse pas renommer un onglet. Pour
info, j'ai seulement 2 onglets dans mon classeur gérés alternativement par
la propriété "very hidden" (l'onglet 1 affiche un message si les macros
n'ont pas été acceptées ... a contrario, l'onglet 2 correspond à la
feuille
de travail). Le code est invisible pour l'utilisateur, et la feuille
protégée, mais il y a un Hic : on peut modifier la feuille si on renomme
l'onglet ! Ex. le scrollarea limite l'accès à certaines plages, mais pour
un
nom de feuille donné !

Comme souvent, je pense que ma question est d'une grande limpidité ;-) ;-)
;-)

Merci d'avance pour vos (remarques !) réponses éventuelles.

--
Cordialement @+
JP




Avatar
j-pascal
Bonsoir MichDenis,

Vraiment désolé, je n'ai pas compris. J'ai l'impression d'avoir fait ce que
tu proposes, mais ça ne marche pas et même pire j'ai un message étrange
quand je relance mon appli.
Je doute que tu le fasses, mais mon fichier (sans tes modifs) est là :
http://cjoint.com/?eAu2gstQst
Je me demande si les "Private Sub" ou les UserForm n'y sont pas pour quelque
chose ?! Peut-être qu'il y a une particularité dans mon fichier qui est
incompatible avec la mise en application de tes conseils.

Le MdP pour accéder au VBA est "travail2"

JP


"MichDenis" a écrit dans le message de news:

Dans la fenêtre de l'éditeur de code
dans la section "VBAProjet",
quand tu double-cliques sur le nom de ton projet vba,
la liste des objets ("Feuil, workbook, module , formulaire)
s'affiche dans l'arborescence.

Les objets feuilles sont affichés de cette façon
Feuil1(Feuil1)

Feuil1 : Représente le nom de l'objet pour modifier son nom
tu dois afficher la fenêtre des propriétés et modifier la
propriété "Name" lorsque l'objet est sélectionné.
Ce n'est pas obligatoire de le repabtiser... c'est seulement
pour le programmeur -> tu peux lui donner un nom significatif
en fonction de son contenu si tu le désires !
A ce nom d'objet, seul le programmeur y a accès et il n'est pas
influencé par le changement de nom de l'onglet de la feuille.

(Feuiil) : Représente le nom de l'onglet de la feuille de l'interface de
la feuille de calcul.
Peut changer selon l'humeur de l'usager

En conséquence : au lieu d'utiliser ceci :
Worksheets("Feuil1") -> qui est le nom de l'onglet
tu utilises ceci :
Feuil1.Range("A1") qui est la propriété Name de l'objet.



"j-pascal" a écrit dans le message de news:

Bonsoir MichDenis,

Le "Name" dans ma fenêtre de propriétés = "Feuil2" (en fait mon onglet > "planning activités").
Faut-il que je commence par renommer le "Name" de ma fenêtre propriétés en
"planning activités" ?
Faut-il ensuite que je remplace tous les Worksheets(2).Range par
planning_activité.Range ?
Je ne suis pas sûr d'avoir compris (le "pas sûr" me paraît même très
exagéré
!)

A+ ?

JP

PS : comment puis-je "repérer" tous les Worksheets(2) pour être sûr de ne
pas en laisser un de côté ?
PS : le plus simple aurait été de ne pas avoir d'onglet visible, mais je
crois que ce n'est pas possible !

"MichDenis" a écrit dans le message de news:
%
Si tu protèges aussi le classeur pas seulement les feuilles,
les usagers ne pourront pas modifier le nom des feuilles.

Dans ton code, si tu utilises la propriété "Name" des modules
feuille, les usagers pourront s'amuser à modifier le nom des
feuilles sans aucune incidence sur ton code..

Exemple au lieu de
Worksheets("NomOngletFeuill").Range...

Tu écris en utilisant le "Name" de l'objet Feuille que tu vois dans la
fenêtre de l'éditeur de code
MaFeuille.Range("A10")....




"j-pascal" a écrit dans le message de news:
%
Bonjour à tous,

Je souhaiterais que l'utilisateur ne puisse pas renommer un onglet. Pour
info, j'ai seulement 2 onglets dans mon classeur gérés alternativement
par
la propriété "very hidden" (l'onglet 1 affiche un message si les macros
n'ont pas été acceptées ... a contrario, l'onglet 2 correspond à la
feuille
de travail). Le code est invisible pour l'utilisateur, et la feuille
protégée, mais il y a un Hic : on peut modifier la feuille si on renomme
l'onglet ! Ex. le scrollarea limite l'accès à certaines plages, mais pour
un
nom de feuille donné !

Comme souvent, je pense que ma question est d'une grande limpidité ;-)
;-)
;-)

Merci d'avance pour vos (remarques !) réponses éventuelles.

--
Cordialement @+
JP








Avatar
MichDenis
J'ai seulement ajouté la ligne de code suivante à ta procédure auto_open

Thisworkbook.Protect "travail", true, true

http://cjoint.com/?eBeZgbCSEJ



"j-pascal" a écrit dans le message de news:

Bonsoir MichDenis,

Vraiment désolé, je n'ai pas compris. J'ai l'impression d'avoir fait ce que
tu proposes, mais ça ne marche pas et même pire j'ai un message étrange
quand je relance mon appli.
Je doute que tu le fasses, mais mon fichier (sans tes modifs) est là :
http://cjoint.com/?eAu2gstQst
Je me demande si les "Private Sub" ou les UserForm n'y sont pas pour quelque
chose ?! Peut-être qu'il y a une particularité dans mon fichier qui est
incompatible avec la mise en application de tes conseils.

Le MdP pour accéder au VBA est "travail2"

JP


"MichDenis" a écrit dans le message de news:

Dans la fenêtre de l'éditeur de code
dans la section "VBAProjet",
quand tu double-cliques sur le nom de ton projet vba,
la liste des objets ("Feuil, workbook, module , formulaire)
s'affiche dans l'arborescence.

Les objets feuilles sont affichés de cette façon
Feuil1(Feuil1)

Feuil1 : Représente le nom de l'objet pour modifier son nom
tu dois afficher la fenêtre des propriétés et modifier la
propriété "Name" lorsque l'objet est sélectionné.
Ce n'est pas obligatoire de le repabtiser... c'est seulement
pour le programmeur -> tu peux lui donner un nom significatif
en fonction de son contenu si tu le désires !
A ce nom d'objet, seul le programmeur y a accès et il n'est pas
influencé par le changement de nom de l'onglet de la feuille.

(Feuiil) : Représente le nom de l'onglet de la feuille de l'interface de
la feuille de calcul.
Peut changer selon l'humeur de l'usager

En conséquence : au lieu d'utiliser ceci :
Worksheets("Feuil1") -> qui est le nom de l'onglet
tu utilises ceci :
Feuil1.Range("A1") qui est la propriété Name de l'objet.



"j-pascal" a écrit dans le message de news:

Bonsoir MichDenis,

Le "Name" dans ma fenêtre de propriétés = "Feuil2" (en fait mon onglet > "planning activités").
Faut-il que je commence par renommer le "Name" de ma fenêtre propriétés en
"planning activités" ?
Faut-il ensuite que je remplace tous les Worksheets(2).Range par
planning_activité.Range ?
Je ne suis pas sûr d'avoir compris (le "pas sûr" me paraît même très
exagéré
!)

A+ ?

JP

PS : comment puis-je "repérer" tous les Worksheets(2) pour être sûr de ne
pas en laisser un de côté ?
PS : le plus simple aurait été de ne pas avoir d'onglet visible, mais je
crois que ce n'est pas possible !

"MichDenis" a écrit dans le message de news:
%
Si tu protèges aussi le classeur pas seulement les feuilles,
les usagers ne pourront pas modifier le nom des feuilles.

Dans ton code, si tu utilises la propriété "Name" des modules
feuille, les usagers pourront s'amuser à modifier le nom des
feuilles sans aucune incidence sur ton code..

Exemple au lieu de
Worksheets("NomOngletFeuill").Range...

Tu écris en utilisant le "Name" de l'objet Feuille que tu vois dans la
fenêtre de l'éditeur de code
MaFeuille.Range("A10")....




"j-pascal" a écrit dans le message de news:
%
Bonjour à tous,

Je souhaiterais que l'utilisateur ne puisse pas renommer un onglet. Pour
info, j'ai seulement 2 onglets dans mon classeur gérés alternativement
par
la propriété "very hidden" (l'onglet 1 affiche un message si les macros
n'ont pas été acceptées ... a contrario, l'onglet 2 correspond à la
feuille
de travail). Le code est invisible pour l'utilisateur, et la feuille
protégée, mais il y a un Hic : on peut modifier la feuille si on renomme
l'onglet ! Ex. le scrollarea limite l'accès à certaines plages, mais pour
un
nom de feuille donné !

Comme souvent, je pense que ma question est d'une grande limpidité ;-)
;-)
;-)

Merci d'avance pour vos (remarques !) réponses éventuelles.

--
Cordialement @+
JP








Avatar
j-pascal
Bonjour Mich,

Incroyable ! Ca marche (impossible de renommer l'onglet !!) ... mais quand
je ferme le classeur, j'ai le msg : "erreur d'exécution 1004" "impossible de
définir la propriété visible de la classe worksheet" ;-(

A+ ?

JP

PS : question subsidiaire : comment fonctionne ton code ? Quel différence
avec la protection classique d'un classeur ?

"MichDenis" a écrit dans le message de news:

J'ai seulement ajouté la ligne de code suivante à ta procédure auto_open

Thisworkbook.Protect "travail", true, true

http://cjoint.com/?eBeZgbCSEJ



"j-pascal" a écrit dans le message de news:

Bonsoir MichDenis,

Vraiment désolé, je n'ai pas compris. J'ai l'impression d'avoir fait ce
que
tu proposes, mais ça ne marche pas et même pire j'ai un message étrange
quand je relance mon appli.
Je doute que tu le fasses, mais mon fichier (sans tes modifs) est là :
http://cjoint.com/?eAu2gstQst
Je me demande si les "Private Sub" ou les UserForm n'y sont pas pour
quelque
chose ?! Peut-être qu'il y a une particularité dans mon fichier qui est
incompatible avec la mise en application de tes conseils.

Le MdP pour accéder au VBA est "travail2"

JP


"MichDenis" a écrit dans le message de news:

Dans la fenêtre de l'éditeur de code
dans la section "VBAProjet",
quand tu double-cliques sur le nom de ton projet vba,
la liste des objets ("Feuil, workbook, module , formulaire)
s'affiche dans l'arborescence.

Les objets feuilles sont affichés de cette façon
Feuil1(Feuil1)

Feuil1 : Représente le nom de l'objet pour modifier son nom
tu dois afficher la fenêtre des propriétés et modifier la
propriété "Name" lorsque l'objet est sélectionné.
Ce n'est pas obligatoire de le repabtiser... c'est seulement
pour le programmeur -> tu peux lui donner un nom significatif
en fonction de son contenu si tu le désires !
A ce nom d'objet, seul le programmeur y a accès et il n'est
pas
influencé par le changement de nom de l'onglet de la feuille.

(Feuiil) : Représente le nom de l'onglet de la feuille de l'interface de
la feuille de calcul.
Peut changer selon l'humeur de l'usager

En conséquence : au lieu d'utiliser ceci :
Worksheets("Feuil1") -> qui est le nom de l'onglet
tu utilises ceci :
Feuil1.Range("A1") qui est la propriété Name de l'objet.



"j-pascal" a écrit dans le message de news:

Bonsoir MichDenis,

Le "Name" dans ma fenêtre de propriétés = "Feuil2" (en fait mon onglet >> "planning activités").
Faut-il que je commence par renommer le "Name" de ma fenêtre propriétés
en
"planning activités" ?
Faut-il ensuite que je remplace tous les Worksheets(2).Range par
planning_activité.Range ?
Je ne suis pas sûr d'avoir compris (le "pas sûr" me paraît même très
exagéré
!)

A+ ?

JP

PS : comment puis-je "repérer" tous les Worksheets(2) pour être sûr de ne
pas en laisser un de côté ?
PS : le plus simple aurait été de ne pas avoir d'onglet visible, mais je
crois que ce n'est pas possible !

"MichDenis" a écrit dans le message de news:
%
Si tu protèges aussi le classeur pas seulement les feuilles,
les usagers ne pourront pas modifier le nom des feuilles.

Dans ton code, si tu utilises la propriété "Name" des modules
feuille, les usagers pourront s'amuser à modifier le nom des
feuilles sans aucune incidence sur ton code..

Exemple au lieu de
Worksheets("NomOngletFeuill").Range...

Tu écris en utilisant le "Name" de l'objet Feuille que tu vois dans la
fenêtre de l'éditeur de code
MaFeuille.Range("A10")....




"j-pascal" a écrit dans le message de news:
%
Bonjour à tous,

Je souhaiterais que l'utilisateur ne puisse pas renommer un onglet. Pour
info, j'ai seulement 2 onglets dans mon classeur gérés alternativement
par
la propriété "very hidden" (l'onglet 1 affiche un message si les macros
n'ont pas été acceptées ... a contrario, l'onglet 2 correspond à la
feuille
de travail). Le code est invisible pour l'utilisateur, et la feuille
protégée, mais il y a un Hic : on peut modifier la feuille si on renomme
l'onglet ! Ex. le scrollarea limite l'accès à certaines plages, mais
pour
un
nom de feuille donné !

Comme souvent, je pense que ma question est d'une grande limpidité ;-)
;-)
;-)

Merci d'avance pour vos (remarques !) réponses éventuelles.

--
Cordialement @+
JP












Avatar
MichDenis
Juste AVANT ta ligne qui rend visible ta feuille, tu déprotèges ton classeur

ThisWorkbook.Unprotect "travail"


"j-pascal" a écrit dans le message de news:

Bonjour Mich,

Incroyable ! Ca marche (impossible de renommer l'onglet !!) ... mais quand
je ferme le classeur, j'ai le msg : "erreur d'exécution 1004" "impossible de
définir la propriété visible de la classe worksheet" ;-(

A+ ?

JP

PS : question subsidiaire : comment fonctionne ton code ? Quel différence
avec la protection classique d'un classeur ?

"MichDenis" a écrit dans le message de news:

J'ai seulement ajouté la ligne de code suivante à ta procédure auto_open

Thisworkbook.Protect "travail", true, true

http://cjoint.com/?eBeZgbCSEJ



"j-pascal" a écrit dans le message de news:

Bonsoir MichDenis,

Vraiment désolé, je n'ai pas compris. J'ai l'impression d'avoir fait ce
que
tu proposes, mais ça ne marche pas et même pire j'ai un message étrange
quand je relance mon appli.
Je doute que tu le fasses, mais mon fichier (sans tes modifs) est là :
http://cjoint.com/?eAu2gstQst
Je me demande si les "Private Sub" ou les UserForm n'y sont pas pour
quelque
chose ?! Peut-être qu'il y a une particularité dans mon fichier qui est
incompatible avec la mise en application de tes conseils.

Le MdP pour accéder au VBA est "travail2"

JP


"MichDenis" a écrit dans le message de news:

Dans la fenêtre de l'éditeur de code
dans la section "VBAProjet",
quand tu double-cliques sur le nom de ton projet vba,
la liste des objets ("Feuil, workbook, module , formulaire)
s'affiche dans l'arborescence.

Les objets feuilles sont affichés de cette façon
Feuil1(Feuil1)

Feuil1 : Représente le nom de l'objet pour modifier son nom
tu dois afficher la fenêtre des propriétés et modifier la
propriété "Name" lorsque l'objet est sélectionné.
Ce n'est pas obligatoire de le repabtiser... c'est seulement
pour le programmeur -> tu peux lui donner un nom significatif
en fonction de son contenu si tu le désires !
A ce nom d'objet, seul le programmeur y a accès et il n'est
pas
influencé par le changement de nom de l'onglet de la feuille.

(Feuiil) : Représente le nom de l'onglet de la feuille de l'interface de
la feuille de calcul.
Peut changer selon l'humeur de l'usager

En conséquence : au lieu d'utiliser ceci :
Worksheets("Feuil1") -> qui est le nom de l'onglet
tu utilises ceci :
Feuil1.Range("A1") qui est la propriété Name de l'objet.



"j-pascal" a écrit dans le message de news:

Bonsoir MichDenis,

Le "Name" dans ma fenêtre de propriétés = "Feuil2" (en fait mon onglet >> "planning activités").
Faut-il que je commence par renommer le "Name" de ma fenêtre propriétés
en
"planning activités" ?
Faut-il ensuite que je remplace tous les Worksheets(2).Range par
planning_activité.Range ?
Je ne suis pas sûr d'avoir compris (le "pas sûr" me paraît même très
exagéré
!)

A+ ?

JP

PS : comment puis-je "repérer" tous les Worksheets(2) pour être sûr de ne
pas en laisser un de côté ?
PS : le plus simple aurait été de ne pas avoir d'onglet visible, mais je
crois que ce n'est pas possible !

"MichDenis" a écrit dans le message de news:
%
Si tu protèges aussi le classeur pas seulement les feuilles,
les usagers ne pourront pas modifier le nom des feuilles.

Dans ton code, si tu utilises la propriété "Name" des modules
feuille, les usagers pourront s'amuser à modifier le nom des
feuilles sans aucune incidence sur ton code..

Exemple au lieu de
Worksheets("NomOngletFeuill").Range...

Tu écris en utilisant le "Name" de l'objet Feuille que tu vois dans la
fenêtre de l'éditeur de code
MaFeuille.Range("A10")....




"j-pascal" a écrit dans le message de news:
%
Bonjour à tous,

Je souhaiterais que l'utilisateur ne puisse pas renommer un onglet. Pour
info, j'ai seulement 2 onglets dans mon classeur gérés alternativement
par
la propriété "very hidden" (l'onglet 1 affiche un message si les macros
n'ont pas été acceptées ... a contrario, l'onglet 2 correspond à la
feuille
de travail). Le code est invisible pour l'utilisateur, et la feuille
protégée, mais il y a un Hic : on peut modifier la feuille si on renomme
l'onglet ! Ex. le scrollarea limite l'accès à certaines plages, mais
pour
un
nom de feuille donné !

Comme souvent, je pense que ma question est d'une grande limpidité ;-)
;-)
;-)

Merci d'avance pour vos (remarques !) réponses éventuelles.

--
Cordialement @+
JP












Avatar
j-pascal
Parfait (mais pour l'emplacement exact j'ai un peu été aidé par le message
de débogage ;-) )

Merci !

JPM

"MichDenis" a écrit dans le message de news:

Juste AVANT ta ligne qui rend visible ta feuille, tu déprotèges ton
classeur

ThisWorkbook.Unprotect "travail"


"j-pascal" a écrit dans le message de news:

Bonjour Mich,

Incroyable ! Ca marche (impossible de renommer l'onglet !!) ... mais quand
je ferme le classeur, j'ai le msg : "erreur d'exécution 1004" "impossible
de
définir la propriété visible de la classe worksheet" ;-(

A+ ?

JP

PS : question subsidiaire : comment fonctionne ton code ? Quel différence
avec la protection classique d'un classeur ?

"MichDenis" a écrit dans le message de news:

J'ai seulement ajouté la ligne de code suivante à ta procédure auto_open

Thisworkbook.Protect "travail", true, true

http://cjoint.com/?eBeZgbCSEJ



"j-pascal" a écrit dans le message de news:

Bonsoir MichDenis,

Vraiment désolé, je n'ai pas compris. J'ai l'impression d'avoir fait ce
que
tu proposes, mais ça ne marche pas et même pire j'ai un message étrange
quand je relance mon appli.
Je doute que tu le fasses, mais mon fichier (sans tes modifs) est là :
http://cjoint.com/?eAu2gstQst
Je me demande si les "Private Sub" ou les UserForm n'y sont pas pour
quelque
chose ?! Peut-être qu'il y a une particularité dans mon fichier qui est
incompatible avec la mise en application de tes conseils.

Le MdP pour accéder au VBA est "travail2"

JP


"MichDenis" a écrit dans le message de news:

Dans la fenêtre de l'éditeur de code
dans la section "VBAProjet",
quand tu double-cliques sur le nom de ton projet vba,
la liste des objets ("Feuil, workbook, module , formulaire)
s'affiche dans l'arborescence.

Les objets feuilles sont affichés de cette façon
Feuil1(Feuil1)

Feuil1 : Représente le nom de l'objet pour modifier son nom
tu dois afficher la fenêtre des propriétés et modifier la
propriété "Name" lorsque l'objet est sélectionné.
Ce n'est pas obligatoire de le repabtiser... c'est seulement
pour le programmeur -> tu peux lui donner un nom significatif
en fonction de son contenu si tu le désires !
A ce nom d'objet, seul le programmeur y a accès et il n'est
pas
influencé par le changement de nom de l'onglet de la feuille.

(Feuiil) : Représente le nom de l'onglet de la feuille de l'interface de
la feuille de calcul.
Peut changer selon l'humeur de l'usager

En conséquence : au lieu d'utiliser ceci :
Worksheets("Feuil1") -> qui est le nom de l'onglet
tu utilises ceci :
Feuil1.Range("A1") qui est la propriété Name de l'objet.



"j-pascal" a écrit dans le message de news:

Bonsoir MichDenis,

Le "Name" dans ma fenêtre de propriétés = "Feuil2" (en fait mon onglet >>> "planning activités").
Faut-il que je commence par renommer le "Name" de ma fenêtre propriétés
en
"planning activités" ?
Faut-il ensuite que je remplace tous les Worksheets(2).Range par
planning_activité.Range ?
Je ne suis pas sûr d'avoir compris (le "pas sûr" me paraît même très
exagéré
!)

A+ ?

JP

PS : comment puis-je "repérer" tous les Worksheets(2) pour être sûr de
ne
pas en laisser un de côté ?
PS : le plus simple aurait été de ne pas avoir d'onglet visible, mais je
crois que ce n'est pas possible !

"MichDenis" a écrit dans le message de news:
%
Si tu protèges aussi le classeur pas seulement les feuilles,
les usagers ne pourront pas modifier le nom des feuilles.

Dans ton code, si tu utilises la propriété "Name" des modules
feuille, les usagers pourront s'amuser à modifier le nom des
feuilles sans aucune incidence sur ton code..

Exemple au lieu de
Worksheets("NomOngletFeuill").Range...

Tu écris en utilisant le "Name" de l'objet Feuille que tu vois dans la
fenêtre de l'éditeur de code
MaFeuille.Range("A10")....




"j-pascal" a écrit dans le message de news:
%
Bonjour à tous,

Je souhaiterais que l'utilisateur ne puisse pas renommer un onglet.
Pour
info, j'ai seulement 2 onglets dans mon classeur gérés alternativement
par
la propriété "very hidden" (l'onglet 1 affiche un message si les macros
n'ont pas été acceptées ... a contrario, l'onglet 2 correspond à la
feuille
de travail). Le code est invisible pour l'utilisateur, et la feuille
protégée, mais il y a un Hic : on peut modifier la feuille si on
renomme
l'onglet ! Ex. le scrollarea limite l'accès à certaines plages, mais
pour
un
nom de feuille donné !

Comme souvent, je pense que ma question est d'une grande limpidité ;-)
;-)
;-)

Merci d'avance pour vos (remarques !) réponses éventuelles.

--
Cordialement @+
JP
















Avatar
j-pascal
Re,

Au fait, ces deux derniers conseils étaient-ils strictement conformes à ta
toute première réponse (que je n'ai pas pu mettre en pratique) ? Ou bien, au
vu du fichier, ta solution tu as finalement adopté une autre solution ?
JP

"MichDenis" a écrit dans le message de news:

Juste AVANT ta ligne qui rend visible ta feuille, tu déprotèges ton
classeur

ThisWorkbook.Unprotect "travail"


"j-pascal" a écrit dans le message de news:

Bonjour Mich,

Incroyable ! Ca marche (impossible de renommer l'onglet !!) ... mais quand
je ferme le classeur, j'ai le msg : "erreur d'exécution 1004" "impossible
de
définir la propriété visible de la classe worksheet" ;-(

A+ ?

JP

PS : question subsidiaire : comment fonctionne ton code ? Quel différence
avec la protection classique d'un classeur ?

"MichDenis" a écrit dans le message de news:

J'ai seulement ajouté la ligne de code suivante à ta procédure auto_open

Thisworkbook.Protect "travail", true, true

http://cjoint.com/?eBeZgbCSEJ



"j-pascal" a écrit dans le message de news:

Bonsoir MichDenis,

Vraiment désolé, je n'ai pas compris. J'ai l'impression d'avoir fait ce
que
tu proposes, mais ça ne marche pas et même pire j'ai un message étrange
quand je relance mon appli.
Je doute que tu le fasses, mais mon fichier (sans tes modifs) est là :
http://cjoint.com/?eAu2gstQst
Je me demande si les "Private Sub" ou les UserForm n'y sont pas pour
quelque
chose ?! Peut-être qu'il y a une particularité dans mon fichier qui est
incompatible avec la mise en application de tes conseils.

Le MdP pour accéder au VBA est "travail2"

JP


"MichDenis" a écrit dans le message de news:

Dans la fenêtre de l'éditeur de code
dans la section "VBAProjet",
quand tu double-cliques sur le nom de ton projet vba,
la liste des objets ("Feuil, workbook, module , formulaire)
s'affiche dans l'arborescence.

Les objets feuilles sont affichés de cette façon
Feuil1(Feuil1)

Feuil1 : Représente le nom de l'objet pour modifier son nom
tu dois afficher la fenêtre des propriétés et modifier la
propriété "Name" lorsque l'objet est sélectionné.
Ce n'est pas obligatoire de le repabtiser... c'est seulement
pour le programmeur -> tu peux lui donner un nom significatif
en fonction de son contenu si tu le désires !
A ce nom d'objet, seul le programmeur y a accès et il n'est
pas
influencé par le changement de nom de l'onglet de la feuille.

(Feuiil) : Représente le nom de l'onglet de la feuille de l'interface de
la feuille de calcul.
Peut changer selon l'humeur de l'usager

En conséquence : au lieu d'utiliser ceci :
Worksheets("Feuil1") -> qui est le nom de l'onglet
tu utilises ceci :
Feuil1.Range("A1") qui est la propriété Name de l'objet.



"j-pascal" a écrit dans le message de news:

Bonsoir MichDenis,

Le "Name" dans ma fenêtre de propriétés = "Feuil2" (en fait mon onglet >>> "planning activités").
Faut-il que je commence par renommer le "Name" de ma fenêtre propriétés
en
"planning activités" ?
Faut-il ensuite que je remplace tous les Worksheets(2).Range par
planning_activité.Range ?
Je ne suis pas sûr d'avoir compris (le "pas sûr" me paraît même très
exagéré
!)

A+ ?

JP

PS : comment puis-je "repérer" tous les Worksheets(2) pour être sûr de
ne
pas en laisser un de côté ?
PS : le plus simple aurait été de ne pas avoir d'onglet visible, mais je
crois que ce n'est pas possible !

"MichDenis" a écrit dans le message de news:
%
Si tu protèges aussi le classeur pas seulement les feuilles,
les usagers ne pourront pas modifier le nom des feuilles.

Dans ton code, si tu utilises la propriété "Name" des modules
feuille, les usagers pourront s'amuser à modifier le nom des
feuilles sans aucune incidence sur ton code..

Exemple au lieu de
Worksheets("NomOngletFeuill").Range...

Tu écris en utilisant le "Name" de l'objet Feuille que tu vois dans la
fenêtre de l'éditeur de code
MaFeuille.Range("A10")....




"j-pascal" a écrit dans le message de news:
%
Bonjour à tous,

Je souhaiterais que l'utilisateur ne puisse pas renommer un onglet.
Pour
info, j'ai seulement 2 onglets dans mon classeur gérés alternativement
par
la propriété "very hidden" (l'onglet 1 affiche un message si les macros
n'ont pas été acceptées ... a contrario, l'onglet 2 correspond à la
feuille
de travail). Le code est invisible pour l'utilisateur, et la feuille
protégée, mais il y a un Hic : on peut modifier la feuille si on
renomme
l'onglet ! Ex. le scrollarea limite l'accès à certaines plages, mais
pour
un
nom de feuille donné !

Comme souvent, je pense que ma question est d'une grande limpidité ;-)
;-)
;-)

Merci d'avance pour vos (remarques !) réponses éventuelles.

--
Cordialement @+
JP
















Avatar
MichDenis
Dans le premier message, il y avait ceci :
'-----------------
Si tu protèges aussi le classeur pas seulement les feuilles,
les usagers ne pourront pas modifier le nom des feuilles.
'-----------------

C'était l'équivalent à ceci :
Thisworkbook.Protect "travail", true, true

Tout ceci n'est pas évident lorsque l'on débute !

Salutations.



"j-pascal" a écrit dans le message de news:
eGr$
Re,

Au fait, ces deux derniers conseils étaient-ils strictement conformes à ta
toute première réponse (que je n'ai pas pu mettre en pratique) ? Ou bien, au
vu du fichier, ta solution tu as finalement adopté une autre solution ?
JP

"MichDenis" a écrit dans le message de news:

Juste AVANT ta ligne qui rend visible ta feuille, tu déprotèges ton
classeur

ThisWorkbook.Unprotect "travail"


"j-pascal" a écrit dans le message de news:

Bonjour Mich,

Incroyable ! Ca marche (impossible de renommer l'onglet !!) ... mais quand
je ferme le classeur, j'ai le msg : "erreur d'exécution 1004" "impossible
de
définir la propriété visible de la classe worksheet" ;-(

A+ ?

JP

PS : question subsidiaire : comment fonctionne ton code ? Quel différence
avec la protection classique d'un classeur ?

"MichDenis" a écrit dans le message de news:

J'ai seulement ajouté la ligne de code suivante à ta procédure auto_open

Thisworkbook.Protect "travail", true, true

http://cjoint.com/?eBeZgbCSEJ



"j-pascal" a écrit dans le message de news:

Bonsoir MichDenis,

Vraiment désolé, je n'ai pas compris. J'ai l'impression d'avoir fait ce
que
tu proposes, mais ça ne marche pas et même pire j'ai un message étrange
quand je relance mon appli.
Je doute que tu le fasses, mais mon fichier (sans tes modifs) est là :
http://cjoint.com/?eAu2gstQst
Je me demande si les "Private Sub" ou les UserForm n'y sont pas pour
quelque
chose ?! Peut-être qu'il y a une particularité dans mon fichier qui est
incompatible avec la mise en application de tes conseils.

Le MdP pour accéder au VBA est "travail2"

JP


"MichDenis" a écrit dans le message de news:

Dans la fenêtre de l'éditeur de code
dans la section "VBAProjet",
quand tu double-cliques sur le nom de ton projet vba,
la liste des objets ("Feuil, workbook, module , formulaire)
s'affiche dans l'arborescence.

Les objets feuilles sont affichés de cette façon
Feuil1(Feuil1)

Feuil1 : Représente le nom de l'objet pour modifier son nom
tu dois afficher la fenêtre des propriétés et modifier la
propriété "Name" lorsque l'objet est sélectionné.
Ce n'est pas obligatoire de le repabtiser... c'est seulement
pour le programmeur -> tu peux lui donner un nom significatif
en fonction de son contenu si tu le désires !
A ce nom d'objet, seul le programmeur y a accès et il n'est
pas
influencé par le changement de nom de l'onglet de la feuille.

(Feuiil) : Représente le nom de l'onglet de la feuille de l'interface de
la feuille de calcul.
Peut changer selon l'humeur de l'usager

En conséquence : au lieu d'utiliser ceci :
Worksheets("Feuil1") -> qui est le nom de l'onglet
tu utilises ceci :
Feuil1.Range("A1") qui est la propriété Name de l'objet.



"j-pascal" a écrit dans le message de news:

Bonsoir MichDenis,

Le "Name" dans ma fenêtre de propriétés = "Feuil2" (en fait mon onglet >>> "planning activités").
Faut-il que je commence par renommer le "Name" de ma fenêtre propriétés
en
"planning activités" ?
Faut-il ensuite que je remplace tous les Worksheets(2).Range par
planning_activité.Range ?
Je ne suis pas sûr d'avoir compris (le "pas sûr" me paraît même très
exagéré
!)

A+ ?

JP

PS : comment puis-je "repérer" tous les Worksheets(2) pour être sûr de
ne
pas en laisser un de côté ?
PS : le plus simple aurait été de ne pas avoir d'onglet visible, mais je
crois que ce n'est pas possible !

"MichDenis" a écrit dans le message de news:
%
Si tu protèges aussi le classeur pas seulement les feuilles,
les usagers ne pourront pas modifier le nom des feuilles.

Dans ton code, si tu utilises la propriété "Name" des modules
feuille, les usagers pourront s'amuser à modifier le nom des
feuilles sans aucune incidence sur ton code..

Exemple au lieu de
Worksheets("NomOngletFeuill").Range...

Tu écris en utilisant le "Name" de l'objet Feuille que tu vois dans la
fenêtre de l'éditeur de code
MaFeuille.Range("A10")....




"j-pascal" a écrit dans le message de news:
%
Bonjour à tous,

Je souhaiterais que l'utilisateur ne puisse pas renommer un onglet.
Pour
info, j'ai seulement 2 onglets dans mon classeur gérés alternativement
par
la propriété "very hidden" (l'onglet 1 affiche un message si les macros
n'ont pas été acceptées ... a contrario, l'onglet 2 correspond à la
feuille
de travail). Le code est invisible pour l'utilisateur, et la feuille
protégée, mais il y a un Hic : on peut modifier la feuille si on
renomme
l'onglet ! Ex. le scrollarea limite l'accès à certaines plages, mais
pour
un
nom de feuille donné !

Comme souvent, je pense que ma question est d'une grande limpidité ;-)
;-)
;-)

Merci d'avance pour vos (remarques !) réponses éventuelles.

--
Cordialement @+
JP
















1 2