vba - onglet - renommer

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #4463201
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" %
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
j-pascal
Le #4461231
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" %
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" %
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




MichDenis
Le #4461201
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"
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" %
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" %
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




j-pascal
Le #4484371
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"
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"
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" %
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" %
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








MichDenis
Le #4484211
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"
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"
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"
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" %
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" %
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








j-pascal
Le #4484091
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"
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"
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"
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"
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" %
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" %
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












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

ThisWorkbook.Unprotect "travail"


"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"
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"
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"
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"
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" %
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" %
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












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

Merci !

JPM

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

ThisWorkbook.Unprotect "travail"


"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"
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"
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"
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"
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" %
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" %
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
















j-pascal
Le #4483031
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"
Juste AVANT ta ligne qui rend visible ta feuille, tu déprotèges ton
classeur

ThisWorkbook.Unprotect "travail"


"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"
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"
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"
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"
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" %
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" %
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
















MichDenis
Le #4483021
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" 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"
Juste AVANT ta ligne qui rend visible ta feuille, tu déprotèges ton
classeur

ThisWorkbook.Unprotect "travail"


"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"
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"
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"
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"
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" %
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" %
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
















Publicité
Poster une réponse
Anonyme