Action supprimer feuille code
o-sixty-o
Messages postés
25
Statut
Membre
-
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'aimerai pouvoir dire en code : pendant la période ou mon classeur est ouvert , si on supprime une feuille alor écrire x ds feuil1 . g donc placé mon code dans Worbook.activate car je ne vois pas ou le placer ailleurs..ms ça marche pas !! g testé toute sorte de chose ds worbook.activate avc les points d'arret et ça détecte rien ! comment pourrais-je faire ? c assez urgent il faut absolument que je puiss mettre ce code quelque part et qu'il soit détecté !!
merci ...
J'aimerai pouvoir dire en code : pendant la période ou mon classeur est ouvert , si on supprime une feuille alor écrire x ds feuil1 . g donc placé mon code dans Worbook.activate car je ne vois pas ou le placer ailleurs..ms ça marche pas !! g testé toute sorte de chose ds worbook.activate avc les points d'arret et ça détecte rien ! comment pourrais-je faire ? c assez urgent il faut absolument que je puiss mettre ce code quelque part et qu'il soit détecté !!
merci ...
Configuration: Windows XP Internet Explorer 6.0
1 réponse
-
bonjour
une autre option, mais il faut pour savoir si la feuille existe encore, tester son nom avec toutes les autres feuilles
à placer dans ThisWorkBook
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
MsgBox Sh.Name
End Sub
quand tu supprimes une feuille, elle se desactive donc lance automatiquement cette precedure-
Bonsoir wilfried,
oui, mais l'activation d'une autre feuille déclenche cet évènement...
Comme il n'y a pas d'évènement 'suppression de feuille' à part noter celle qui sont existantes à l'ouverture et pointer ensuite je ne vois pas.
Exemple : Classeur1.xlsOption Explicit Dim ListeFeuilles(200) As String, nbFeuilles As Long Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim Sh As Worksheet, i As Long, j As Long, k As Long, ok As Boolean For i = 1 To nbFeuilles ok = False For j = 1 To Sheets.Count If ListeFeuilles(i) = Sheets(j).Name Then ok = True Exit For End If Next j If Not ok Then k = k + 1 Cells(k, 1) = ListeFeuilles(i) End If Next i If k > 0 Then Cells(k + 1, 1) = "" End Sub Private Sub Workbook_Open() Dim Sh As Worksheet, i As Long For i = 1 To Sheets.Count ListeFeuilles(i) = Sheets(i).Name Next i nbFeuilles = i - 1 End Sub Sub Lister() Call Workbook_BeforeClose(False) End Sub
A la fermeture (ou clic sur un bouton) les feuilles ayant été supprimées sont listées en colonne A
(les feuilles crées et supprimées lors de la même session ne sont pas prises en compte)
eric- Bonjour eric
Je sais bien Eric, mais rien n'empêche de tricher lol
aller : en 4 lignes, sans compter les sub et end sub, sans fermer ni ouvrir le classeur
immédiatement apres la destruction de la feuille
code à placer dans ThisWorkBook
Public feuil As String, fc As Integer Private Sub Workbook_SheetActivate(ByVal sh As Object) If ThisWorkbook.Sheets.Count <> fc Then Workbook_SheetDeleted feuil End Sub Private Sub Workbook_SheetDeactivate(ByVal sh As Object) fc = ThisWorkbook.Sheets.Count feuil = sh.Name End Sub Private Sub Workbook_SheetDeleted(ByVal sh As String) MsgBox "Feuille : " & sh & " Détuite" End Sub
finalement, faire une interruption sur une suppression de feuille est faisable...
amicalement
-