Option Explicit

' ***********************************************************************
' *****                                                             *****
' *****        CODE PierreP56 : http://tatiak.canalblog.com/        *****
' *****                                                             *****
' ***********************************************************************

Dim Mdf As Boolean


Private Sub Worksheet_Activate()
    Init_Cbbx
    Graphe_Planning
End Sub


Private Sub Worksheet_Deactivate()
    Me.Range("BR7:BW37").ClearContents
    Raz Me
End Sub


Private Sub ComboBox1_Change()  ' mois
    Me.Range("B7").Value = DateSerial(Me.ComboBox2.Value, Me.ComboBox1.ListIndex + 1, 1)
    Hlg
End Sub


Private Sub ComboBox2_Change()  ' Année
    Me.Range("B7").Value = DateSerial(Me.ComboBox2.Value, Me.ComboBox1.ListIndex + 1, 1)
    Sheets("Cfg").Range("B1").Value = Me.ComboBox2.Value
    Hlg
End Sub


Private Sub ComboBox3_Change()  ' Motif
    Graphe_Planning
End Sub


Private Sub CommandButton1_Click()  ' Précédent
    Modif_Dt False
End Sub


Private Sub CommandButton2_Click()  ' Suivant
    Modif_Dt True
End Sub


Private Sub Modif_Dt(Plus As Boolean)
Dim Mo As Integer, an As Integer

    Mdf = True
    Mo = Me.ComboBox1.ListIndex + 1
    an = Me.ComboBox2.Value
    Mo = Mo + IIf(Plus, 1, -1)
    an = an + IIf(Mo = 0, -1, IIf(Mo = 13, 1, 0))
    Mo = IIf(Mo = 0, 13 - 1, IIf(Mo = 13, 1, Mo))
    Me.ComboBox1.ListIndex = Mo - 1
    Me.ComboBox2.Value = an
    Mdf = False
    Hlg
End Sub


Private Sub Hlg()
Dim Hrow As Integer, i As Integer

    If Mdf Then Exit Sub
    Application.ScreenUpdating = False
    Hrow = Me.Rows(7).RowHeight
    For i = 35 To 37
        If Month(Me.Range("B7").Value) = Month(Me.Range("B" & i).Value) Then
            Me.Rows(i).RowHeight = Hrow
        Else
            Me.Rows(i).RowHeight = 0
        End If
    Next i
    Application.ScreenUpdating = True
    Graphe_Planning
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim idx As Integer, lg As Long, Tg(1 To 1, 1 To 13) As Variant

    Application.ScreenUpdating = False
    If Not Intersect(Target, Range("D7:BP37")) Is Nothing Then
        If Target.Rows.Count = 1 And Target.Columns.Count > 1 Then
            idx = IIf(Me.ComboBox3.ListIndex = 0, 1, Me.ComboBox3.ListIndex)
            With Sheets("Listing")
                lg = .Cells(Rows.Count, "A").End(xlUp).Row + 1
                Tg(1, 1) = Application.Max(.Range("A:A")) + 1
                Tg(1, 2) = Me.Cells(Target.Row, "B").Value
                Tg(1, 3) = Me.Cells(6, Target.Column).Value
                Tg(1, 4) = Me.Cells(6, Target.Column + Target.Columns.Count - 1).Value
                Tg(1, 5) = Me.ComboBox3.List(idx)
                Tg(1, 13) = "_A_"
                .Range("A" & lg).Resize(1, 13) = Tg
            End With
            Ajout_Histo Tg, Target.Row, idx
            Me.Range("A6").Select
        End If
    End If
    Application.ScreenUpdating = True
End Sub
