Bonjour le forum,
J'ai un fichier qui contient plusieurs onglets (cf. Pièce jointe). Dans ce fichier, il y a plusieurs onglet dont le nom peut être : de type numérique, date ou texte.
J'ai une liste de nom dans ma colonne 1 (de la feuille 'Info') et j'ai crée une macro qui crée les onglets selon les nom présent dans cette plage.
Le problème : J'aimerais que cette macro 'mette à jour' les onglets, pour supprimer les onglets dont le nom n'apparaît pas dans la liste. Mais ce que j'ai écris supprime tous les onglets avant de les recréer.
Il y a plein de codes différents dans le fichier car j'ai exploré pas mal de piste pour tester. Actuellement je suis entrain de voir avec ParamArray ou les noms de plages mais je bloque.
Merci à tous,
AntoineM
J'ai un fichier qui contient plusieurs onglets (cf. Pièce jointe). Dans ce fichier, il y a plusieurs onglet dont le nom peut être : de type numérique, date ou texte.
J'ai une liste de nom dans ma colonne 1 (de la feuille 'Info') et j'ai crée une macro qui crée les onglets selon les nom présent dans cette plage.
Le problème : J'aimerais que cette macro 'mette à jour' les onglets, pour supprimer les onglets dont le nom n'apparaît pas dans la liste. Mais ce que j'ai écris supprime tous les onglets avant de les recréer.
VB:
Sub MAJ_Ongl()
Application.ScreenUpdating = False
Dim Sh As Worksheet
Dim Ws As Worksheet
Dim LastLig As Long
Dim i As Integer
Dim j As Integer
j = 1
For Each Ws In Application.Worksheets
If Ws.Name = Sheets("Info").Range("A" & j) Then
j = j + 1
Else
Application.DisplayAlerts = False
If Ws.Name <> "Info" And Not Ws.Name Like "Data" And Not Ws.Name Like "#*" Then
Ws.Delete
j = j + 1
End If
Application.DisplayAlerts = True
End If
Next Ws
With Sheets("Info")
LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
For i = LastLig To 1 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
Sheets("Info").Activate
Application.ScreenUpdating = True
End Sub
Il y a plein de codes différents dans le fichier car j'ai exploré pas mal de piste pour tester. Actuellement je suis entrain de voir avec ParamArray ou les noms de plages mais je bloque.
Merci à tous,
AntoineM