Bonjour,

j'ai fait une macro pour pouvoir calculer des sommes en fonction de variables mais je ne comprends pas il me marque un débogage (j'ai réutilisé une macro qui faisait des sommes en évitant de prendre en compte les doublons de classe) .

Je veux juste faire une somme si ma date et ma ref de ma feuil Data Global est égale à ma date et ma ref de ma feuil data prototype alors je fais une somme des valeurs de mes classes situé dans la colonne 6 de ma feuil data prototype et j'affiche le résultat dans ma colonne 10 de ma feuil data global

Voici mon code et la ligne en rouge est la ligne ou il y a un débogage

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Sub test()
    Dim i As Long
    Dim j As Long
    Dim wksCriteres As Worksheet
    Dim rngDataDate As Range
    Dim wksCopie As Worksheet
    Dim c As Range
    
    Set wksCriteres = Worksheets("Critères")
    Set wksCopie = Worksheets("Copie")
    
    ' Trouver le titre de la colonne dans la page de données globales
    Set rngDataDate = Worksheets("Data Global").UsedRange.Columns(1).Find(What:="Date")
    If Not rngDataDate Is Nothing Then            ' trouvé!
        ' on commence l'itération à la ligne suivante...
        i = 1
        While Not IsEmpty(rngDataDate.Offset(i, 0).Value)
            ' filtrer la table de prestation en fonction de la date et ref
            wksCriteres.Range("A2").Value = rngDataDate.Offset(i, 0).Value ' 0 colonne 'Date'
            wksCriteres.Range("B2").Value = rngDataDate.Offset(i, 1).Value ' 1 colonne à droite 'Ref'
            Worksheets("Data prototype").UsedRange.AdvancedFilter Action:=xlFilterCopy, _
                                    CriteriaRange:=wksCriteres.Range("A1:B2"), _
                                    CopyToRange:=wksCopie.Range("A1"), _
                                    Unique:=True
            For j = 2 To wksCopie.UsedRange.Rows.Count
                rngDataDate.Offset(i, 7).Value = rngDataDate.Offset(i, 7).Value + wksCopie.UsedRange.Cells(j, 6).Value
            Next j
            wksCopie.Cells.Delete
            i = i + 1
        Wend
    End If
End Sub

Merci du coup de main