Suppression d'un onglet

Bonjour tout le monde !!

Voilà j'utilise ce code pour créer autant d'onglet que de ligne présente dans ma colonne 1 sans doublons

Dim Sh As Worksheet
Dim LastLig As Long, i As Long

With Sheets("Adresse")
    LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
    For i = LastLig To 2 Step -1
        On Error Resume Next
        Set Sh = Sheets(CStr(.Range("A" & i).Value))
        On Error GoTo 0
        If Sh Is Nothing Then
            ThisWorkbook.Sheets.Add.Name = CStr(.Range("A" & i).Value)
        Else
            Set Sh = Nothing
        End If
    Next i

End With

Ces onglets sont cachés par la suite.

Tout se passe dans le workbook_open ma question est donc comment puis-je adapter ce code pour qu'il me supprime un onglet si il ne trouve pas la ligne dans la feuille ?

Dans l'attente et vous remerciant par avance.

Cordialement

Bonjour

Attention dans la page "Adresse" il faut la liste de toutes les pages (y compris "Adresse")

Private Sub Workbook_Open()
Dim Sh As Worksheet
Dim LastLig As Long, i As Long

  With Sheets("Adresse")
    LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
    For i = LastLig To 2 Step -1
      On Error Resume Next
      Set Sh = Sheets(CStr(.Range("A" & i).Value))
      On Error GoTo 0
      If Sh Is Nothing Then
        ThisWorkbook.Sheets.Add.Name = CStr(.Range("A" & i).Value)
      Else
        Set Sh = Nothing
      End If
    Next i
    Application.DisplayAlerts = False
    For Each Sh In Sheets
      If Application.CountIf(.Columns("A"), Sh.Name) = 0 Then Sh.Delete
    Next Sh
    Application.DisplayAlerts = False
  End With
End Sub

Bonjour Banzaï,

Ces feuilles en questions, enfin noms d'onglets commencent tous par ADR, n'y a t-il pas un moyen pour garder les autres feuilles ?

Ou faire une exception sauf la feuille x ou y ?

Ou je suis trop exigeant ?

En tout cas merci de te pencher sur mon problème (:

Cordialement

Bonjour

Remplaces la macro actuelle par celle-ci

Private Sub Workbook_Open()
Dim Sh As Worksheet
Dim LastLig As Long, i As Long

  With Sheets("Adresse")
    LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
    For i = LastLig To 2 Step -1
      On Error Resume Next
      Set Sh = Sheets(CStr(.Range("A" & i).Value))
      On Error GoTo 0
      If Sh Is Nothing Then
        ThisWorkbook.Sheets.Add.Name = CStr(.Range("A" & i).Value)
      Else
        Set Sh = Nothing
      End If
    Next i
    Application.DisplayAlerts = False
    For Each Sh In Sheets
      Select Case UCase(Sh.Name)
        Case "ADRESSE", "Y", "Z"    ' Liste des pages à ne pas traiter (nom en majuscule)
        Case Else
          If Application.CountIf(.Columns("A"), Sh.Name) = 0 Then Sh.Delete
      End Select
    Next Sh
    Application.DisplayAlerts = False
  End With
End Sub

Super !!

Cela fonctionne parfaitement !!

Un grand merci !!

Cordialement

Rechercher des sujets similaires à "suppression onglet"