XL 2016 Créer un historique de valeur avec VBA

Beren

XLDnaute Nouveau
Bonjour,

Je cherche à mettre en place un programme VBA qui me permettrait de faire un historique de valeurs.

Mes données d'entrée sont:
-La date du jour
-Une valeur que je veux sauvegarder (jamais nulle)
-Le tableau suivant:

1568037906230.png

-La valeur que je veux sauvegarder peut être mise à jour tous les jours comme tous les deux/trois mois.

Mon programme doit comparer la date du jour avec les dates du tableau. Si le mois/année (date du jour) sont égaux avec le mois/année (date tableau), la cellule face au mois (par exemple sept-19) prend la valeur que je veux sauvegarder. Si le mois (date du jour) et supérieur au mois (date tableau) et que la valeur en face est nulle (si le fichier n'a pas été mis à jour depuis plus d'un mois), la cellule face au mois (par exemple sept-19) prend la valeur de la cellule au dessus (dans ce cas 12). Si la date du jour est inférieur à la date du tableau, la boucle se termine.

Si vous avez des pistes sur la manière de résoudre ce problème ça m'aiderais beaucoup.

Merci d'avance
 

Beren

XLDnaute Nouveau
Dim date_jour As Date
date_jour = Format(Now, "dd/mm/yyyy")

Dim date_histo(2 To 5) As Date
date_histo(2) = "01/09/2019"
date_histo(3) = "01/10/2019"
date_histo(4) = "01/11/2019"
date_histo(5) = "01/12/2019"

Dim N As Integer

Dim M As Integer

For N = 2 To 5

M = N - 1

If Year(date_histo(N)) = Year(date_jour) And Month(date_histo(N)) = Month(date_jour) Then
Range("B" & N) = Range("C2")
ElseIf Year(date_histo(N)) = Year(date_jour) And Month(date_histo(N)) < Month(date_jour) And Range("B" & N) = 0 And Range("B" & M) <> "valeur_histo" Then
Range("B" & N) = Range("B" & M)
ElseIf Year(date_histo(N)) = Year(date_jour) And Month(date_histo(N)) < Month(date_jour) And Range("B" & N) = 0 And Range("B" & M) = "valeur_histo" Then
Range("B" & N) = Range("C2")
ElseIf Year(date_histo(N)) < Year(date_jour) And Month(date_histo(N)) > Month(date_jour) And Range("B" & N) = 0 Then
Range("B" & N) = Range("B" & M)
ElseIf Year(date_histo(N)) = Year(date_jour) And Month(date_histo(N)) > Month(date_jour) And Range("B" & N) <> 0 Then
Range("B" & N) = 0
ElseIf Year(date_histo(N)) > Year(date_jour) And Month(date_histo(N)) < Month(date_jour) And Range("B" & N) <> 0 Then
Range("B" & N) = 0
End If

Next N
 

Discussions similaires

Réponses
6
Affichages
88
Réponses
11
Affichages
473

Statistiques des forums

Discussions
311 725
Messages
2 081 948
Membres
101 849
dernier inscrit
florentMIG