Bonjour à tous,
Je trouve un décalage d'une ligne avec Amadéus ?
Sub TabloValeurs2()
Dim Lg&, Lg2%, i%, cL&
'Macro par Claude Dubois pour "thval" Excel-Pratique le 12/02/11
Application.ScreenUpdating = False
Sheets("Feuil2").Range("b2:cw100").ClearContents
'--- prépare ---
Sheets("Feuil1").Activate
Rows(1).Insert
Range("p1") = "lib1" 'en-tête pour filtre
Range("q1") = "lib2"
Lg = Cells.Find("*", , , , xlByRows, xlPrevious).Row
'--- filtre sans doublons "Feuil3" temporaire ---
With Sheets("Feuil3")
Range("p1:q" & Lg).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
Range("x1:x2"), CopyToRange:=.Range("a1:b1"), Unique:=True
Rows(1).Delete
Lg = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
Lg2 = Sheets("Feuil1").Cells.Find("*", , , , xlByRows, xlPrevious).Row
.Range("c2:c" & Lg) = _
"=SUMPRODUCT((Feuil1!$p$1:$p$" & Lg2 & "=a2)*(Feuil1!$q$1:$q$" & Lg2 & "=b2))"
.Range("c2:c" & Lg) = .Range("c2:c" & Lg).Value 'en dur
'--- récupère les valeurs ---
For i = 2 To Lg
Lg2 = .Cells(i, "a") + 1
cL = .Cells(i, "b") + 2
Sheets("Feuil2").Cells(Lg2, cL) = .Cells(i, "c")
Next i
.Range("a:e").EntireColumn.Clear
End With
Sheets("Feuil2").Activate
End Sub
édit 20h : code et fichier revus
J'utilise SommeProd sur 74 lignes filtrées au lieu de Coutif sur 3050 lignes précédemment.
Amicalement
Claude