Private Sub CommandButton1_Click()
Dim idxLigne As Variant
Dim Date1 As Date, Date2 As Date
Dim Activité As String
Dim CA As Range, Lg As Integer
'
' Commencer par contrôler les champs obligatoires et les types de données
'
If CbXActivité.ListIndex = -1 Then
MsgBox "Les champs avec une * sont obligatoire", vbExclamation, "Enregistrement interrompu"
Exit Sub
Else
Activité = CbXActivité.Value
End If
If Not IsDate(TxBDate) Then
MsgBox "Date non valide", vbExclamation, "Enregistrement interrompu"
'
Exit Sub
Else
Date1 = CDate(TxBDate)
End If
If IsDate(TxBDateF) Then Date2 = CDate(TxBDateF)
If MsgBox("Voulez-vous ajouter cette activité à votre planning ?", vbYesNo + vbQuestion) = vbYes Then
With Sheets("Données")
' la date 1 à déjà été contrôlée en début de macro
.Range("P1") = Date1
' contrôle de la date 2
If Date2 > 0 Then .Range("P2") = Date2 Else .Range("P2") = Empty
'
' Utilisation de l'équivalent VBA de la fonction de feuille de calcul EQUIV pour trouver la date
' Comme c'est une fonction de feuille de calcul, elle peut toujours renvoyer une valeur d'erreur
' c'est pourquoi le type de la variable doit être Variant et qu'elle doit être testée par IsError
'
idxLigne = Application.Match(CLng(Date1), .Range("A1:A" & .Cells(Rows.Count, 1).End(xlUp).Row), 0)
If Not IsError(idxLigne) Then
'
' Contrôler la présence d'une activité à cette date. Avertir l'utilisateur
If .Cells(idxLigne, 2) <> "" Then
MsgBox ("Le " & Me.TxBDate & ", vous avez déjà '" & .Cells(idxLigne, 2) & "' d'inscrit à votre planning")
Else
.Cells(idxLigne, 2) = Activité
ThisWorkbook.Save ' Est-ce bien nécessaire.
Unload Me
End If
Else
' date non trouvée en colonne A
' que faire si une date a disparu
End If
End With
End If
End Sub