Figer le résultat d'une formule à la fin du mois

Guy_L

XLDnaute Occasionnel
Bonjour,
J'utilise la formule suivante pour calculer un nombre de jours

SI(AUJOURDHUI()>F$28;F$28-$E$28,AUJOURDHUI()-$E$28)

Explications:
- en E28 se trouve la date d'un évènement (la date de celui-ci est réactualisée de manière aléatoire dans l'année)
- en F28 se trouve la date de fin de mois calculée elle-même par DATE(ANNEE($D$28);x;1)
où D28 est =AUJOURDHUI() et x le mois

La formule globale dit ceci:
si j'ai dépassé la fin de mois, alors je veux la différence en jour entre la fin de mois et l'événement
sinon, je veux la différence en aujourd'hui et l'événement

Mon problème est le suivant: je veux "figer" tout ce qui est antérieur au mois courant, sinon, la valeur des mois n-1, n-2, n-3 ect devient négative puisque l'événement sera devenu postérieur à la date de fin de ces mois.

L'idée globale serait de déclencher un copier - collage spécial > valeurs en lieu et place des formules des mois antérieurs dès lors que aujourd'hui est supérieur au 1er du mois suivant.

Je ne sais pas si mes explications sont claires, voici une autre façon de les aborder:

si l'événement date du 5 juin et que le précédent était le 1er janvier:
les 31/01 , 28/02 , 31/03 , 30/04 et 31/05, le nombre totalisera à chaque fois le nombre de jours du mois + des précédents
le 31/05 on aura 151 jours (du 1er janvier au 31 mai).
si nous sommes le 2 juin, comme l'événement ne s'est pas encore produit, alors le nombre au 31/05 sera incrémenté de + 2
si nous sommes le 11 juin, alors ce nombre devient 6 (différence entre 5 et 11)

Mais je veux conserver le nombre de 151 à fin mai et non pas avoir 31/05 - 05/06 soit -5

J'ajoute que le top serait de mettre les mois à venir = case vide (SI(AUJOURDHUI()>F$28;"faire l'action";"")

Pouvez-vous m'aider ?
Merci
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Figer le résultat d'une formule à la fin du mois

Bonsoir à tous les 2,

Avec une macro, c'est possible. A la fermeture de ton fichier, tu mets la date du jour dans une cellule (cachée ou non) avant l'enregistrement. Puis, avec une macro à l'ouverture de ton fichier, tu vérifie si le mois est différent de celui d'aujourd'hui, si c'est le cas alors tu enregistres tes valeurs dans tes cellules.

A+

Martial
 

Yaloo

XLDnaute Barbatruc
Re : Figer le résultat d'une formule à la fin du mois

Re,

Voici les 2 macros dont tu as besoin, à placer dans ThisWorkbook :

VB:
Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
[IV65536] = Date
End Sub
Private Sub Workbook_Open()
Dim Mois
Mois = Month([IV65536])
If Mois < Month(Now) Then
  Range(Cells(4, Mois + 4), Cells(27, Mois + 4)) = Range(Cells(4, Mois + 4), Cells(27, Mois + 4)).Value
End If
End Sub

A+

Martial
 

Guy_L

XLDnaute Occasionnel
Re : Figer le résultat d'une formule à la fin du mois

Merci, je présume que, dans mon cas, je dois placer ces deux macros dans la feuille active (Feuil1) et remplacer les valeurs de cellules comme ceci:
Range(Cells(19, Mois + 4), Cells(33, Mois + 4)) = Range(Cells(19, Mois + 4), Cells(33, Mois + 4)).Value
Juste ?
 

Yaloo

XLDnaute Barbatruc
Re : Figer le résultat d'une formule à la fin du mois

Bonjour Guy,

J'avais compris qu'il fallait figer le tableau de la ligne 4 à 27, mais bien entendu tu peux de la ligne 28 à 33 si tu veux ou de 4 à 33 ou encore de 19 à 33.

Le 19 correspond à la ligne du début de plage et 33 à la ligne de fin.

A+

Martial
 

Yaloo

XLDnaute Barbatruc
Re : Figer le résultat d'une formule à la fin du mois

Bonjour à toi aussi,

ce n'est pas une plahe de 19 à 33 que je veux figer, mais les lignes 19 & 33. Pour autant, j'ai testé, ça ne fonctionne pas (!?)

Désolé mais ça fonctionne pour ce que j'ai compris avec ton post #1. Pourrais-tu nous réexpliquer ce que la macro doit faire ? Peut-être avec des exemples et des couleurs ou des encadrements différents.

A te relire

Martial
 

Guy_L

XLDnaute Occasionnel
Re : Figer le résultat d'une formule à la fin du mois

Pourrais-tu nous réexpliquer ce que la macro doit faire ? ...Martial
Le principe est le suivant:
Chaque mois, on "surveille si un événement se produit. Cet événement est aléatoire, peut se produire plusieurs fois dans un mois, et même dans une journée, donc dans une année. Mais ces événements restent quand même - en principe - occasionnels.

Sur une ligne, je veux récupérer le temps qui s'est écoulé mois par mois depuis la date du dernier événement en question. Si c'est dans le mois courant, il faut totaliser les jours écoulés depuis l'événement précédent jusqu'au jour courant (-1 puisqu'on veut avoir un nombre de jours entier). Si l'événement se produit le 18 mars 2013, en février on aura tout ce qui est antérieur au 01/01/2013 + janvier (31 jours) + février (28 ou 29 jours selon l'année). Pour avril, on totalisera les 30 jours d'avril, + 13 jours (entre le 18 mars et le 31 mars). Mais il faut que les valeurs de janvier et février restent, et pour ça, il ne faut plus que la formule utilisée soit encore "active" une fois que le mois est écoulé, mais que son résultat reste "en dur" dans la cellule.

Sur une autre ligne, c'est pareil, sauf que la durée affichée démarre avec le 1er jour de l'an (on occulte alors les jours qui se sont écoulés entre l'événement et le 31/12 de l'année précédente pour ne compter que les jours depuis le 1er janvier jusqu'au prochain événement. S'il ne s'est rein passé au 31/12/2013, on devrait avoir "365 jours sans événement". Mais si un "événement" s'est produit le 20 avril 2013, au mois de janvier on aura un total de 31, au mois de février 31+28, en mars 31+28+31 et à partir d'avril, 10 (c'est à dire 30 jours d'avril moins les 20) + 31 (mai) + 30 (juin) + .... pour avoir au 31/12 un total de 245 jours.

Est-ce plus clair comme ça ?
 

Yaloo

XLDnaute Barbatruc
Re : Figer le résultat d'une formule à la fin du mois

Bonjour Guy,

Ton titre : Figer le résultat d'une formule à la fin du mois

Désolé, je ne comprends pas le rapport avec ce que tu dis au post précédent. En plus, ton tableau n'est pas complètement rempli, j'ai du mal à m'y retrouver. Je laisse la main à qui voudra.

A+

Martial
 

Guy_L

XLDnaute Occasionnel
Re : Figer le résultat d'une formule à la fin du mois

Bonjour Guy,
Ton titre : Figer le résultat d'une formule à la fin du mois
Désolé, je ne comprends pas le rapport avec ce que tu dis au post précédent. En plus, ton tableau n'est pas complètement rempli, j'ai du mal à m'y retrouver. Je laisse la main à qui voudra.
A+
Martial
dans un post ci-dessus tu expliquais "Le 19 correspond à la ligne du début de plage et 33 à la ligne de fin".
Or ce que j'ai besoin de "figer" est dans deux lignes différentes et distinctes qui ne peuvent pas être réunies en une seule "plage" de cellules.
 

Discussions similaires

Réponses
14
Affichages
647
Réponses
11
Affichages
473
Réponses
16
Affichages
588

Statistiques des forums

Discussions
311 735
Messages
2 082 023
Membres
101 873
dernier inscrit
excellllll