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:
Nom : Capture.JPG
Affichages : 427
Taille : 78,7 Ko

ensuite la macro filtre

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
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 ActiveSheet.Range("A2:E" & .Cells(Rows.Count, 1).End(xlUp).Row).AutoFilter Field:=3, Criteria1:="=" & i
que je modifie comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 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
  1. pourquoi une erreur n'est pas déclanchée alors qu'il y a erreur de codage
  2. pourquoi le resultat est bon avec cette erreur
  3. quel rapport en tre le fait que je filtre 10 ligne ou la totalité et l'erreur de la cellule "E2"
  4. y aurait il une histoire de after comme avec find

voila une question interessante n'est ce pas

ps : j'utilise la version 2007