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

Interdire renommer feuille

11 réponses
Avatar
StDonat
Bonjour,
Je souhaiterais, par VBA,d' empecher de renommer une feuille(un onglet)!
En fait j'ai une macro, qui ajoute une feuille "Sheets.add", je récupere le
nom de la feuille par toto=ActiveSheet.Name et lorsque je ferme le classeur
je veux supprimer cette feuille "sheet(toto)......delete".
Ca marche presque sauf si quelqu'un renomme la feuille...
Merci de votre aide

10 réponses

1 2
Avatar
h2so4
bonjour,

utilise plutot index

toto¬tivesheet.index

sheet(toto).delete

ça devrait marcher si on renomme la feuille
--

h2so4
play triogical at http://www.triogical.com
"StDonat" wrote in message
news:
Bonjour,
Je souhaiterais, par VBA,d' empecher de renommer une feuille(un onglet)!
En fait j'ai une macro, qui ajoute une feuille "Sheets.add", je récupere
le
nom de la feuille par toto¬tiveSheet.Name et lorsque je ferme le
classeur
je veux supprimer cette feuille "sheet(toto)......delete".
Ca marche presque sauf si quelqu'un renomme la feuille...
Merci de votre aide



Avatar
RGI
Bonjour

protéger la feuille et déprotéger juste avant la suppression

Salutations

RGI

Bonjour,
Je souhaiterais, par VBA,d' empecher de renommer une feuille(un onglet)!
En fait j'ai une macro, qui ajoute une feuille "Sheets.add", je récupere le
nom de la feuille par toto¬tiveSheet.Name et lorsque je ferme le classeur
je veux supprimer cette feuille "sheet(toto)......delete".
Ca marche presque sauf si quelqu'un renomme la feuille...
Merci de votre aide




Avatar
h2so4
rebonjour,

Attention !!!!!!!!!!!!!!!!!

ce n'est pas un bonne idée. il y a un risque de supprimer une mauvaise
feuille si on change l'ordre des feuilles.

--

h2so4
play triogical at http://www.triogical.com" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.triogical.com
"h2so4" wrote in message
news:eyRMh.82115$
bonjour,

utilise plutot index

toto¬tivesheet.index

sheet(toto).delete

ça devrait marcher si on renomme la feuille
--

h2so4
play triogical at http://www.triogical.com" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.triogical.com
"StDonat" wrote in message
news:
Bonjour,
Je souhaiterais, par VBA,d' empecher de renommer une feuille(un onglet)!
En fait j'ai une macro, qui ajoute une feuille "Sheets.add", je récupere
le
nom de la feuille par toto¬tiveSheet.Name et lorsque je ferme le
classeur
je veux supprimer cette feuille "sheet(toto)......delete".
Ca marche presque sauf si quelqu'un renomme la feuille...
Merci de votre aide







Avatar
RGI
là aussi ce n'est pas une bonne idée

Bonjour

protéger la feuille et déprotéger juste avant la suppression

Salutations

RGI

Bonjour,
Je souhaiterais, par VBA,d' empecher de renommer une feuille(un onglet)!
En fait j'ai une macro, qui ajoute une feuille "Sheets.add", je
récupere le nom de la feuille par toto¬tiveSheet.Name et lorsque je
ferme le classeur je veux supprimer cette feuille
"sheet(toto)......delete".
Ca marche presque sauf si quelqu'un renomme la feuille...
Merci de votre aide






Avatar
JB
Bonjour,

Outils/protection/protéger le classeur.

JB
On 23 mar, 15:21, StDonat wrote:
Bonjour,
Je souhaiterais, par VBA,d' empecher de renommer une feuille(un onglet)!
En fait j'ai une macro, qui ajoute une feuille "Sheets.add", je récuper e le
nom de la feuille par toto¬tiveSheet.Name et lorsque je ferme le clas seur
je veux supprimer cette feuille "sheet(toto)......delete".
Ca marche presque sauf si quelqu'un renomme la feuille...
Merci de votre aide


Avatar
h2so4
rebonjour,

voici, une autre solution qui semble fonctionner, mais qui ne me parait pas
très élégante :

Dim changenotallowed As Boolean
Dim toto As String


Private Sub Workbook_SheetActivate(ByVal Sh As Object)
' prendre trace que l'on a activé toto
If Sh.Name = toto Then
changenotallowed = True
Else
changenotallowed = False
End If
End Sub


Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
' si on passe à une autre feuille, si la feuille précédente était toto, on
lui remet son nom
If changenotallowed Then
Sh.Name = toto
End If
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
' si on sauve le tableau, on provoque un changement de feuille pour activer
la procedure sheetdeactivate
Worksheets(1).Select
Worksheets(2).Select
End Sub


--

h2so4
play triogical at http://www.triogical.com" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.triogical.com
"h2so4" wrote in message
news:eyRMh.82115$
bonjour,

utilise plutot index

toto¬tivesheet.index

sheet(toto).delete

ça devrait marcher si on renomme la feuille
--

h2so4
play triogical at http://www.triogical.com" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.triogical.com
"StDonat" wrote in message
news:
Bonjour,
Je souhaiterais, par VBA,d' empecher de renommer une feuille(un onglet)!
En fait j'ai une macro, qui ajoute une feuille "Sheets.add", je récupere
le
nom de la feuille par toto¬tiveSheet.Name et lorsque je ferme le
classeur
je veux supprimer cette feuille "sheet(toto)......delete".
Ca marche presque sauf si quelqu'un renomme la feuille...
Merci de votre aide







Avatar
Corto
Bonjour,
Que pense tu de créer une variable globale à laquelle tu affecterait ta
feuille après sa création ?
Dans la partie déclaration de ThisWorkbook : Dim XSHEET As Object
dans ta macro tu fais : Set XSHEET = sheet(toto)
et à la fermeture : XSHEET.delete
j'ai testé ça marche, tu peux juste avoir une erreur si quelqu'un a
supprimé la feuille entre temps. mais si tu mets On Error Resume Next
dans la macro Workbook_BeforeClose ça n'est pas bloquant.

Corto

Bonjour,
Je souhaiterais, par VBA,d' empecher de renommer une feuille(un onglet)!
En fait j'ai une macro, qui ajoute une feuille "Sheets.add", je récupere le
nom de la feuille par toto¬tiveSheet.Name et lorsque je ferme le classeur
je veux supprimer cette feuille "sheet(toto)......delete".
Ca marche presque sauf si quelqu'un renomme la feuille...
Merci de votre aide



Avatar
Gilles MOUGNOZ
Bonjour, StDonat
Essaie en utilisant la propriété CodeName de la feuille.

toto = ActiveSheet.CodeName

A la sortie, tu ne peux cependant pas utiliser ce nom directement pour
désigner la feuille.
Voici donc un petit bout de code pour remplacer sheets(toto).delete :

Dim voFeuille As WorkSheet
For Each voFeuille In ActiveWorkBook.Sheets
If voFeuille.CodeName= toto Then
voFeuille.Delete
Exit For
End If
Next voFeuille

Regarde aussi l'aide de VBA sur "CodeName", c'est assez instructif .
--
Bonne continuation

Bonjour,
Je souhaiterais, par VBA,d' empecher de renommer une feuille(un onglet)!
En fait j'ai une macro, qui ajoute une feuille "Sheets.add", je récupere
le
nom de la feuille par toto¬tiveSheet.Name et lorsque je ferme le
classeur
je veux supprimer cette feuille "sheet(toto)......delete".
Ca marche presque sauf si quelqu'un renomme la feuille...
Merci de votre aide


Avatar
G. L
Bonsoir StDonat,

Une sug. :
A la création de la feuille mettre un paramètre dans une des cellules de la
feuille, et tester cette cellule pour supprimer la feuille.

Paramètre ou n° de la feuille avec par exemple :

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

Bon courage
Cordialement
Gérard




"StDonat" a écrit dans le message de
news:
Bonjour,
Je souhaiterais, par VBA,d' empecher de renommer une feuille(un onglet)!
En fait j'ai une macro, qui ajoute une feuille "Sheets.add", je récupere
le

nom de la feuille par toto¬tiveSheet.Name et lorsque je ferme le
classeur

je veux supprimer cette feuille "sheet(toto)......delete".
Ca marche presque sauf si quelqu'un renomme la feuille...
Merci de votre aide



Avatar
StDonat
Merci a tous, J'ai gardé cette solution qui pour moi est la plus simple, mais
celle de Gilles fonctionne aussi trés bien, un peu longue si le classeur
comporte beaucoup de feuille.
Félicitation, merci aussi a toi H2s04 pour avoir vu ton erreur auquel je
n'avais pas pensé non plus
1 2