Avoir "Maintenant" en valeur fixe

Bonjour à tous.

Je cherche à avoir la possibilité, sur mon classeur, de savoir si une cellule a été modifiée il y a plus d'une semaine ou non.

Pour cela, chaque cellule a, à sa droite, une autre cellule qui est censée être noire si modifiée il y a plus d'une semaine et blanche sinon.

Du coup, j'ai conçu la formule suivante :

=IF(ISBLANK(F4)," ",$A$19)

A19 étant une cellule avec la formule suivante :

=TODAY()

Donc, l'idée, c'est que quand je modifie F4, la cellule de droite affiche la date d'aujourd'hui, et ensuite, par un conditionnement, la cellule s'affiche en noir ou blanc.

Cependant, le problème, c'est que la cellule de droite se met à jour en même temps que la cellule A19 quand aujourd'hui devient demain.

Du coup, rien ne passe au noir puisque toutes les cellules modifiées affichent à leur droite la date d'aujourd'hui.

J'ai découvert récemment la fonction de la touche F9 pour faire en sorte qu'une partie de la formule affiche la valeur calculée plutôt que la formule, empêchant la mise à jour en fonction de nouvelles valeurs.

Mais comment automatiser cela ?

Comment faire une formule à usage unique ?

Bonjour,

Si je suis bien, la cellule qui doit contenir la date quand tu modifies F4 est G4.

Une proposition :

  • Ouvre ton classeur sur la feuille en question (jusque là, tout va bien) ;
  • Fais ALT + F11 pour ouvrir l'éditeur VBA ;
  • Colle le code suivant dans la fenêtre principale :
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Range("F:F"), Target) Is Nothing Then
        Target.Offset(0, 1) = Date
    End If
End Sub

- Enregistre ton classeur au format "*.xlsm"

Ça va modifier la cellule G de la même ligne si tu changes la valeur de n'importe quelle cellule en F.

Si tu veux limiter à une zone précise, remplace Range("F:F") par Range("F4:F100") par exemple.

Bonjour,

Merci de votre réponse, cependant, le soucis, c'est que j'ai déjà une macro dans VBA, et je n'arrive pas à faire fonctionner l'une ou l'autre si j'entre les deux...

Voici la macro en question :

Sub Commentaire_Date()
Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
    If Mid(.Address(1, 1, xlR1C1), 2, InStr(.Address(1, 1, xlR1C1), "C") - 2) > 35 Then Exit Sub
    If Right(.Address(1, 1, xlR1C1), Len(.Address(1, 1, xlR1C1)) - InStr(.Address(1, 1, xlR1C1), "C")) < 6 Then Exit Sub
    If Right(.Address(1, 1, xlR1C1), Len(.Address(1, 1, xlR1C1)) - InStr(.Address(1, 1, xlR1C1), "C")) > 163 Then Exit Sub
    If IsEmpty(Target) Then Exit Sub
    Dim strNewText$, strCommentOld$, strCommentNew$
    strNewText = .Text
    If Not .Comment Is Nothing Then
    strCommentOld = .Comment.Text & Chr(10) & Chr(10)
    Else
    strCommentOld = ""
    End If
    On Error Resume Next
    .Comment.Delete
    Err.Clear
    .AddComment
    .Comment.Visible = False
    .Comment.Text Text:=strCommentOld & _
    Format(VBA.Now, "DD/MM/YYYY à hh:MM ") & Chr(10) & strNewText
    .Comment.Shape.TextFrame.AutoSize = True
    Call Cellule_Date
    End With
End Sub

Comment faire pour avoir les deux macros qui fonctionnent ?

Bonjour,

Essaie ainsi :

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim cmt As Comment, strText As String

    Select Case True
        Case IsEmpty(Target)
            Exit Sub
        Case Target.Row > 35
            Exit Sub
        Case Target.Column < 6 Or Target.Column > 163
            Exit Sub
        Case Else
            On Error Resume Next
            Set cmt = Target.Comment
            On Error GoTo 0
    End Select

    strText = Format(VBA.Now, "DD/MM/YYYY à hh:MM ") & Chr(10) & Target.Value

    If cmt Is Nothing Then
        Set cmt = Target.AddComment
        With cmt
            .Visible = False
            .Text Text:=strText
            .Shape.TextFrame.AutoSize = True
        End With
    Else
        cmt.Text Text:=cmt.Text & Chr(10) & Chr(10) & strText
    End If

    If Target.Column = 6 Then
        Application.EnableEvents = False
        Target.Offset(, 1).Value = Date
        Application.EnableEvents = True
    End If

    Set cmt = Nothing

End Sub

Bonjour,

Cela fonctionne très bien pour afficher la date dans la cellule de droite, cependant, je ne dispose plus de la macro qu'il y avait précédemment qui me permettait d'avoir un commentaire sur les cellules modifiées avec l'affichage de la modification ainsi que de la date de modification...

Re,

Précise ta demande.

Cdlt.

8ciol-v1.xlsm (21.26 Ko)

Désolé si je n'ai pas été assez clair. Mais maintenant, tout fonctionne, merci ^^

Re,

Je n'ai rien changé à la procédure.

Merci de clore le sujet.

Cdlt.

Zut, pas la première fois que je ne pense pas à placer EnableEvents sur False... Pas de conséquence ici, mais le truc légèrement indispensable pour éviter les boucles infinies.

Rechercher des sujets similaires à "maintenant valeur fixe"