Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
bourby
bonjour,
tu peux faire en sorte que ton code qui crée les nouvelles feuilles leur donne à toutes un nom commençant par un ou des caractères de ton choix ( _ p.ex.). Ensuite, tu écris une procédure évènementielle qui teste, avant de la supprimer, si le nom de la feuille commence bien par "_".
Cordialement
Bourby
Gilgamesh wrote:
Bonjour à tous,
j'ai un classeur avec de jouli boutons permettant de créer des feuilles de résultats (simple collage en valeur de feuille active).
Je voudrais que l'utilisateur puisse supprimer ce qu'il a crée, tout en évitant les coups de mongols (suppression d'une feuille active).
Je ne maitrise pas trop la commande "contextuelle", alors... un pt'tit conseil les gens ?
merci
bonjour,
tu peux faire en sorte que ton code qui crée les nouvelles feuilles leur
donne à toutes un nom commençant par un ou des caractères de ton choix
( _ p.ex.).
Ensuite, tu écris une procédure évènementielle qui teste, avant de la
supprimer, si le nom de la feuille commence bien par "_".
Cordialement
Bourby
Gilgamesh wrote:
Bonjour à tous,
j'ai un classeur avec de jouli boutons permettant de créer des feuilles
de résultats (simple collage en valeur de feuille active).
Je voudrais que l'utilisateur puisse supprimer ce qu'il a crée, tout en
évitant les coups de mongols (suppression d'une feuille active).
Je ne maitrise pas trop la commande "contextuelle", alors... un pt'tit
conseil les gens ?
tu peux faire en sorte que ton code qui crée les nouvelles feuilles leur donne à toutes un nom commençant par un ou des caractères de ton choix ( _ p.ex.). Ensuite, tu écris une procédure évènementielle qui teste, avant de la supprimer, si le nom de la feuille commence bien par "_".
Cordialement
Bourby
Gilgamesh wrote:
Bonjour à tous,
j'ai un classeur avec de jouli boutons permettant de créer des feuilles de résultats (simple collage en valeur de feuille active).
Je voudrais que l'utilisateur puisse supprimer ce qu'il a crée, tout en évitant les coups de mongols (suppression d'une feuille active).
Je ne maitrise pas trop la commande "contextuelle", alors... un pt'tit conseil les gens ?
merci
michdenis
Bonjour Gilgamesh,
Voici un code de Bill Manville MVP - Microsoft Excel, Oxford, England
Il ne te reste plus qu'à utiliser les événements Workbook_Open et Workbook_Close pour gérer la mise en place des macro
Ne pas oublier de modifier dans la procédure "MyDeleteSheet" le nom des feuilles que tu ne veux pas que l'usager supprime.
Dans le ThisWorkbook '------------------ Private Sub Workbook_Open() Setup End Sub '------------------ Private Sub Workbook_BeforeClose(Cancel As Boolean) Restore End Sub '------------------
'Tout ce qui suit dans un module Standard '------------------------------------ Sub Setup() Dim CB As CommandBar Dim C As CommandBarControl For Each CB In Application.CommandBars Set C = CB.FindControl(ID:7, recursive:=True) If Not C Is Nothing Then C.OnAction = "MyDeleteSheet" C.State = msoButtonUp ' seems to be checked otherwise End If Next End Sub '------------------------------------ Sub Restore() Dim CB As CommandBar Dim C As CommandBarControl For Each CB In Application.CommandBars Set C = CB.FindControl(ID:7, recursive:=True) If Not C Is Nothing Then C.OnAction = "" Next End Sub
'------------------------------------ Sub MyDeleteSheet()
' refuse to delete sheets Feuil1, Feuil2 or Feuil3 of this workbook Dim bOK As Boolean bOK = True If ActiveWorkbook.Name = ThisWorkbook.Name Then Select Case ActiveSheet.Name Case "Feuil1", "Feuil2", "Feuil3" bOK = False End Select End If If bOK Then ' display own dialog If MsgBox("Are you sure you want to delete sheet " & _ ActiveSheet.Name, vbYesNo) = vbYes Then Application.DisplayAlerts = False ' inhibit standard message ActiveSheet.Delete Application.DisplayAlerts = True End If Else MsgBox "No, you can't delete this sheet" End If End Sub '------------------------------------
Salutations!
"Gilgamesh" a écrit dans le message de news: % Bonjour à tous,
j'ai un classeur avec de jouli boutons permettant de créer des feuilles de résultats (simple collage en valeur de feuille active).
Je voudrais que l'utilisateur puisse supprimer ce qu'il a crée, tout en évitant les coups de mongols (suppression d'une feuille active).
Je ne maitrise pas trop la commande "contextuelle", alors... un pt'tit conseil les gens ?
merci
Bonjour Gilgamesh,
Voici un code de Bill Manville
MVP - Microsoft Excel, Oxford, England
Il ne te reste plus qu'à utiliser les événements Workbook_Open et
Workbook_Close pour gérer la mise en place des macro
Ne pas oublier de modifier dans la procédure "MyDeleteSheet" le
nom des feuilles que tu ne veux pas que l'usager supprime.
Dans le ThisWorkbook
'------------------
Private Sub Workbook_Open()
Setup
End Sub
'------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Restore
End Sub
'------------------
'Tout ce qui suit dans un module Standard
'------------------------------------
Sub Setup()
Dim CB As CommandBar
Dim C As CommandBarControl
For Each CB In Application.CommandBars
Set C = CB.FindControl(ID:7, recursive:=True)
If Not C Is Nothing Then
C.OnAction = "MyDeleteSheet"
C.State = msoButtonUp ' seems to be checked otherwise
End If
Next
End Sub
'------------------------------------
Sub Restore()
Dim CB As CommandBar
Dim C As CommandBarControl
For Each CB In Application.CommandBars
Set C = CB.FindControl(ID:7, recursive:=True)
If Not C Is Nothing Then C.OnAction = ""
Next
End Sub
'------------------------------------
Sub MyDeleteSheet()
' refuse to delete sheets Feuil1, Feuil2 or Feuil3 of this workbook
Dim bOK As Boolean
bOK = True
If ActiveWorkbook.Name = ThisWorkbook.Name Then
Select Case ActiveSheet.Name
Case "Feuil1", "Feuil2", "Feuil3"
bOK = False
End Select
End If
If bOK Then
' display own dialog
If MsgBox("Are you sure you want to delete sheet " & _
ActiveSheet.Name, vbYesNo) = vbYes Then
Application.DisplayAlerts = False ' inhibit standard message
ActiveSheet.Delete
Application.DisplayAlerts = True
End If
Else
MsgBox "No, you can't delete this sheet"
End If
End Sub
'------------------------------------
Salutations!
"Gilgamesh" <user@exemple.net> a écrit dans le message de news: %23ffZFOsRGHA.4960@TK2MSFTNGP12.phx.gbl...
Bonjour à tous,
j'ai un classeur avec de jouli boutons permettant de créer des feuilles
de résultats (simple collage en valeur de feuille active).
Je voudrais que l'utilisateur puisse supprimer ce qu'il a crée, tout en
évitant les coups de mongols (suppression d'une feuille active).
Je ne maitrise pas trop la commande "contextuelle", alors... un pt'tit
conseil les gens ?
Voici un code de Bill Manville MVP - Microsoft Excel, Oxford, England
Il ne te reste plus qu'à utiliser les événements Workbook_Open et Workbook_Close pour gérer la mise en place des macro
Ne pas oublier de modifier dans la procédure "MyDeleteSheet" le nom des feuilles que tu ne veux pas que l'usager supprime.
Dans le ThisWorkbook '------------------ Private Sub Workbook_Open() Setup End Sub '------------------ Private Sub Workbook_BeforeClose(Cancel As Boolean) Restore End Sub '------------------
'Tout ce qui suit dans un module Standard '------------------------------------ Sub Setup() Dim CB As CommandBar Dim C As CommandBarControl For Each CB In Application.CommandBars Set C = CB.FindControl(ID:7, recursive:=True) If Not C Is Nothing Then C.OnAction = "MyDeleteSheet" C.State = msoButtonUp ' seems to be checked otherwise End If Next End Sub '------------------------------------ Sub Restore() Dim CB As CommandBar Dim C As CommandBarControl For Each CB In Application.CommandBars Set C = CB.FindControl(ID:7, recursive:=True) If Not C Is Nothing Then C.OnAction = "" Next End Sub
'------------------------------------ Sub MyDeleteSheet()
' refuse to delete sheets Feuil1, Feuil2 or Feuil3 of this workbook Dim bOK As Boolean bOK = True If ActiveWorkbook.Name = ThisWorkbook.Name Then Select Case ActiveSheet.Name Case "Feuil1", "Feuil2", "Feuil3" bOK = False End Select End If If bOK Then ' display own dialog If MsgBox("Are you sure you want to delete sheet " & _ ActiveSheet.Name, vbYesNo) = vbYes Then Application.DisplayAlerts = False ' inhibit standard message ActiveSheet.Delete Application.DisplayAlerts = True End If Else MsgBox "No, you can't delete this sheet" End If End Sub '------------------------------------
Salutations!
"Gilgamesh" a écrit dans le message de news: % Bonjour à tous,
j'ai un classeur avec de jouli boutons permettant de créer des feuilles de résultats (simple collage en valeur de feuille active).
Je voudrais que l'utilisateur puisse supprimer ce qu'il a crée, tout en évitant les coups de mongols (suppression d'une feuille active).
Je ne maitrise pas trop la commande "contextuelle", alors... un pt'tit conseil les gens ?
merci
Gilgamesh
bourby wrote:
tu peux faire en sorte que ton code qui crée les nouvelles feuilles leur donne à toutes un nom commençant par un ou des caractères de ton choix ( _ p.ex.). Ensuite, tu écris une procédure évènementielle qui teste, avant de la supprimer, si le nom de la feuille commence bien par "_".
merci, effectivement c'est une solution mais ce qui me manquait c'était précisément la procédure événementielle :)
a+
bourby wrote:
tu peux faire en sorte que ton code qui crée les nouvelles feuilles leur
donne à toutes un nom commençant par un ou des caractères de ton choix
( _ p.ex.).
Ensuite, tu écris une procédure évènementielle qui teste, avant de la
supprimer, si le nom de la feuille commence bien par "_".
merci, effectivement c'est une solution mais ce qui me manquait c'était
précisément la procédure événementielle :)
tu peux faire en sorte que ton code qui crée les nouvelles feuilles leur donne à toutes un nom commençant par un ou des caractères de ton choix ( _ p.ex.). Ensuite, tu écris une procédure évènementielle qui teste, avant de la supprimer, si le nom de la feuille commence bien par "_".
merci, effectivement c'est une solution mais ce qui me manquait c'était précisément la procédure événementielle :)
a+
Gilgamesh
michdenis wrote:
Bonjour Gilgamesh,
Voici un code de Bill Manville MVP - Microsoft Excel, Oxford, England
Ca marche !
et en plus j'apprend des trucs intéressants
Merci Bill et merci michdenis :)
michdenis wrote:
Bonjour Gilgamesh,
Voici un code de Bill Manville
MVP - Microsoft Excel, Oxford, England