Option Explicit

Private Sub CommandButton4_Click() ' supprimer toutes les colonnes sauf la dernière
Dim i As Integer

With Feuil2.ListObjects("Tableau3")
    For i = .ListColumns.Count - 1 To 3 Step -1
        .ListColumns(i).Delete
        Feuil2.Cells(.HeaderRowRange.Row - 1, i).ClearContents
        Feuil2.Cells(.HeaderRowRange.Row - 2, i).ClearContents
        Next i
    If .ListRows.Count > 0 Then .DataBodyRange.Delete
End With

' Vider listview
ListView1.ListItems.Clear
End Sub


Private Sub TextBox1_Change()

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
' Empêche l'utilisateur de fermer avec le bouton Fermer de la barre de titre.
If CloseMode <> 1 Then Cancel = 1
Me.Caption = "Ce bouton ne fonctionne pas ! Veuillez cliquer sur le bouton FERMER !"
End Sub

Private Sub CommandButton3_Click() 'supprimer colonne
Dim col As Integer

If ComboBox2.ListIndex = -1 Then Exit Sub

col = ComboBox2.ListIndex + 3

With Feuil2
    .Cells(.ListObjects("Tableau3").HeaderRowRange.Row - 1, col).Delete Shift:=xlToLeft
    .Cells(.ListObjects("Tableau3").HeaderRowRange.Row - 2, col).Delete Shift:=xlToLeft
    .ListObjects("Tableau3").ListColumns(col).Delete
End With

Call SommeSiCouleur 'recalcul totaux si couleur
Call calcul_montant_net 'recalcul montant feuil1

Call alimenter_combobox2 'mise a jour combobox2

ListView1.ListItems.Clear 'vider listview
Call alimenter_listview 'completer liste

End Sub

Private Sub commandbutton2_click()
' fermer UserForm2
Unload Me
End Sub

Private Sub CommandButton1_Click() 'ajout donnees en feuil2
Dim col As Integer, i As Integer, lig As Integer

If UCase(TextBox1.Value) = "JJ/MM/AA" Or ComboBox1.Value = vbNullString Then
    MsgBox "Veuillez compléter la date et/ou la rubrique Quart", vbCritical, "Rubrique incomplète"
    Exit Sub
End If

With Feuil2
    'vérifier si la date existe
    For i = 3 To .ListObjects("Tableau3").ListColumns.Count
        If CDate(TextBox1.Value) & "/" & Left(ComboBox1.Value, 2) = Mid(.Cells(4, i), 1, Len(.Cells(4, i)) - 3) & "/" & Left(.Cells(3, i), 2) Then MsgBox "Cette date existe déjà", vbInformation, "Erreur Date": Exit Sub
    Next i

    'ajout nouvelle colonne dans tableau 3
    With .ListObjects("Tableau3")
        .ListColumns.Add Position:=.ListColumns.Count
        col = .ListColumns.Count - 1
        .ListColumns(col).DataBodyRange.Interior.Color = xlNone
        .HeaderRowRange.Item(1, col) = Format(TextBox1.Text, "dd/mm/yyyy") & "/" & Left(ComboBox1.Value, 2) 'ajout titre de colonne

        Feuil2.Cells(.HeaderRowRange.Row - 1, col) = ComboBox1.Value 'date
        Feuil2.Cells(.HeaderRowRange.Row - 2, col).Formula = "=Indemnite" 'montant de base indemnité
        Feuil2.Cells(.HeaderRowRange.Row + 1, col).FormulaR1C1 = "=calcul_cout_greve(R2C,RC2)" 'formule de calul cout
        
    End With
End With

'colorier chaque cellule dans tableau si item coché dans listview
With ListView1
    For i = 1 To .ListItems.Count
        If .ListItems(i).Checked = True Then
            Feuil2.ListObjects("Tableau3").DataBodyRange(.ListItems(i).Index, col).Interior.ColorIndex = 44 'couleur orange
        End If
    Next i
End With

Call SommeSiCouleur 'totaux si couleur
Call calcul_montant_net 'recalcul montant feuil1

Call alimenter_combobox2 'mise a jour combobox2

'reinitialiser usf
TextBox1.Text = Format("JJ/MM/AA")
ComboBox1 = vbNullString

ListView1.ListItems.Clear 'vider listview
Call alimenter_listview 'completer liste

End Sub

Private Sub UserForm_Initialize()

On Error Resume Next
With Feuil3
    With .ListObjects("Tableau6")
        If .ListRows.Count > 1 Then
            ComboBox1.List = .DataBodyRange.Value
        Else: ComboBox1.AddItem .DataBodyRange(1, 1).Value
        End If
    End With
End With
On Error GoTo 0
TextBox1.Text = Format("JJ/MM/AA")

'chargement listview
With ListView1
    .Gridlines = True 'Affiche les lignes
    .View = lvwReport 'Style d'affichage
    .FullRowSelect = True 'Selectionner une ligne possible avec colorisation
    .LabelEdit = 1
    .CheckBoxes = True 'cases à cocher
    'Création d'entête personnalisée
    .ColumnHeaders.Add Text:="Nom", Width:=150
    .ColumnHeaders.Add Text:="TH", Width:=40
End With

Call alimenter_listview 'completer liste
Call alimenter_combobox2 'completer combobox2

End Sub

Private Sub alimenter_combobox2() 'remplir combobox2 pour bouton suppression
Dim i As Integer

ComboBox2.Clear
With Feuil2.ListObjects("Tableau3")
    If .ListColumns.Count = 2 Then Exit Sub
    For i = 3 To .ListColumns.Count - 1
        ComboBox2.AddItem .HeaderRowRange(1, i).Value
    Next i
End With
End Sub

Private Sub alimenter_listview() 'ajout donnee dans listview
Dim li As ListItem
Dim i As Byte, j As Byte

With Feuil2.ListObjects("Tableau3")
    For i = 1 To .ListRows.Count
        Set li = ListView1.ListItems.Add(, , .DataBodyRange(i, 1).Value)
        li.ListSubItems.Add , , Format(.DataBodyRange(i, 2).Value, "#.00")
    Next i
End With

'eviter selection de la ligne 1 de la liste
With ListView1
    .ListItems(1).Selected = False
    Set .SelectedItem = Nothing
End With
End Sub
