XL 2013 Macro auto après la suppression d'une feuille

fred2705

XLDnaute Junior
Bonjour,

J'aimerais simplement savoir comment lancer une macro automatiquement à la suite de la suppression manuelle de n'importe quelle feuilles du classeur. Y a t'il une solution?

Merci pour votre aide.
 

fred2705

XLDnaute Junior
Merci Dranreb,

Effectivement, mais cette événement lance une action avant la suppression de la feuille alors que moi je cherche à lancer mon action après la suppression de la feuille!

Pour être plus clair à chaque ajout d'une feuille j'ai un code qui met à jour une tabelle (sur une feuille fixe) indiquant le nom des feuilles présentes dans mon classeur, et quand je supprime manuellement une feuille j'aimerais que cette tabelle soit également automatiquement mise à jour!
 

fred2705

XLDnaute Junior
Voici un fichier exemple que j'ai simplifié car l'original est assez volumineux...

Quand on clic sur ajouter un composant la tabelle est mise a jour, mais comment faire pour que la mise à jour se fasse automatiquement quand on supprime manuellement une feuille....?
 

Pièces jointes

  • Modèle1.xlsm
    31.3 KB · Affichages: 34

mutzik

XLDnaute Barbatruc
re, il faut faire 2 macros

une pour copier la feuille
la deuxième qui fait une mise à jour dans tabelle

Code:
Sub Copier()     
Dim w As String
w = ActiveSheet.Name
'Copier la feuille
CopierApres = Sheets.Count - 1
Sheets(w).Copy After:=Sheets(CopierApres)
MAJtabelle
end sub

Code:
Sub MAJtabelle()
'<<<<<<<<<<<<<<<<<<<<<<<<< Mettre les noms des feuilles à jour : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    Worksheets("Tabelle").Activate
   
    'Afficher la liste des noms (codename) de toutes les feuilles
    Range("B3").Select
    For r = 1 To Sheets.Count
        ActiveCell.Value = Sheets(r).CodeName
        ActiveCell.Offset(0, 1).Value = Sheets(r).Name
        ActiveCell.Offset(1, 0).Select
    Next r
End Sub

dans thisWorkbook
Code:
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    MAJtabelle
End Sub
 

eriiic

XLDnaute Barbatruc
Bonjour,

Dans ThisWorkbook :
VB:
Option Explicit

Dim nbSheets As Long
Private Sub Workbook_Open()
    nbSheets = Sheets.Count
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    If Sheets.Count <> nbSheets Then MAJtabelle: nbSheets = Sheets.Count
End Sub

' module copier
Sub MAJtabelle()
    Dim lig As Long, i As Long
    lig = 3
    With Worksheets("Tabelle")
        .Range(.[B1:C1], .[B1].End(xlDown)).Offset(2).ClearContents
        'Afficher la liste des noms (codename) de toutes les feuilles
        For i = 1 To Sheets.Count
            .Cells(lig, 2).Value = Sheets(i).CodeName
            .Cells(lig, 3).Value = Sheets(i).Name
            lig = lig + 1
        Next i
    End With
End Sub

eric
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 497
Messages
2 088 995
Membres
104 001
dernier inscrit
dessinbecm