bonjours a tous
il y avait longtemps :encore une question tordue
sauf erreur de ma part je viens de decouvrir une coquille dans le autofilter vba excel en repondant a un membre
tout dabors le tableau sur sheets se presente comme tel:

ensuite la macro filtre
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Sub test()
Dim temp As New Collection
With ActiveSheet
Set plage = .Range("c2:c" & [A65000].End(xlUp).Row)
On Error Resume Next
For Each c In plage
temp.Add Item:=c, Key:=CStr(c)
Next c
On Error GoTo 0
For Each i In temp
ActiveSheet.Range("A2:E" & .Cells(Rows.Count, 1).End(xlUp).Row).AutoFilter Field:=3, Criteria1:="=" & i
Debug.Print "pour " & i & " c 'est la somme de la plage " & plage.SpecialCells(xlVisible).Offset(0, 2).Address
'il te reste plus qu'a faire la somme des plage pour chaque item different
plage.AutoFilter
Next i
End With
End Sub |
et voila le resultat dans la fentre d'execution
pour 1049 c 'est la somme de la plage $E$2:$E$3,$E$6,$E$8
pour 1051 c 'est la somme de la plage $E$2,$E$4,$E$10
pour 1063 c 'est la somme de la plage $E$2,$E$5,$E$7
pour depot c 'est la somme de la plage $E$2,$E$9
la vous allez me dire oui mais E2 n'est pas valable pour tous donc il y a erreur
je vous repond oui mais comment faire ?
et là en faisant une erreur de codage j'ai trouvé en modifiant une ligne
c'est la ligne 11 pour la limite de ligne
qui est ecrite comme ca au depart
ActiveSheet.Range("A2:E" & .Cells(Rows.Count, 1).End(xlUp).Row).AutoFilter Field:=3, Criteria1:="=" & i
que je modifie comme ceci :
ActiveSheet.Range("A2:E" & .Cells(Rows.Count).End(xlUp).Row).AutoFilter Field:=3, Criteria1:="=" & i
en effet vous constaterez que je filtre sur toute la feuille en terme de ligne alors qu'avec la ligne ecite en bon et du forme je filtre les 10 lignes
donc le resultat avec cette dite ligne modifiée
pour 1049 c 'est la somme de la plage $E$2:$E$3,$E$6,$E$8
pour 1051 c 'est la somme de la plage $E$4,$E$10
pour 1063 c 'est la somme de la plage $E$5,$E$7
pour depot c 'est la somme de la plage $E$9
troublant non?
si quelqu'un a une explication je suis curieux
- pourquoi une erreur n'est pas déclanchée alors qu'il y a erreur de codage
- pourquoi le resultat est bon avec cette erreur
- quel rapport en tre le fait que je filtre 10 ligne ou la totalité et l'erreur de la cellule "E2"
- y aurait il une histoire de after comme avec find
voila une question interessante n'est ce pas 
ps : j'utilise la version 2007
Partager