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

  • Initiateur de la discussion Initiateur de la discussion AntoineM
  • Date de début Date de début

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 !

A

AntoineM

Guest
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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
15
Affichages
662
Réponses
5
Affichages
551
Réponses
10
Affichages
634
Réponses
7
Affichages
410
Réponses
4
Affichages
692
Réponses
5
Affichages
847
Retour