Bonjour à vous,
Je dois réaliser pour le boulot la macro suivante : un gars doit remplir un tableau Excel avec les références du matériel et ses dates d'arrivée et de futur départ à la casse, et ce chaque mois. Vu que ces compétences sur cet outil sont douteuses, on doit faire en sorte de lui faciliter le boulot.
Chaque matos possède une date d'arrivée sur site mais pas forcément de date de départ (il y a donc parfois en fin de tableau sur la même colonne "Date départ" des cases vides), et le but de la macro est qu'à chaque modification d'une case du Range correspondant aux cases vides on doit vérifier que la date de départ entrée par le gars est inférieure à la date actuelle, il ne doit pas avoir d'antidatage. Ce Range étant variable chaque mois, on doit ajuster ses dimensions.
J'ai réussi cette dernière partie, mais pas la fonction d'antidatage qui me résiste depuis pas mal de jours.
Voici ce que j'ai fait pour l'instant mais qui ne marche visiblement pas :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Dim LastCell_B As Integer
Dim LastCell_F As Integer
Dim DateCell As Date
Dim DateNow As Date
Dim cpt As Integer
DateNow = Format(Date, "dd/mm/yyyy")
LastCell_B = Range("B100").End(xlUp).Row
LastCell_F = Range("F100").End(xlUp).Offset(1, 0).Row
'C'est à partir d'ici que tout se complique
Set KeyCells = Range(Cells(LastCell_F, 6), Cells(LastCell_B, 6))
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
DateCell = Format(Target.Address, "dd/mm/yyyy")
If DateCell < DateNow Then
MsgBox ("Attention la date entrée est inférieure à la date d'aujourd'hui")
Target.Address.ClearContents
End If
End If
End Sub
J'implore votre aide
Mathias