nom d'onglet

Le
Michel (pen ar bed)
Bonjour,
Le bout de code suivant me permet d'empêcher que la feuille "Menu" soit
renommée.
Mais j'aimerais que l'action qui se passe sur l'activation de l'onglet
se passe aussi sur le changement d'onglet et bien sur je ne trouve pas.
J'ai essayé toutes les options de worksheet activate à worksheet
SelectionChange sans résultat
Merci de l'aide

M.


Private Sub Worksheet_Activate()
Dim Vrai_Nom As String
Vrai_Nom = "Menu"
If ActiveSheet.Name <> Vrai_Nom Then
ActiveSheet.Name = Vrai_Nom
End If
End Sub
-
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 #17502351
Je n'ai pas vraiment saisi ce que tu veux réaliser...

Copie ce qui suit dans le thisworkbook de ton classeur
et remplace "Toto" par l'appellation de la propriété "Name"
de l'objet "Feuille" quand tu es dans la fenêtre de l'éditeur de
code

Dans cette fenêtre une feuille est désignée ainsi :
toto(Menu)
"Toto" est la propriété "Name" de l'objet "Feuille"
"Menu" est la propriété "Name" de l'onglet de la feuille.

Cet événement est déclenché à chaque fois que tu sélectionnes
un nouvel onglet "feuille" de l'application.
'------------------------------
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Worksheets(ThisWorkbook.VBProject.VBComponents _
("Toto").Properties("Index")).Name = "Menu"
End Sub
'------------------------------


Il y a aussi cet événement qui pourrait être utilisé dans
le ThisWorkbook :
Cet événement est activé à chaque fois que tu changes
la sélection de la cellule active qu'importe la feuille de
calcul sur laquelle, tu te retrouves.
'-------------------------------
Private Sub Workbook_SheetSelectionChange _
(ByVal Sh As Object, ByVal Target As Range)

Worksheets(ThisWorkbook.VBProject.VBComponents _
("Toto").Properties("Index")).Name = "Menu"

End Sub
'-------------------------------




"Michel (pen ar bed)"
Bonjour,
Le bout de code suivant me permet d'empêcher que la feuille "Menu" soit
renommée.
Mais j'aimerais que l'action qui se passe sur l'activation de l'onglet
se passe aussi sur le changement d'onglet et bien sur je ne trouve pas.
J'ai essayé toutes les options de worksheet activate à worksheet
SelectionChange sans résultat
Merci de l'aide

M.

---------------------------------------------
Private Sub Worksheet_Activate()
Dim Vrai_Nom As String
Vrai_Nom = "Menu"
If ActiveSheet.Name <> Vrai_Nom Then
ActiveSheet.Name = Vrai_Nom
End If
End Sub
----------------------------------------------
Michel (pen ar bed)
Le #17502601
michdenis a exposé le 12/10/2008 :
Je n'ai pas vraiment saisi ce que tu veux réaliser...



Simplement empêcher de renommer un onglet par double-clic

Copie ce qui suit dans le thisworkbook de ton classeur
et remplace "Toto" par l'appellation de la propriété "Name"
de l'objet "Feuille" quand tu es dans la fenêtre de l'éditeur de
code

Dans cette fenêtre une feuille est désignée ainsi :
toto(Menu)
"Toto" est la propriété "Name" de l'objet "Feuille"
"Menu" est la propriété "Name" de l'onglet de la feuille.

Cet événement est déclenché à chaque fois que tu sélectionnes
un nouvel onglet "feuille" de l'application.
'------------------------------
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Worksheets(ThisWorkbook.VBProject.VBComponents _
("Toto").Properties("Index")).Name = "Menu"
End Sub
'------------------------------


Il y a aussi cet événement qui pourrait être utilisé dans
le ThisWorkbook :
Cet événement est activé à chaque fois que tu changes
la sélection de la cellule active qu'importe la feuille de
calcul sur laquelle, tu te retrouves.
'-------------------------------
Private Sub Workbook_SheetSelectionChange _
(ByVal Sh As Object, ByVal Target As Range)

Worksheets(ThisWorkbook.VBProject.VBComponents _
("Toto").Properties("Index")).Name = "Menu"

End Sub
'-------------------------------



J'arrive au même résultat qu'avec mon code (ou alors j'ai pas tous
compris :/ ) à savoir que l'onglet reprend son nom d'origine uniquement
sur une activation de celui-ci
ce que je cherche à faire c'est en plus de l'activation de l'onglet le
faire aussi en sortant de l'onglet actif

j'espère avoir été plus clair

Merci
Patrick BASTARD
Le #17502771
Bonjour, Michel.

pour
le faire aussi en sortant de l'onglet actif :



Avec Worksheet_Deactivate() ?

--
Bien ,

Patrick BASTARD
patrick.bastardchezdbmail.com
michdenis
Le #17502761
| Simplement empêcher de renommer un onglet par double-clic
*** Protection du classeur - Structure et tu ne pourras plus
modifier le nom des feuilles.... le hic, tu ne pourras plus
en ajouter sans enlever la protection....

Copie ce qui suit dans le thisworkbook de ton classeur
et remplace "Toto" par l'appellation de la propriété "Name"
de l'objet "Feuille" quand tu es dans la fenêtre de l'éditeur de
code

Dans cette fenêtre une feuille est désignée ainsi :
toto(Menu)
"Toto" est la propriété "Name" de l'objet "Feuille"
"Menu" est la propriété "Name" de l'onglet de la feuille.

Cet événement est déclenché à chaque fois que tu sélectionnes
un nouvel onglet "feuille" de l'application.
'------------------------------
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Worksheets(ThisWorkbook.VBProject.VBComponents _
("Toto").Properties("Index")).Name = "Menu"
End Sub
'------------------------------


Il y a aussi cet événement qui pourrait être utilisé dans
le ThisWorkbook :
Cet événement est activé à chaque fois que tu changes
la sélection de la cellule active qu'importe la feuille de
calcul sur laquelle, tu te retrouves.
'-------------------------------
Private Sub Workbook_SheetSelectionChange _
(ByVal Sh As Object, ByVal Target As Range)

Worksheets(ThisWorkbook.VBProject.VBComponents _
("Toto").Properties("Index")).Name = "Menu"

End Sub
'-------------------------------



| J'arrive au même résultat qu'avec mon code (ou alors j'ai pas tous
| compris :/ ) à savoir que l'onglet reprend son nom d'origine uniquement
| sur une activation de celui-ci
| ce que je cherche à faire c'est en plus de l'activation de l'onglet le
| faire aussi en sortant de l'onglet actif

| j'espère avoir été plus clair

Cette procédure s'exécute à chaque fois que tu sélectionnes
un nouvel onglet :
'--------------------------------
Private Sub Workbook_SheetSelectionChange _
(ByVal Sh As Object, ByVal Target As Range)

Worksheets(ThisWorkbook.VBProject.VBComponents _
("Toto").Properties("Index")).Name = "Menu"

End Sub
'--------------------------------


Il y a ces 2 événements du ThisWorkbook
'---------------------------------
Private Sub Workbook_SheetActivate(ByVal Sh As Object)

End Sub
'---------------------------------
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)

End Sub
'---------------------------------

MAIS IL N'Y A PAS DANS EXCEL, UNE COMMANDE EXPLICITE
POUR EMPÊCHER LA MODIFICATION DU NOM DE L'ONGLET

SUIS-JE ASSEZ CLAIR ?
LSteph
Le #17502871
Bonjour,

et si tu mettais le nom dans une cellule, exemple a1

=STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1);1)+1;999)

tu pourrais gérér uun seul événement dans le cdode de feuille

Private Sub Worksheet_Calculate()
If [a1] <> "Feuil1" Then Feuil1.Name = "Feuil1"
End Sub

'Cordialement.

'--
'lSteph


Michel (pen ar bed) a écrit :
Bonjour,
Le bout de code suivant me permet d'empêcher que la feuille "Menu" soit
renommée.
Mais j'aimerais que l'action qui se passe sur l'activation de l'onglet
se passe aussi sur le changement d'onglet et bien sur je ne trouve pas.
J'ai essayé toutes les options de worksheet activate à worksheet
SelectionChange sans résultat
Merci de l'aide

M.

---------------------------------------------
Private Sub Worksheet_Activate()
Dim Vrai_Nom As String
Vrai_Nom = "Menu"
If ActiveSheet.Name <> Vrai_Nom Then
ActiveSheet.Name = Vrai_Nom
End If
End Sub
----------------------------------------------




Michel (pen ar bed)
Le #17502861
LSteph a formulé la demande :
Bonjour,

et si tu mettais le nom dans une cellule, exemple a1

=STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1);1)+1;999)

tu pourrais gérér uun seul événement dans le cdode de feuille

Private Sub Worksheet_Calculate()
If [a1] <> "Feuil1" Then Feuil1.Name = "Feuil1"
End Sub



Merci, mais comme les feuilles sont totalement dynamique et effacées
avant chaque activation il va être nécessaire que je cogite cela pour
l'inclure dans le code de la page
je vais essayer
M.
Papyjac
Le #17503821
Bonjour Michel,

Ton problème n'est pas que l'on modifie le nom de l'onglet, mais simplement
que ton code utilise le nom de l'onglet "en dur" dans ton code.

Pour éviter ce problème, j'utilise un NOM qui pointe sur la totalité de
l'onglet et j'accède à l'onglet par ce nom. Du coup je laisse les personnes
renommer l'onglet s'ils le veulent


--
Papyjac


"Michel (pen ar bed)" a écrit :

LSteph a formulé la demande :
> Bonjour,
>
> et si tu mettais le nom dans une cellule, exemple a1
>
> =STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1);1)+1;999)
>
> tu pourrais gérér uun seul événement dans le cdode de feuille
>
> Private Sub Worksheet_Calculate()
> If [a1] <> "Feuil1" Then Feuil1.Name = "Feuil1"
> End Sub
>
Merci, mais comme les feuilles sont totalement dynamique et effacées
avant chaque activation il va être nécessaire que je cogite cela pour
l'inclure dans le code de la page
je vais essayer
M.





Michel (pen ar bed)
Le #17503951
Papyjac a pensé très fort :
Bonjour Michel,

Ton problème n'est pas que l'on modifie le nom de l'onglet, mais simplement
que ton code utilise le nom de l'onglet "en dur" dans ton code.



Ben oui c'est bien ça ;-)

Pour éviter ce problème, j'utilise un NOM qui pointe sur la totalité de
l'onglet et j'accède à l'onglet par ce nom. Du coup je laisse les personnes
renommer l'onglet s'ils le veulent



Je vais regarder de ce coté
en attendant j'ai fait cela (peut être pas trop élégant mais bon ça
fonctionne)
Dans ThisWorbook j'ai mis
----------------------------------------------------------------
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sheets(1).Name <> "Menu" Then Sheets(1).Name = "Menu"
If Sheets(2).Name <> "Import" Then Sheets(2).Name = "Import"
If Sheets(3).Name <> "Tps" Then Sheets(3).Name = "Tps"
If Sheets(4).Name <> "Ps" Then Sheets(4).Name = "Ps"
If Sheets(5).Name <> "Ms" Then Sheets(5).Name = "Ms"
End Sub
------------------------------------------------------------------
M.
michdenis
Le #17504561
| en attendant j'ai fait cela (peut être pas trop élégant
| mais bon ça fonctionne)
| Dans ThisWorbook j'ai mis

**** ET QUE SE PASSE-T-IL SI UN USAGER CHANGE
L'ORDRE DES FEUILLES DANS TON CLASSEUR ?
**** Je te suggère de relire mon premier message sur ce
fil à propos de l'utilisation de la propriété "Name" de
l'objet de la feuille !!!
Michel (pen ar bed)
Le #17504541
michdenis a formulé la demande :


**** ET QUE SE PASSE-T-IL SI UN USAGER CHANGE
L'ORDRE DES FEUILLES DANS TON CLASSEUR ?
**** Je te suggère de relire mon premier message sur ce
fil à propos de l'utilisation de la propriété "Name" de
l'objet de la feuille !!!



Oui je sais, j'ai fais l'essai, mais pour l'instant et pris par le
temps ;-)
Publicité
Poster une réponse
Anonyme