fichier de suivi - remplissage d'une date lors d'un changement d'état

Eusebio

XLDnaute Nouveau
Bonjour,
Je me suis réalisé un fichier de suivi de tâches à faire (cf pièce jointe), dans lequel, pour chaque ligne, j'aimerais renseigner automatiquement la date de fin au moment où je choisis l'état "terminée".

ce qui ne marche pas: dans la colonne date, si je mets la formule suivante : =SI(C3="terminée";AUJOURDHUI();"")
la date sera bien renseignée au changement d'état, mais lorsque j'ouvrirai le document 2 jours plus tard, la date sera recalculée et sa valeur vaudra le "aujourd'hui" de 2 jours plus tard, et pas une date figée.

Comment résoudre ceci ?
Merci
 

Pièces jointes

  • TODO-template.xlsx
    13.7 KB · Affichages: 36

Jack2

XLDnaute Occasionnel
Re : fichier de suivi - remplissage d'une date lors d'un changement d'état

Bonjour Eusebio, Bonjour le forum

Une solution par VBA. Pour mettre le code : clic doit sur l'onglet, puis visualiser le code dans le menu contextuel et coller le code ci-après :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$3" Then Exit Sub
If Target.Value = "terminée" Then
    Target.Offset(O, 1).Copy
    Target.Offset(0, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
    Application.CutCopyMode = False
End If
End Sub
Cette solution présente l’inconvénient de supprimer ta formule test (si pour garder la valeur de la date. Dans ce cas, on peut inscrire la date terminée en dessous:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$3" Then Exit Sub
If Target.Value = "terminée" Then
    Target.Offset(O, 1).Copy
    Target.Offset(1, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
    Application.CutCopyMode = False
End If
End Sub
A+ Jack2
 

Eusebio

XLDnaute Nouveau
Re : fichier de suivi - remplissage d'une date lors d'un changement d'état

Merci ! Ce bout de code m'a permis d'avancer ; j'ai ajouté quelques modifs au script proposé pour
- prendre en compte un changement dans n'importe quelle cellule de la colonne C
- renseigner la date correctement
- remettre à 0 la valeur si l'état est rebasculé à différent de "abandonnée" ou "terminée"
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 3 Then Exit Sub
If Target.Value = "" Then Exit Sub
If Target.Value = Range("Q4").Value Or Target.Value = Range("Q5") Then
    Target.Offset(O, 1).Value = Date
ElseIf Target.Value = Range("Q2").Value Or Target.Value = Range("Q3") Then
    Target.Offset(O, 1).Value = ""
End If
End Sub
 
Dernière édition:

Statistiques des forums

Discussions
311 713
Messages
2 081 808
Membres
101 819
dernier inscrit
lukumubarth