Calcul et liste de dates automatiques

Bonjour à tous,

Je suis sur un projet que j'ai réalisé seul. Celui permet via des liens OLE, de remplir un tableau de bord...

Sur une feuille "Données" j'ai 2 dates de renseignées via des formules OLE (C36 et C37), par exemple 01/02/2014 et 31/05/2014.

J'aimerai que sur la feuille suivante "Annuelle", sur des colonnes données (A38:B55 et A64:B81 qui seront quant à elles masquées), s'affiche automatiquement :

01/02/2014 | 28/02/2014

01/03/2014 | 31/03/2014

01/04/2014 | 30/04/2014

01/05/2014 | 31/05/2014 (soit ici 5 lignes soit A38:B42 et A64:B68)

Cependant, cette période peut varier de 1 à 18 mois maximum

J'ai donc laisser un espace de 18 lignes la 19ème étant la ligne total.

Je suis désespéré, vous pouvez prendre toutes les initiatives souhaitées : ajout de feuilles supplémentaires, VBA et autres....

Je ne penses pas qu'avec Excel cela marche mais VBA je penses que oui..

Serait-il possible de m'aider dans mon projet?

Merci mille fois d'avance

Excellente journée

PS : Vous trouverez ci-joint mon modèle...

20test2.xlsm (40.04 Ko)

Bonjour,

il faut préciser à quel moment la feuille "Annuelle doit se mettre à jour

Est-ce que une mise à jour au moment de l'activation de cette feuille est satisfaisant ?

A+

Bonjour galopin01,

J'ai enfin réussi via une combinaison de formules Excel à générer les dates souhaitées, il ne me restera que le report de dates à effectuer.

L'activation se fait au final après avoir modifier mes dates, en faisant "F9".

Mon problème de date est donc résolu,

Merci beaucoup pour ta coopération,

Excellente journée à toi

Re,

Ok à tout hasard je te donne ma macro (à adapter à ton F9 le cas échéant.)

Sub galopin()
Dim DD as Date, DF as Date, i%, iMD%, iYD%, iRw%, Y As Boolean
Dim WsS As Worksheet, WsC As Worksheet
Set WsS = Worksheets("Présentation")
Set WsC = Worksheets("Annuelle")
DD = CDate(WsS.Range("C36")): iMD = Month(DD): iYD = Year(DD)
DF = CDate(WsS.Range("C37"))
iRw = 38
Do Until Y
   If (CDate("01/" & iMD + i & "/" & iYD) < DF) Then
      WsC.Cells(iRw, 1) = CDate("01/" & iMD + i & "/" & iYD)
      iRw = iRw + 1: i = i + 1
      If iMD + i > 12 Then
         iMD = 1
         iYD = iYD + 1
         i = 0
      End If
   Else
      Y = True
   End If
Loop
WsC.Cells(iRw - 1, 2) = CDate("01/" & iMD + i & "/" & iYD) - 1
iRw = iRw - 1
Do Until iRw = 38
   WsC.Cells(iRw - 1, 2) = WsC.Cells(iRw, 1) - 1
   iRw = iRw - 1
Loop
End Sub

A+

Bonsoir galopin01

Wouaw !!! Avec un code c'est magnifique, beaucoup plus simple !

Cependant, lorsque je change les dates sur ma première feuille, même en faisant F9, il n'y a aucun changement sur la feuille "Annuelle"....

Je préfère cela à toutes mes formules Excel !!!!

Merci beaucoup!!!

Serait-il possible également de me dire quelle serait la variable à modifier sur le code pour passer de 18 mois maximum à 24 mois maximum (sachant que là je n'ai testé qu'avec 12 mois) ?

Merci d'avance !!!!

Excellente soirée

Bonjour,

Il n'y a rien à modifier car le code ne vérifie pas la période. Il se base sur la date de début et la date de fin c'est tout.

(D'ailleurs ce code ne vérifie rien du tout si tu ne rentres pas de date de fin ou si la date n'est pas une date : ça plante...)

Le code part du principe que la date de début est toujours le 1er d'un mois quelconque et que la date de fin est toujours le dernier jour d'un mois quelconque : 30 février s'abstenir !

Le cas échéant il faudrait faire une gestion d'erreur...

Oui j'avais pas trop compris ton histoire de F9 mais c'est normal qu'il ne se passe rien car je suppose qu'il s'agit du F9 recalcul sur ordre.... Je pensais à autre chose ! (il est possible de réaffecter la touche F9)

Il faudrait peut-être faire une macro qui s'exécute à chaque fois que tu changes la date de fin ?

en attendant tu peux peut-être faire un raccourci clavier :

Tu vas dans l'onglet Développeur > Macro > Option

et dans cette boite de dialogue tu rentres une lettre par exemple "A" (sans guillemets) et tu valides.

Ensuite à chaque fois que tu feras Ctrl + Maj + A ça lancera la macro.

Sinon tu peux aussi mettre les macros suivantes dans le module ThisWorkbook :

Private Sub Workbook_Activate()
Application.OnKey "{F10}", "galopin"
End Sub

Private Sub Workbook_Deactivate()
Application.OnKey "{F10}"
End Sub

Private Sub Workbook_Open()
Application.OnKey "{F10}", "galopin"
End Sub

Ensuite tu fermes le classeur en enregistrant et tu l'ouvres à nouveau : à l'avenir à chaque fois que tu presseras la touche F10, la macro s'exécutera.

A+

Rechercher des sujets similaires à "calcul liste dates automatiques"