J'essaie de laisser l'utilisateur saisir une date dans une cellule. En utilisant la date d'entrée et la date d'aujourd'hui, je calculerais combien de jours se sont écoulés depuis la date d'entrée de l'utilisateur.

Exemple : L'utilisateur saisit « 15/02/2019 » dans la cellule (C4) - Le lendemain, il affiche « 1 jour/s » et ainsi de suite.

J'ai cherché et essayé beaucoup de choses mais j'ai échoué, Je ne suis en aucun cas un expert d'Excel ou de VBA, donc je ne suis même pas sûr que cela soit possible.

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next   
    If Not Intersect(Target, Range("L:L")) Is Nothing Then
        With ActiveWorkbook.Worksheets("Ended")
            Application.EnableEvents = False
            Target = "Today()" - Target
            Application.EnableEvents = True
        End With
    End If

Ce problème peut être résolu par cette formule, mais je ne peux pas l'appliquer en utilisant VBA à la date de saisie de l'utilisateur.

=TODAY()-DATEVALUE("15/2/2020")
1
Karim_K 15 févr. 2020 à 21:52

1 réponse

Meilleure réponse

Je n'ai pas encore assez de réputation pour commenter, alors je vais essayer de répondre en fonction de ce que vous avez dit.

Vous étiez sur la piste d'écriture, il vous suffit de l'obtenir pour saisir une formule à l'aide de Target.Formula.

J'ai souvent eu du mal à utiliser des dates dans des formules Excel. Le moyen le plus simple est d'utiliser la valeur numérique de la date. Vous pouvez le faire en convertissant la date en Long en utilisant CLng().

Ligne complète de lectures de morue

Target.Formula = "=Today() - " & CLng(Target)

Comme d'autres l'ont également mentionné, vous allez réécrire un nombre dans une cellule qui aura un format de date une fois que l'utilisateur aura saisi la date. Par exemple, si j'entre 01/02/2020 (jj/mm/aaaa est mon format de date local) dans une cellule, la cible sera égale à 16/02/2020 - 01/02/2020 qui est 15 jours, cependant la cellule aura le 15/01/1900 (les dates informatiques commencent au 01/01/1900), sauf si vous changez le format de la cellule en un nombre. Vous pouvez le faire en utilisant

Target.NumberFormat = "0"
0
ACCtionMan 16 févr. 2020 à 12:40