Option Explicit 'oblige à déclarer toutes le variables
Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
Me.TextBox1.Value = Format(Date, "dd/mm/yyyy") 'affiche la date du jour dans la TextBox1
With Sheets("RESSOURCES") 'prend en compte l'onglet "RESSOURCES"
Me.ComboBox1.List = .Range(.Cells(2, 1), .Cells(Application.Rows.Count, 1).End(xlUp)).Value 'alimentation dynamique de la ComboBox1
Me.ComboBox3.List = .Range(.Cells(2, 2), .Cells(Application.Rows.Count, 2).End(xlUp)).Value 'alimentation dynamique de la ComboBox3
End With 'fin de la prise en compte de l'onglet "RESSOURCES"
With Sheets("AFFAIRES") 'prend en compte l'onglet "AFFAIRES"
'alimentation dynamique de la ComboBox2
Me.ComboBox2.List = Application.WorksheetFunction.Transpose(.Range(.Cells(1, 1), .Cells(1, Application.Columns.Count).End(xlToLeft)))
End With 'fin de la prise en compte de l'onglet "AFFAIRES"
End Sub
Private Sub CommandButton1_Click() 'bouton "Date"
UserForm1.Hide 'masque l'UserForm "Formulaire"
UserForm2.Show 'affiche l'UserFrom "Calendier"
End Sub
Private Sub CommandButton2_Click() 'bouton "Valider"
Dim i As Byte 'déclare la variable i (Incrément)
Dim ca As Byte 'déclare la variable ca (Colonne Affaires)
'Dim li As Integer 'déclare la varaible li (Ligne) - li est déclarée publique dans le module 1 (Voir ThisWorkbook/SheatActivate)
Dim col As Byte 'déclare la variable col (COLonne)
Dim tc As Date 'déclare la variable tc (Temps de la Cellule)
Dim tf As Date 'déclare la variable tc (Temps du Formulaire)
'test sur le renseignement du formulaire
If Me.TextBox1.Value = "" Then 'condition : si la date n'est pas renseignée
MsgBox "Vous devez indiquer la date ! " 'message
Me.TextBox1.SetFocus 'aplce le curseur dans la TextBox1
Exit Sub 'sort de la procédure
End If 'fin de la condition
For i = 1 To 3 'boucle sur les 3 ComboBoxes
If Me.Controls("ComboBox" & i).Value = "" Then 'condition : si la ComboBox n'est pas renseignée
MsgBox "Vous devez renseigner le champ '" & Split(Me.Controls("Label" & i + 1).Caption, " ", -1)(0) & "' !" 'message
Me.Controls("ComboBox" & i).SetFocus 'place le curseur dans la Combobox
Exit Sub 'sort de la procédure
End If 'fin de la condition
Next i 'prochaine ComboBox de la boucle
ca = Me.ComboBox2.ListIndex + 1 'définit la colonne des affaires
With Sheets("AFFAIRES") 'prend en compte l'onglet "AFFAIRES"
'place le temps dans la première ligne vide de la colonne de l'affaire correspondante
.Cells(Application.Rows.Count, ca).End(xlUp).Offset(1, 0).Value = Me.ComboBox3.Value
End With 'fin de la prise en compte de l'onglet "AFFAIRES"
col = Me.ComboBox1.ListIndex + 2
With Sheets("QUI_QUOI") 'prend en compte l'onglet "QUI_QUOI"
li = .Columns(1).Find(CDate(Me.TextBox1.Value), , xlFormulas, xlWhole).Row
'place l'affaire (concatène) à l'intersection de la date et du nom
.Cells(li, col) = IIf(.Cells(li, col).Value = "", Me.ComboBox2.Value, .Cells(li, col).Value & "/" & Me.ComboBox2.Value)
End With 'fin de la prise en compte de l'onglet "QUI-QUOI"
With Sheets("HORAIRES") 'prend en compte l'onglet "HORAIRES"
If .Cells(li, col).Value = "" Then 'condition : si la cellule est vide
.Cells(li, col).Value = Me.ComboBox3.Value 'place le temps dans la cellule
Else 'sinon
tc = Format(CDate(.Cells(li, col).Value), "hh:mm") 'définit le temps de la cellule
tf = Format(CDate(Me.ComboBox3.Value), "hh:mm") 'définit le temps du formulaire
.Cells(li, col).Value = Format(tc + tf, "hh:mm") 'place la somme des temps dans la cellule
End If 'fin de la condition
End With 'fin de la prise en compte de l'onglet "HORAIRES"
Unload Me 'vide et ferme l'UserForm "Formulaire
End Sub
Private Sub CommandButton3_Click()
End 'arrête tous les code
End Sub