Re : SOMME.SI (Macro ???)
J'viens de tester, la macro mais plus 15min a s'executer dans mon fichier. Donc j'vais pas pouvoir utiliser celle là.
J'pense que le plus simple serait de repartir sur la macro que tu avais fait précedemment (voir plus bas), c'est vraiment celle qui marchais le mieu. Il suffit juste de la modifiée, que la feuille de saisie soit enfaite la feuille archive et que la macro s'execute aprés l'archivage.
Sub saisie()
Dim tablo
Dim pages
Dim derlin As Integer
Dim z As Byte
Dim n As Integer
Dim m As Integer
Dim p As Integer
Dim x As Integer
tablo = Sheets("Saisie").Range("A3:T" & Sheets("Saisie").Range("A65536").End(xlUp).Row)
pages = Array("Archive", "Archive Finale")
derlin = Sheets(pages(0)).Range("A65536").End(xlUp).Row + 1
If derlin < 3 Then derlin = 3
For z = 0 To 1
For n = 0 To UBound(tablo) - 1
For m = 1 To 5
Sheets(pages(z)).Cells(derlin + n, m + 1) = tablo(n + 1, m)
Sheets(pages(z)).Cells(derlin + n, 1) = derlin + n - 2
Next m
x = 1
For p = 6 To 20
Sheets(pages(z)).Cells(derlin + n, p + x) = tablo(n + 1, p)
x = x + 1
Next p
Next n
Next z
Sheets("Saisie").Range("A3:T" & Sheets("Saisie").Range("A65536").End(xlUp).Row).ClearContents
Call recap
End Sub
Sub recap()
Dim n As Integer
Dim m As Integer
With Sheets("Archive Finale")
Dim lignes As Collection
Set lignes = New Collection
For n = 3 To .Range("A65536").End(xlUp).Row
For m = n + 1 To .Range("A65536").End(xlUp).Row
If .Range("D" & n) & .Range("E" & n) & .Range("F" & n) = .Range("D" & m) & .Range("E" & m) & .Range("F" & m) Then
.Range("G" & n) = .Range("G" & n) + .Range("G" & m)
.Range("I" & n) = .Range("I" & n) + .Range("I" & m)
.Range("K" & n) = .Range("K" & n) + .Range("K" & m)
lignes.Add m
End If
Next m
Next n
For n = lignes.Count To 1 Step -1
.Rows(lignes(n)).Delete
Next n
End With
End Sub