XL 2013 VBA - Ajouter onglet nommé en dernière position

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

AntoineM

XLDnaute Junior
Bonjour le forum,

J'ai créer une macro qui crée des onglets en fonction d'une plage de cellule. Pour chaque cellule renseignée dans la colonne A, un onglet est crée. Ensuite la même macro contrôle si chaque onglet correspond bien à une cellule de la plage, et si non, elle le supprime.

La macro fonctionne (elle n'est peut-être pas optimisé ou esthétique), mais j'aimerais que les onglets soient ajoutés en dernière position. Et je ne vois pas ou mettre le After:=Sheets(Sheets.Count).

VB:
Sub MAJ_Onglets()
Dim Sh As Worksheet
Dim Ws As Worksheet
Dim LastLig As Long
Dim i As Integer
Dim j As Integer

j = 2

For Each Ws In Application.Worksheets
    If Ws.Name = Sheets("Feuil1").Range("A" & j) Then
    j = j + 1
    Else
    Application.DisplayAlerts = False
        If Ws.Name <> "Feuil1" Then
    Ws.Delete
    j = j + 1
        End If
    Application.DisplayAlerts = True
    End If

Next Ws
 
With Sheets("Feuil1")
    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

End Sub
 
Re : VBA - Ajouter onglet nommé en dernière position

Bonjour à tous
essayes
VB:
Sub MAJ_Onglets()
Dim Sh As Worksheet
Dim Ws As Worksheet
Dim LastLig As Long
Dim i As Integer
Dim j As Integer

j = 2

For Each Ws In Application.Worksheets
    If Ws.Name = Sheets("Feuil1").Range("A" & j) Then
    j = j + 1
    Else
    Application.DisplayAlerts = False
        If Ws.Name <> "Feuil1" Then
    Ws.Delete
    j = j + 1
        End If
    Application.DisplayAlerts = True
    End If

Next Ws
 
With Sheets("Feuil1")
    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 After:=Sheets(Sheets.Count)
            ActiveSheet.Name = CStr(.Range("A" & i).Value)
        Else
            Set Sh = Nothing
        End If
    Next i
End With

End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
232
Réponses
10
Affichages
281
Réponses
7
Affichages
211
Réponses
4
Affichages
177
Réponses
5
Affichages
235
  • Question Question
Microsoft 365 Excel VBA
Réponses
5
Affichages
425
Réponses
2
Affichages
201
Retour