Figer une cellule en fonction de la date

bonjour,

j'ai un soucis pour figer des données au jour le jour :

j'ai une case "F5" qui est mise à jour chaque jour.

j'ai ensuite la ligne B qui correspond à chaque jour de la semaine. chaque cellule est, pour le moment un copier coller de la case "F5", donc, chaque jour, la cellule "F5" évolue, mais toutes mes cellules, y compris celle d'avant la date de saisie aussi.

je voudrais donc, que la cellule "B9" corresponde aux données saisies le 1er novembre et qu'elle reste figée lorsqu'on change de jour. le 2 novembre (aujourd'hui) le fait de changer la valeur "F5" change automatiquement la case correspondant à la date du jour, soit "C9" qui serait égale à "B9"+"F5"

en gros.... j'ai écrit ça en B8 : =SI($B2=B9;F5) donc : si "aujourd'hui"= "date du calendrier"(case en dessous B9) alors B8 sera égale à F5. je voudrais que le lendemain (la formule sera donc fausse) "B8" soit toujours égale au résultat de la veille, soit "2" dans mon exemple.

et donc la case d'après (C8) sera F5+B8 avec cette formule : =SI($B2=C9;B8+$F5;B8)

en l'état actuel, si je tape la date du 02/11 en B2, mon calcul en B8 devient "FAUX".

en laissant "2" en "F5" il faudrait que j'ai "2" en "B8" et "4" en "C8", etc.

merci si vous avez une solution si possible sans macro, bien que ça me semble compliqué !!!

11test-1.xlsx (11.14 Ko)

Bonjour,

ce que tu demandes est impossible (sauf à faire une macro)

il me paraîtrait plus logique que la saisie se fasse en ligne 5 selon le jour ...

8test-1.xlsx (11.45 Ko)

bonjour Steelson et merci de ta réponse,

je m'en doutais un peu. ce fichier est pour mon boulot, ce pourquoi je voudrais le simplifier au maximum afin qu'il soit intuitif. différentes personnes vont rentrer une ou plusieurs données chaque jour, et peu d'entre eux connaissent excel. donc, une seule case permettrait d'éviter des erreurs de saisie.

mais, je n'y connais absolument rien en macro !

si quelqu'un a un exemple de macro qui pourrait fonctionner, je suis preneur.

seb.

J'ai mis en jaune quand ce n'était plus 2 par défaut mais la vraie valeur.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim cel As Range
If Intersect(Target, Range("F5")) Is Nothing Then Exit Sub
Application.EnableEvents = False
Set cel = Rows(9).Find(What:=Range("B2").Value, LookIn:=xlValues)
If Not cel Is Nothing Then
    cel.Offset(-1, 0).Value = cel.Offset(-1, -1).Value + Range("F5").Value
    cel.Offset(-1, 0).Interior.Color = 65535
End If
Range("F5").Value = ""
Application.EnableEvents = True
End Sub
7test-1-1.xlsm (16.83 Ko)

merci ! pas tout compris à la formule !!!, mais merci !

j'ai juste 2 petites interrogations :

  • est-il possible que les cellules du reste du mois aient la même valeur que celle de la date ? (là, si on ajoute 2, ça ajoute 2 chaque jours)
  • l'autre question va montrer à quel point je suis nul : comment insérer cette macro dans un autre fichier ?
d'autant que la macro n’apparaît pas dans le fichier que vous avez posté (j'ai été dans "affichage", "macro" "afficher les macros"...)

va vraiment falloir que je me mette aux macros, ça a l'air très intéressant !

merci encore pour ces réponses rapides et précises.

seb.

oups, c'est bon pour la 1ère question, il suffisait d'enlever "+2" dans les cases suivantes.

du coup j'ai une autre question : est-il possible que les valeurs suivantes soient à 0 par défaut ?

il me faut juste savoir comment appliquer cette macro à mon tableau existant ! (je n'ai jamais utilisé de macro avant !)

seb.

comment insérer cette macro dans un autre fichier ?

d'autant que la macro n’apparaît pas dans le fichier que vous avez posté (j'ai été dans "affichage", "macro" "afficher les macros"...)

C'est une macro événementielle qui réagit au changement de valeur

Elle est dans la feuille, clique sur celle-ci ...

capture d ecran 189

Une explication sur la macro

Private Sub Worksheet_Change(ByVal Target As Range)
Dim cel As Range

' si la valeur changée (target) n'a rien à voir avec F5 alors je sors
If Intersect(Target, Range("F5")) Is Nothing Then Exit Sub

' je gèle la gestion des événements car je vais remettre F5 à blanc
Application.EnableEvents = False

' je cherche en ligne 9 la date inscrite en B2
Set cel = Rows(9).Find(What:=Range("B2").Value, LookIn:=xlValues)

' si on l'a bien trouvée (littéralement si c'est faux qu'on ne l'a pas trouvée !!)
If Not cel Is Nothing Then
    ' j'ajoute F5 à la valeur située juste au dessus de la date
    cel.Offset(-1, 0).Value = cel.Offset(-1, -1).Value + Range("F5").Value
    ' et je colorie
    cel.Offset(-1, 0).Interior.Color = 65535
End If

' je mets à blanc la valeur de F5 sinon, si le jour suivant j'ai la même valeur la macro ne réagirait pas !
Range("F5").Value = ""

' j'autorise à nouveau la gestion de l'événement
Application.EnableEvents = True

End Sub

Merci Steelson,

d'une part d'avoir compris ma demande (c'est pas toujours simple à expliquer !) d'autre part d'avoir pris du temps pour cette macro, et aussi pour tes explications qui rendent pédagogique ton aide.

merci !

Rechercher des sujets similaires à "figer fonction date"