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

nom d'onglet

14 réponses
Avatar
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
----------------------------------------------

10 réponses

1 2
Avatar
michdenis
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)" a écrit dans le message de news:

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
----------------------------------------------
Avatar
Michel (pen ar bed)
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
Avatar
Patrick BASTARD
Bonjour, Michel.

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



Avec Worksheet_Deactivate() ?

--
Bien ,

Patrick BASTARD
patrick.bastardchezdbmail.com
Avatar
michdenis
| 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 ?
Avatar
LSteph
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
----------------------------------------------




Avatar
Michel (pen ar bed)
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.
Avatar
Papyjac
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.





Avatar
Michel (pen ar bed)
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.
Avatar
michdenis
| 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 !!!
Avatar
Michel (pen ar bed)
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 ;-)
1 2