Option Explicit
Sub Extraire()
Application.ScreenUpdating = False
Dim Ws1 As Worksheet, Ws2 As Worksheet, Derlig&, NbLig&, Titre
Dim FiltreDateDebut As String, FiltreDateFin As String
On Error Resume Next
Set Ws1 = Worksheets("Setlist")
On Error GoTo 0
If Ws1 Is Nothing Then
Set Ws1 = ThisWorkbook.Worksheets.Add
Ws1.Name = "Setlist"
End If
Set Ws2 = Worksheets("Liste")
Ws1.Columns("A:E").Clear
Ws1.Columns("E:E").NumberFormat = "mm:ss"
Titre = Array("N°", "TITRE", "CASE", "AMBIANCE", "DUREE")
Ws1.Range("A1:E1") = Titre
Range("T_Liste_Chansons[[#Headers],[Case]]").AutoFilter
Range("T_Liste_Chansons").AutoFilter Field:=3, Criteria1:="X"
Derlig = Ws1.Range("A" & Rows.Count).End(xlUp).Row + 1
If Range("T_Liste_Chansons").ListObject.DataBodyRange Is Nothing Then
MsgBox "Pas de chanson dans le tableau", vbInformation, "Problème"
Exit Sub
End If
If Range("T_Liste_Chansons").ListObject.ListColumns(1).Range.SpecialCells(xlCellTypeVisible).Count <= 1 Then
MsgBox "Aucune ligne visible dans le tableau.", vbCritical, "Problème !"
Range("T_Liste_Chansons[[#Headers],[Case]]").AutoFilter
Exit Sub
Else
NbLig = Range("T_Liste_Chansons").ListObject.ListColumns(1).DataBodyRange.SpecialCells(xlCellTypeVisible).Count
End If
Ws2.ListObjects("T_Liste_Chansons").DataBodyRange.SpecialCells(xlCellTypeVisible).Copy
Ws1.Range("A" & Derlig).PasteSpecial Paste:=xlPasteValues
Ws1.Columns("B:F").AutoFit
Range("T_Liste_Chansons[[#Headers],[Case]]").AutoFilter
If NbLig > 1 Then
MsgBox NbLig & " lignes ont été copiées ... ", vbInformation, "Copie effectuée !"
Else
MsgBox NbLig & " ligne a été copiée ... ", vbInformation, "Copie effectuée !"
End If
Derlig = Ws1.Range("A" & Rows.Count).End(xlUp).Row
Ws1.[A2] = 1: Ws1.Range("A2:A" & Derlig).DataSeries
Ws1.Columns("C:C").Delete Shift:=xlToLeft
Ws1.Range("A:F").Borders.LineStyle = xlNone
Ws1.Range("A1").CurrentRegion.Borders.LineStyle = xlContinuous
End Sub
Sub Decocher()
Range("T_Liste_Chansons[Case]").ClearContents
End Sub