Sub CopierVersMiseEnCommun()
Dim wsSource As Worksheet
Dim wsDest As Worksheet
Dim lastRow As Long
Dim i As Long
Dim destRow As Long
Dim missingData As Boolean
Dim PASSWORD As String
Dim valeurCol11 As Double
Dim valeurCol12 As Double
Dim reponse As VbMsgBoxResult
Set wsSource = ThisWorkbook.Sheets("Encodage")
Set wsDest = ThisWorkbook.Sheets("Mise en commun")
PASSWORD = "manu01"
wsDest.Unprotect PASSWORD:=PASSWORD
If wsSource.Range("B1").Value = "" Or wsSource.Range("D1").Value = "" Or wsSource.Range("F1").Value = "" _
Or wsSource.Range("B2").Value = "" Or wsSource.Range("D2").Value = "" Then
MsgBox "Veuillez remplir toutes les cellules en jaune, merci !", vbExclamation
Exit Sub
End If
missingData = False
For i = 5 To 20
If Trim(wsSource.Cells(i, 3).Value) <> "" And Trim(wsSource.Cells(i, 2).Value) = "" Then
missingData = True
Exit For
End If
Next i
If missingData Then
MsgBox "Veuillez remplir la durée, merci ! ", vbExclamation
Exit Sub
End If
lastRow = wsDest.Cells(wsDest.Rows.Count, 1).End(xlUp).Row
destRow = lastRow + 1
wsDest.Cells(destRow, 1).Value = wsSource.Range("J1").Value
wsDest.Cells(destRow, 2).Value = wsSource.Range("F1").Value
wsDest.Cells(destRow, 3).Value = wsSource.Range("D1").Value
wsDest.Cells(destRow, 4).Value = wsSource.Range("B1").Value
wsDest.Cells(destRow, 5).Value = wsSource.Range("D2").Value
wsDest.Cells(destRow, 6).Value = wsSource.Range("D26").Value
wsDest.Cells(destRow, 10).Value = wsSource.Range("A22").Value
wsDest.Cells(destRow, 11).Value = wsSource.Range("F2").Value
wsDest.Cells(destRow, 12).Value = wsSource.Range("B2").Value
wsDest.Cells(destRow, 13).Value = wsSource.Range("J4").Value
wsDest.Cells(destRow, 17).Value = wsSource.Range("D33").Value
wsDest.Cells(destRow, 8).Value = wsSource.Range("C33").Value
If IsNumeric(wsDest.Cells(destRow, 12).Value) And IsNumeric(wsDest.Cells(destRow, 11).Value) Then
valeurCol12 = wsDest.Cells(destRow, 12).Value
valeurCol11 = wsDest.Cells(destRow, 11).Value * 24
If valeurCol11 <> 0 Then
wsDest.Cells(destRow, 14).Value = valeurCol12 / valeurCol11
Else
wsDest.Cells(destRow, 14).Value = "Division par zéro"
End If
Else
wsDest.Cells(destRow, 14).Value = "Erreur de données"
End If
wsDest.Cells(destRow, 15).Value = Year(wsDest.Cells(destRow, 1).Value) & "-" & WorksheetFunction.IsoWeekNum(wsDest.Cells(destRow, 1).Value)
wsDest.Cells(destRow, 16).Value = Year(wsDest.Cells(destRow, 1).Value) & "-" & Month(wsDest.Cells(destRow, 1).Value)
For i = 5 To 20
If Trim(wsSource.Cells(i, 2).Value) <> "" Or Trim(wsSource.Cells(i, 3).Value) <> "" Then
destRow = wsDest.Cells(wsDest.Rows.Count, 7).End(xlUp).Row + 1
wsDest.Cells(destRow, 1).Value = wsSource.Range("J1").Value
wsDest.Cells(destRow, 2).Value = wsSource.Range("F1").Value
wsDest.Cells(destRow, 3).Value = wsSource.Range("D1").Value
wsDest.Cells(destRow, 4).Value = wsSource.Range("B1").Value
wsDest.Cells(destRow, 5).Value = wsSource.Range("D2").Value
wsDest.Cells(destRow, 6).Value = wsSource.Range("D26").Value
wsDest.Cells(destRow, 7).Value = wsSource.Cells(i, 1).Value
wsDest.Cells(destRow, 9).Value = wsSource.Cells(i, 2).Value
wsDest.Cells(destRow, 10).Value = wsSource.Range("A22").Value
wsDest.Cells(destRow, 11).Value = wsSource.Range("F2").Value
wsDest.Cells(destRow, 12).Value = wsSource.Range("B2").Value
wsDest.Cells(destRow, 13).Value = wsSource.Range("J4").Value
wsDest.Cells(destRow, 17).Value = wsSource.Range("D33").Value
wsDest.Cells(destRow, 8).Value = wsSource.Range("C33").Value
If IsNumeric(wsDest.Cells(destRow, 12).Value) And IsNumeric(wsDest.Cells(destRow, 11).Value) Then
valeurCol12 = wsDest.Cells(destRow, 12).Value
valeurCol11 = wsDest.Cells(destRow, 11).Value * 24
If valeurCol11 <> 0 Then
wsDest.Cells(destRow, 14).Value = valeurCol12 / valeurCol11
Else
wsDest.Cells(destRow, 14).Value = "Division par zéro"
End If
Else
wsDest.Cells(destRow, 14).Value = "Erreur de données"
End If
wsDest.Cells(destRow, 15).Value = Year(wsDest.Cells(destRow, 1).Value) & "-" & WorksheetFunction.IsoWeekNum(wsDest.Cells(destRow, 1).Value)
wsDest.Cells(destRow, 16).Value = Year(wsDest.Cells(destRow, 1).Value) & "-" & Month(wsDest.Cells(destRow, 1).Value)
End If
Next i
Application.CutCopyMode = False
With wsSource
.PageSetup.PrintArea = "A1:J27"
.PageSetup.Orientation = xlLandscape
.PageSetup.Zoom = False
.PageSetup.FitToPagesWide = 1
.PageSetup.FitToPagesTall = 1
.PrintOut
End With
reponse = MsgBox("Avez-vous terminé ?", vbQuestion + vbYesNo, "Confirmation")
If reponse = vbYes Then
wsSource.Range("B1, B2, D1, F1, D2").ClearContents
wsSource.Range("B5:H20").ClearContents
wsSource.Range("A22").MergeArea.ClearContents
MsgBox "Ok", vbInformation, "Encodage terminé et imprimé, merci !"
wsSource.Protect PASSWORD:=PASSWORD
wsDest.Protect PASSWORD:=PASSWORD
ThisWorkbook.Save
ThisWorkbook.Close
Else
wsSource.Range("B2, F1, D2").ClearContents
wsSource.Range("B5:H20").ClearContents
wsSource.Range("A22").MergeArea.ClearContents
MsgBox "Ok.", vbInformation, "Encodage terminé et imprimé, merci !"
End If
wsSource.Protect PASSWORD:=PASSWORD
wsDest.Protect PASSWORD:=PASSWORD
ThisWorkbook.Save
End Sub