zebanx
XLDnaute Accro
Bonsoir,
Je cherche à utiliser une macro communiquée (code : Jacques B. sauf erreur) qui permet d'additionner des valeurs à partir d'un dictionnaire :
Le fichier comporte 4 colonnes : workbook (pas utile dans la restitution), sheet, adresse de cellule et valeur
clé = sheets + adresse de cellule
item = valeur
La macro fonctionne bien quand on met les tableaux de 2 fichiers sur les 3 mais pas quand on met les 3 fichiers.
Si vous pouviez m'aider à comprendre d'où vient cette erreur "9" sur la ligne, merci beaucoup
zebanx
Le code :
Sub global_additionne()
Dim ta()
Set d = CreateObject("Scripting.Dictionary")
derligne = Cells(Rows.Count, 1).End(3).Row
ta = Range("A2" & derligne).Value
Ncol = UBound(ta, 2)
For i = 1 To UBound(ta)
clé = ""
For k = 2 To 3: clé = clé & ta(i, k) & "|": Next k
If d.exists(clé) Then
ReDim tb(1 To 1, 1 To Ncol)
For k = 1 To Ncol - 1: tb(1, k) = ta(i, k): Next k
'For k = Ncol : tb(1, k) = d(clé)(k) + ta(i, k): Next k
If k = Ncol Then
tb(1, k) = d(clé)(k) + ta(i, k) 'erreur 9 avec les 3 fichiers
End If
d(clé) = tb
Debug.Print clé
Else
d(clé) = Application.Index(ta, i)
End If
Next i
Je cherche à utiliser une macro communiquée (code : Jacques B. sauf erreur) qui permet d'additionner des valeurs à partir d'un dictionnaire :
Le fichier comporte 4 colonnes : workbook (pas utile dans la restitution), sheet, adresse de cellule et valeur
clé = sheets + adresse de cellule
item = valeur
La macro fonctionne bien quand on met les tableaux de 2 fichiers sur les 3 mais pas quand on met les 3 fichiers.
Si vous pouviez m'aider à comprendre d'où vient cette erreur "9" sur la ligne, merci beaucoup
zebanx
Le code :
Sub global_additionne()
Dim ta()
Set d = CreateObject("Scripting.Dictionary")
derligne = Cells(Rows.Count, 1).End(3).Row
ta = Range("A2" & derligne).Value
Ncol = UBound(ta, 2)
For i = 1 To UBound(ta)
clé = ""
For k = 2 To 3: clé = clé & ta(i, k) & "|": Next k
If d.exists(clé) Then
ReDim tb(1 To 1, 1 To Ncol)
For k = 1 To Ncol - 1: tb(1, k) = ta(i, k): Next k
'For k = Ncol : tb(1, k) = d(clé)(k) + ta(i, k): Next k
If k = Ncol Then
tb(1, k) = d(clé)(k) + ta(i, k) 'erreur 9 avec les 3 fichiers
End If
d(clé) = tb
Debug.Print clé
Else
d(clé) = Application.Index(ta, i)
End If
Next i