Addition de valeurs/dates sur des lignes différentes

Bonjour à tous,

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:

Tableau 1 Tableau 2 Tableau final

dates valeurs dates valeurs dates valeurs
2/03 2 1/03 10 01/03 10
5/03 10 2/03 3 02/03 5
10/03 2 8/03 4 05/03 10
08/03 4
10/03 2

Bonjour à tous,

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 jointCapture

Bonjour @gravdigaz6,

Le problème pour nous est de reconstituer un fichier Excel a partir d’une image :roll_eyes:

Toutefois voici une proposition avec un fichier reconstitué.

Je suis partie de l’idée que tes tableaux étaient situés de “A1 à F8”

En “F4”

=SOMMEPROD((A$4:A$10=$E4)*B$4:B$10)+SOMMEPROD((C$4:C$10=$E4)*D$4:D$10)

Je te laisse adapter la formule à tes tableaux.

Fichier essai ICI==> gravdigaz6 V1.xlsx (16,3 Ko)

Cordialement.

Bonjour
Bonjour Mdo,

Une version VBA

Gravdigaz6.xlsm (20,8 Ko)

'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

2 « J'aime »