Salut
Ta macro pour effacer les feuilles permet seulement de suprimer les feuilles 10 à sheets.count, elle conserve les 9 premières.
Que faire si tu veux supprimer la seconde et la dernière uniquement.
je te propose ceci (inspirée d'un macro de J Walkenback et à améliorer
Dim Tablo As Variant
'IL RESTE À FAIRE LA GESTION DES ERREURS SI ON COCHE TOUT
Sub SupprimerFeuilles()
Tablo = Array("")
For i = 1 To Sheets.Count
ReDim Preserve Tablo(UBound(Tablo) + 1)
Tablo(UBound(Tablo)) = Sheets(i).Name
Next i
ufCaption = "Quel(s) onglet(s) voulez-vous supprimer?"
UB = UBound(Tablo)
Application.VBE.MainWindow.Visible = False
Set ufTemp = Nothing
Set ufTemp = ThisWorkbook.VBProject.VBComponents.Add(3)
With ufTemp
.properties("Caption") = ufCaption
.properties("Width") = 300
.properties("Height") = 30 * (UB + 2)
End With
For i = 1 To UB
Set newButton = ufTemp.Designer.Controls.Add("forms.CheckBox.1", "cb" & i)
With newButton
.Caption = Tablo(i): .Left = 20: .Top = 10 + 30 * (i - 1): .Width = 250
End With
Next
Set NewComButton = ufTemp.Designer.Controls _
.Add("forms.CommandButton.1", "BtnAnnuler") 'Création du bouton Annuler
With NewComButton
.Caption = "Annuler": .Left = 20: .Top = 30 * (UB - 1) + 50: .ForeColor = &HFF&
With .Font
.Bold = -1: .Name = "Arial": .Size = 12
End With
End With
With ufTemp.CodeModule 'Ajout de code au bouton Annuler
Line = .CountOfLines
.InsertLines Line + 1, "Sub BtnAnnuler_Click()"
.InsertLines Line + 2, "Unload Me"
.InsertLines Line + 8, "End Sub"
End With
Set NewComButton = ufTemp.Designer.Controls.Add("forms.CommandButton.1", "BtnOK") ''Création du bouton Valider
With NewComButton
.Caption = "Valider": .Left = 190: .Top = 30 * (UB - 1) + 50: .ForeColor = &H4000&
With .Font
.Bold = -1: .Name = "Arial": .Size = 12
End With
End With
With ufTemp.CodeModule
Line = .CountOfLines 'Ajout de code au bouton OK
.InsertLines Line + 1, "Sub BtnOK_Click()"
.InsertLines Line + 2, "Application.DisplayAlerts = False"
.InsertLines Line + 3, "For i = 1 To " & UB
.InsertLines Line + 4, " If Controls(""cb"" & i).Value Then Sheets(Controls(""cb"" & i).Caption).Delete"
.InsertLines Line + 5, "Next i"
.InsertLines Line + 6, "Application.DisplayAlerts = True"
.InsertLines Line + 7, "Unload me"
'.InsertLines Line + 8, "Application.VBE.CommandBars.FindControl(Id:=106).Execute" 'je ne sais pas si ça fonctionne sur PC
.InsertLines Line + 9, "End Sub"
End With
VBA.UserForms.Add(ufTemp.Name).Show
ThisWorkbook.VBProject.VBComponents.Remove ufTemp 'Efface le UF
Application.VBE.CommandBars.FindControl(Id:=106).Execute
Set ufTemp = Nothing
End Sub
@+
m.