Je cherche à additionner les valeurs de deux tableaux en fonction des dates, le problème pour moi c’est que les dates des deux tableaux ne sont pas sur les mêmes lignes et que sur un tableau il peut y avoir un jour alors que sur l’autre tableau il n’y ai pas , cela ressemble à cela:
Je cherche à additionner les valeurs de deux tableaux en fonction des dates, le problème pour moi c’est que les dates des deux tableaux ne sont pas sur les mêmes lignes et que sur un tableau il peut y avoir un jour alors que sur l’autre tableau il n’y ai pas , cela ressemble à cela: fichier joint
'Déclaration des variables
Dim d, a
Dim i As Integer
Sub Recup()
Set d = CreateObject("Scripting.Dictionary") 'Création d'un dictionnaire pour stocker les données dans la mémoire de l'ordinateur
a = [A3:B3].Resize([B3].CurrentRegion.Rows.Count - 2) ' Sélection du tableau 1 sans les 2 premières lignes (Entête)
calcul a ' additionne les données si doublons sur colonne "Dates" par la macro "totalise (a)
a = [D3:E3].Resize([E3].CurrentRegion.Rows.Count - 2) ' Sélection du tableau 2 sans les 2 premières lignes (Entête)
calcul a ' additionne les données si doublons sur colonne "Dates"
[G3].Resize(d.Count) = (Application.Transpose(d.keys)) ' Inscrit les dates dans le tableau 3
[H3].Resize(d.Count) = Application.Transpose(d.items) ' Inscrit les valeurs dans le tableau 3
Range("G1").EntireColumn.NumberFormat = "mm/dd" ' Formate les dates au format "jj/mm"
Range("G2:H2").Select ' TRI sur les dates tableau 3 (plus ancien au plus récent)
Selection.AutoFilter ' création du filtre sur G2 en ordre ascendant
ActiveWorkbook.Worksheets("Feuil1").AutoFilter.Sort.SortFields.Add Key:=Range _
("G2"), SortOn:=xlSortOnValues, Order:=xlAscending
With ActiveWorkbook.Worksheets("Feuil1").AutoFilter.Sort 'applique le filtre
.Header = xlYes ' le tableau à des etêtes
.Apply ' applique le filtre
End With
Selection.AutoFilter
Range("G1:H1").Select
End Sub
Sub calcul(a)
For i = LBound(a) To UBound(a)
d(a(i, 1)) = d(a(i, 1)) + a(i, 2) 'boucle de la petite valeur du dictionnaire sur la colonne 1 du tableau 1 (puis tableau 2) et additionne si doublons
Next i
End Sub