Private Sub CommandButton1_Click()
Dim L As Integer
Dim MAK As Double
Dim OM As Worksheet 'déclare la variable OM (Onglet Missions)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim DDL As Date 'déclare la variable DDL (Date Début Ligne)
Dim DFL As Date 'déclare la variable DFL (Date Fin Ligne)
Dim DDU As Date 'déclare la variable DDU (Date Début UserForm)
Dim DFU As Date 'déclare la variable DFU (Date Fin UserForm)
Dim JL As Date 'déclare la variable JL (Jour Ligne)
Dim JU As Date 'déclare la variable JU (Jour UserForm)
Dim TEST As Boolean 'déclare la variable TEST
Set OM = Worksheets("MISSIONS") 'définit l'onglet OM
TV = OM.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
DDU = DateSerial(Year(tbStDate), Month(tbStDate), Day(tbStDate)) 'définit la date de début de l'UserForm DDU
DFU = DateSerial(Year(tbEndDate), Month(tbEndDate), Day(tbEndDate)) 'définit la date de fin de l'UserForm DFU
For I = 3 To UBound(TV, 1) 'boucle 1 : sur toutes les lignes I du tableau des valeurs TV (en partant de la troisième)
If TV(I, 1) = "" Then GoTo fin 'si la donnée ligne I colonne 1 de TV est vide, va à l'étiquette "fin"
DDL = DateSerial(Year(TV(I, 18)), Month(TV(I, 18)), Day(TV(I, 18))) 'définit la date de début de la ligne DDL
DFL = DateSerial(Year(TV(I, 19)), Month(TV(I, 19)), Day(TV(I, 19))) 'définit la date de fin de la ligne DFF
If CStr(TV(I, 4)) = Me.TextBox1.Value Then 'condition 1 : si les matricules de la ligne et de l'UserForm sont identiques
For JL = DDL To DFL 'boucle 2 : sur tous les les jours JL de la période de la ligne
For JU = DDU To DFU 'boucle 3 : sur tous les les jours JU de la période de l'Userform
If JL = JU Then TEST = True: GoTo suite 'si un des jours se chevauche, définit la variable TEST, va a l'étiquette "suite"
Next JU 'prochain jour de la boucle 3
Next JL 'prochain jour de la boucle 2
suite: 'étiquette
If TEST = True Then 'condition 2 : si TEST est [Vrai]
MsgBox TV(I, 6) & " " & TV(I, 5) & " est déjà en mission durant cette période !" 'message
OM.Rows(I).Select 'sélectionne la ligne où la mission se chevauchhe
Exit Sub 'sort de la procédure
End If 'fin de la condition 2
End If 'fin de la condition 1
Next I 'prochaine ligne de la boucle
fin: 'étiquette
If Me.PRIME.Value = "" Then
MsgBox "VOUS DEVEZ SAISIR UN MONTANT DE PRIME !"
Me.PRIME.SetFocus
Exit Sub
End If
If MsgBox("Confirmez-vous les données ?", vbYesNo, "Demande de confirmation de calcul") = vbYes Then
L = Sheets("MISSIONS").Range("A100000").End(xlUp).Row + 1
Range("A" & L).Value = Enseigne
Range("B" & L).Value = Val(CodeMag)
Range("C" & L).Value = NomMag
Range("D" & L).Value = Val(TextBox1)
Range("E" & L).Value = Nom
Range("F" & L).Value = Prénom
Range("G" & L).Value = Poste
Range("H" & L).Value = Section
Range("I" & L).Value = tbStDate1
Range("J" & L).Value = Enseigne1
Range("K" & L).Value = NomMag1
Range("L" & L).Value = Val(TextBox9)
Range("M" & L).Value = ComboBox1
Range("N" & L).Value = CheckBox4
Range("O" & L).Value = CheckBox5
Range("P" & L).Value = CheckBox6
Range("R" & L).Value = tbStDate
Range("S" & L).Value = tbEndDate
Range("T" & L).Value = Val(PRIME)
End If
MAK = Val(Replace(TextBox1.Value, Format(0, ","), "."))
TextBox1 = MAK
End Sub