Sub extract()
With Sheets("Données")
.Range("A1:C" & .[A65000].End(xlUp).Row).Name = "base"
'on détermine une plage, nommée "base" qui va de A1 à
'Cxx, xx étant la dernière cellule non vide de la colonne A
'de l'onglet "Données"
End With
'pour la suite, on va utiliser un filtre élaboré
'pour cela, il faut une zone de données ("base")
'une zone de critères (ici E1:E2 de l'onglet "Récap"
'et une zone d'extraction (ici, A1 de l'onglet "Récap"
With Sheets("Récap")
.[E1] = [C1] 'on copie l'en-tête de la colonne C ("quantité")
'afin d'avoir le même en-tête dans la zone de critères
'que dans la base
.Range("E2").FormulaR1C1 = ">0" 'on met une formule, afin de déterminer
'ce qu'on veut extraire. Ici, on veut
'les données supérieures à 0
Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range( _
"E1:E2"), CopyToRange:=.Range("A1"), Unique:=False
'C'est ici l'extraction par filtre élaboré (regarde dans l'aide
'comment fonctionne un filtre élaboré
.Columns(5).Clear 'on nettoie la zone de critères
.Cells.EntireColumn.AutoFit 'on ajuste la largeur des colonnes
End With
End Sub