Option Explicit
Const T As String = "QUESTIONNAIRE"
Private Sub UserForm_Initialize()
Dim Cel As Range, Plage As Range
Dim ColMonthStr As New Collection
Dim ColMonthNum As New Collection
Dim x As Integer
With Me
.TxbDate = Format(Date, "DD/MM/YYYY")
With .ComboBox1
.ColumnCount = 2
.ColumnWidths = "100;0"
.MatchRequired = True
End With
.Caption = T
End With
With Sheets("QUESTIONNAIRE")
Set Plage = .Range(.Range("I6"), .Range("I65536").End(xlUp))
End With
For Each Cel In Plage
On Error Resume Next
ColMonthStr.Add CStr(Format(CDate(Cel.Value), "MMMM")) & "-" & CStr(Format(CDate(Cel.Value), "YYYY")), _
CStr(Format(CDate(Cel.Value), "MMMM")) & "-" & CStr(Format(CDate(Cel.Value), "YYYY"))
ColMonthNum.Add CStr(DatePart("m", CDate(Cel.Value))) & CStr(DatePart("YYYY", CDate(Cel.Value))), _
CStr(DatePart("m", CDate(Cel.Value))) & CStr(DatePart("YYYY", CDate(Cel.Value)))
On Error GoTo 0
Next Cel
For x = 1 To ColMonthStr.Count
With Me.ComboBox1
.AddItem ColMonthStr(x)
.Column(1, x - 1) = ColMonthNum(x)
End With
Next
End Sub
Private Sub CmdMaj_Click()
Dim Cel As Range, Plage As Range
Dim Total As Integer
Dim Question As Byte
Dim Listing As String
If Me.ComboBox1.ListIndex = -1 Then Exit Sub 'Si pas de sélection on sort
With Sheets("QUESTIONNAIRE")
Set Plage = .Range(.Range("I6"), .Range("I65536").End(xlUp))
End With
For Each Cel In Plage
If CStr(DatePart("m", CDate(Cel.Value))) & CStr(DatePart("YYYY", CDate(Cel.Value))) = _
Me.ComboBox1.Column(1, Me.ComboBox1.ListIndex) Then
Total = Total + 1
Listing = Listing & "Date " & Format(Cel.Value, "DD/MM/YY") & vbTab & Cel.Offset(0, -1) & vbCrLf
End If
Next
Question = MsgBox(Total & " Formulaires à imprimer les organimes suivants :" & vbCrLf & Listing, vbQuestion + vbYesNo, T)
If Question = vbNo Then Exit Sub 'Si NON on sort...
For Each Cel In Plage
If CStr(DatePart("m", CDate(Cel.Value))) & CStr(DatePart("YYYY", CDate(Cel.Value))) = _
Me.ComboBox1.Column(1, Me.ComboBox1.ListIndex) Then
With Sheets("PR - Q12")
.Activate
.Range("E5") = Cel.Offset(0, -8)
.Range("E7") = Cel.Offset(0, -7) & " " & Cel.Offset(0, -6)
.Range("E9") = Cel.Offset(0, -5)
.Range("E11") = Cel.Offset(0, -2)
.Range("E13") = Cel.Offset(0, -1)
With .Range("E15")
.Value = Cel.Offset(0, -4)
.NumberFormat = "MM/YYYY"
End With
' .PrintOut '<<<<<<<<< A REMETTRE ACTIF pour avoir les Impressions
End With
End If
Next Cel
End Sub
Private Sub CmdExit_Click()
Unload USFSuivi
End Sub