Autres Remplacement automatique d'une date

Emeline_univ

XLDnaute Nouveau
Bonjour bonjour ! Voilà j'aimerais effectuer une opération mais j'ai déjà fait quelques essais pas concluants et je ne sais même pas si cela est possible...
J'ai un tableau avec une date antérieure de réalisation d’une opération, et la prochaine date qui se calcule selon la date antérieure + un nombre de jours déterminé.
Pour le moment je dois renseigner la date antérieure mais je voudrais qu'elle se modifie automatiquement : lorsque la date "prochaine" est la date d'aujourd'hui alors elle passe en "antérieure" et la date "prochaine" se recalcule automatiquement.
Je peux partager mon document si les explications ne sont pas très claires
Je précise que je travaille sous excel 2007...
Je serai reconnaissante de tous vos conseils et toute votre aide
 
Solution
Si on vous a répondu "elle est planifiée donc elle a eu lieu" la question du signalement des dates dépassée est oiseuse. Cette procédure dans le module ThisWorkbook corrige les dates "Antérieure" par rapport à la date du jour, en s'efforçant de conserver le quantième, donc à durées légèrement inégales entre deux interventions. Toutefois si moins de 3 jours la sépare de la fin du mois, c'est cette différence qui est conservée.
VB:
Option Explicit
Private Sub Workbook_Open()
   Dim LOt As ListObject, TDtAnt(), TPério(), L As Long, NDate As Date, _
      J As Integer, M As Integer, A As Integer, JFM As Integer
   Set LOt = Feuil3.ListObjects(1)
   TDtAnt = LOt.ListColumns("Anterieure").DataBodyRange.Value
   TPério =...

Emeline_univ

XLDnaute Nouveau
C'est un fichier que j'ai trouvé sur excel-pratique et juste modifié, mon problème se trouve sur les colonnes "date intervention". J'ai tenté des =SI() mais cela n'a pas fonctionné à cause de références circulaires. Je vous laisse voir par vous-même sur le document : une case "antérieure" a été remplie à la main et la première case de la colonne dans ce tableau a un essai de fonction...
 

Pièces jointes

  • préventif.xlsm
    37.4 KB · Affichages: 9

jmfmarques

XLDnaute Accro
Bonjour
Je n'ai pas ouvert ton classeur (je ne le fais jamais) et me contente donc à ce stade d'appeler ton attention sur cet aspect de ton explication :
lorsque la date "prochaine" est la date d'aujourd'hui alors elle passe en "antérieure"
Qui conduit à la question suivante :
- que décides-tu très précisément de faire si "AUJOURD'HUI" s'avère être une date supérieure à "date prochaîne" ?
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Vous pouvez essayer, en Tableau1[Prochaine] :
Code:
=SI(ESTVIDE([@Anterieure]);"";AUJOURDHUI()+[@[en jrs]]-MOD(AUJOURDHUI()-[@Anterieure];[@[en jrs]]))
Mais vous devez saisir en Tableau1[Anterieure] la date de la 1ère intervention et ne plus la changer, ou alors la changer par VBA.
 

Emeline_univ

XLDnaute Nouveau
Bonjour
Je n'ai pas ouvert ton classeur (je ne le fais jamais) et me contente donc à ce stade d'appeler ton attention sur cet aspect de ton explication :

Qui conduit à la question suivante :
- que décides-tu très précisément de faire si "AUJOURD'HUI" s'avère être une date supérieure à "date prochaîne" ?

Bonjour, je voudrais si possible que la date s'affiche en rouge si elle est dépassée
 

jmfmarques

XLDnaute Accro
je voudrais si possible que la date s'affiche en rouge si elle est dépassée
me parait s'éloigner quelque peu de l'esprit de l'informatique en ce sens qu'est cédée la place à l'examen visuel et une intervention manuelle.
D'autant plus gênant, que cela se produira assez fréquemment (congés, pannes, week-ends, etc ...).
La question continue donc d'être celle déjà posée : quelle devra être très exactement la "prochaine date" logique dans de tels cas :)?
 

Dranreb

XLDnaute Barbatruc
Moi ma question c'est : comment sait-on que l'intervention prévue a eu lieu ?
Je pense que le plus simple serait de le signaler en sélectionnant la date "Anterieure". Ce serait alors facile de lui ajouter la période "en jrs".
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Je viens de voir des calculs faux dans les colonnes à droite, dont on pourrait se passer.
Mais il faudrait que je sache si on ne préfèrerait pas que le numéro du jour des dates ne change pas dans la mesure du possible où si ce serait plus les durées constantes qui devraient être conservées. Dans ce dernier cas c'est 365,2425 jour pour une année et le 1/12 de ça pour un mois, et ça pose un problème de stabilité parce que les dates sont des nombres entiers de jours …
 

Dranreb

XLDnaute Barbatruc
Si on vous a répondu "elle est planifiée donc elle a eu lieu" la question du signalement des dates dépassée est oiseuse. Cette procédure dans le module ThisWorkbook corrige les dates "Antérieure" par rapport à la date du jour, en s'efforçant de conserver le quantième, donc à durées légèrement inégales entre deux interventions. Toutefois si moins de 3 jours la sépare de la fin du mois, c'est cette différence qui est conservée.
VB:
Option Explicit
Private Sub Workbook_Open()
   Dim LOt As ListObject, TDtAnt(), TPério(), L As Long, NDate As Date, _
      J As Integer, M As Integer, A As Integer, JFM As Integer
   Set LOt = Feuil3.ListObjects(1)
   TDtAnt = LOt.ListColumns("Anterieure").DataBodyRange.Value
   TPério = LOt.ListColumns("P").DataBodyRange.Resize(, 2).Value
   For L = 1 To UBound(TDtAnt, 1)
      If TPério(L, 1) > 0 And Not IsEmpty(TDtAnt(L, 1)) Then
         NDate = TDtAnt(L, 1): J = Day(NDate): M = Month(NDate): A = Year(NDate)
         JFM = NDate - DateSerial(A, M + 1, 0): If JFM >= -3 Then J = JFM: M = M + 1
         If UCase(Left$(TPério(L, 2), 1)) = "A" Then A = A + TPério(L, 1) Else M = M + TPério(L, 1)
         NDate = DateSerial(A, M, J)
         If NDate <= Date Then TDtAnt(L, 1) = NDate
         End If
      Next L
   LOt.ListColumns("Anterieure").DataBodyRange.Value = TDtAnt
   End Sub
À tester …
 

Emeline_univ

XLDnaute Nouveau
Je viens de voir des calculs faux dans les colonnes à droite, dont on pourrait se passer.
Mais il faudrait que je sache si on ne préfèrerait pas que le numéro du jour des dates ne change pas dans la mesure du possible où si ce serait plus les durées constantes qui devraient être conservées. Dans ce dernier cas c'est 365,2425 jour pour une année et le 1/12 de ça pour un mois, et ça pose un problème de stabilité parce que les dates sont des nombres entiers de jours …
Alors, vous voulez quelle solution ?
Une qui révise toutes les dates "Anterieure" à l'ouverture du classeur ou une qui la révise à sa sélection ?
Je pense que réviser les dates à leur sélection serait la meilleure solution pour garder un certain contrôle
L'objectif est de calculer les dates d'échéance selon la date de la dernière opération et une fréquence
 

Discussions similaires

Réponses
4
Affichages
797

Statistiques des forums

Discussions
312 446
Messages
2 088 490
Membres
103 869
dernier inscrit
benji_270