Private Sub Workbook_Open() 'à l'ouverture du classeur
Dim I As Integer 'déclare la variable I
Worksheets(1).Activate 'activre le premier onglet du classeur
If Sheets.Count > 1 Then 'condition 1 : si le classeur possède plus d'un seul onglet
If MsgBox("Voulez-vous supprimer les onglets après l'onglet 1 ?", vbYesNo, "SUPPRESSION") = vbYes Then 'condition 2 : si "Oui" au message
Application.DisplayAlerts = False 'masque les messages d'Excel
For I = Sheets.Count To 2 Step -1 'boucle inversée du dernier onglet à l'onglet 2
Worksheets(I).Delete 'efface l'onglet
Next I 'prochain onglet de la boucle
Application.DisplayAlerts = True 'affiche les message d'Excel
End If 'fin de la condition 2
End If 'fin de la condition 1
End Sub
Sub Macro1()
Dim BDO As FileDialog 'déclare la variable BDO (Boite de Dialogue d'Ouverture)
Application.ScreenUpdating = False 'masque les raffraîchissements d'écran
Set BDO = Application.FileDialog(msoFileDialogFilePicker) 'définit la boîte de dialogue d'ouverture BDO
BDO.AllowMultiSelect = False 'n'autorise la sélection que d'un seul objet
'si un fichier est s''electionné ouvre le fichier sinon sort de la procédure
If BDO.Show Then Application.Workbooks.Open (BDO.SelectedItems(1)) Else Exit Sub
UserForm1.Show 'affiche l'UserForm1
End Sub
Private CS As Workbook 'déclare la variable CS (Classeur Source)
Private CD As Workbook 'déclare la variable CD (Classeur Destination)
Private O As Worksheet 'déclare la variable O (Onglet)
Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
Set CS = ActiveWorkbook 'définit le classeur source CS
Set CD = ThisWorkbook 'définit le classeur destination CD
For Each O In CS.Worksheets 'boucle sur tous les onglets O du classeur source CS
Me.ListBox1.AddItem O.Name 'addtione l'onglet à la ListBox1
Next O 'prochain onglet de la boucle
End Sub
Private Sub CommandButton1_Click() 'bouton "Valider"
For I = 0 To Me.ListBox1.ListCount - 1 'boucle sur tous les éléments de la Listbox1
If Me.ListBox1.Selected(I) = True Then 'condition : si l'élément est sélectionné
'copy l'onglet sélectionné du classeur source et le colle en dernière position dans le classeur destinatoion
CS.Worksheets(Me.ListBox1.List(I)).Copy after:=CD.Worksheets(CD.Sheets.Count)
End If 'fin de la condition
Next I 'prochaine élément de la boucle
CS.Close False 'ferme le classeur source sans enregistrer
Unload Me 'vide et ferme l'UserForm1
End Sub
Private Sub CommandButton2_Click() 'bouton Annuler
CS.Close False 'ferme le classeur source sans enregistrer
Unload Me 'vide et ferme l'UserForm1
End Sub