Interdire renommer feuille

Le
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¬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
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
h2so4
Le #4251741
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" 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



RGI
Le #4251731
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




h2so4
Le #4251711
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
"h2so4" 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
"StDonat" 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







RGI
Le #4251701
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






JB
Le #4251641
Bonjour,

Outils/protection/protéger le classeur.

JB
On 23 mar, 15:21, 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é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


h2so4
Le #4251571
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
"h2so4" 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
"StDonat" 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







Corto
Le #4251521
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



Gilles MOUGNOZ
Le #4251501
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


G. L
Le #4320951
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" 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



StDonat
Le #4320821
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
Publicité
Poster une réponse
Anonyme