XL 2013 Boucler sur colonne filtrée

Chris401

XLDnaute Accro
Bonjour à tous

Soit un tableau A1:Ex
La colonne D est filtrée sur une date.
Je désire imprimer chaque item de la colonne C.
Comment remplacer ce code en utilisant une boucle SVP ?

Code:
Sub Imprime()
    With ActiveSheet
    .ListObjects("Tableau4").Range.AutoFilter Field:=3, Criteria1:= _
        "xx"
     .PrintPreview
    .ListObjects("Tableau4").Range.AutoFilter Field:=3, Criteria1:= _
        "yy"
    .PrintPreview
    End With
End Sub

Je n'y arrive pas avec quelque chose du style :
Code:
Sub Imprimer()
Dim Item As Variant
    With ActiveSheet
        For Each Item In Liste_de_ la _colonne_C
            .ListObjects("Tableau4").Range.AutoFilter Field:=3, Criteria1:=Item
            .PrintPreview
         Next Item
    End With
End Sub
Merci de votre aide.
 

Pièces jointes

  • Imprime_Filtre.xlsm
    17 KB · Affichages: 29

Lone-wolf

XLDnaute Barbatruc
Bonjour Chris

@Chris401

Macro avec un seul critère

VB:
Sub Imprimer()
Dim plage As Range, derL&
    With ActiveSheet
        derL = .Range("a" & Rows.Count).End(xlUp).Row
        .Range("a1:e" & derL).AutoFilter Field:=3, Criteria1:="xx"
        Set plage = .Range("a1:e" & derL).SpecialCells(xlCellTypeConstants)
        .PageSetup.PrintArea = plage.Address
        .PrintPreview
    End With
End Sub
 

chris

XLDnaute Barbatruc
Bonjour

Pour cela il serait préférable d'avoir une liste sans doublons des valeurs de la colonne der.

Tu peux la constituer au préalable par un filtre avancé.

J'ai gardé Tableau4 mais il est important de nommer correctement ses tableaux !

Code:
Sub Imprimer()

Dim Maliste
Dim Item As Variant

With ActiveSheet
    Range("K1") = "der"
    Range("Tableau4[#All]").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Columns("K:K"), Unique:=True
    ReDim Maliste(WorksheetFunction.CountA(.Columns("K:K")) - 1)
    Maliste = .Range("K2:K" & UBound(Maliste) + 1)
    .Columns("K:K").ClearContents
    For Each Item In Maliste
        .ListObjects("Tableau4").Range.AutoFilter Field:=3, Criteria1:=Item
        .PrintPreview
    Next Item
End With

Edit : salut Lone-Wolf plus rapide. Il y a un ListObject donc il est préférable de coder en en tenant compte....
 

Lone-wolf

XLDnaute Barbatruc
Bonjour Chris:)

@chris et @Chris401

Au faite, si tu veux imprimer tous les items(donc la plage) de la colonne C, à quoi bon filtrer?? o_O

VB:
Sub Imprimer()
Dim plage As Range, derL&
    With ActiveSheet
        derL = .Range("a" & Rows.Count).End(xlUp).Row
        Set plage = .Range("c1:c" & derL)
        .PageSetup.PrintArea = plage.Address
        .PrintPreview
    End With
End Sub
 

Chris401

XLDnaute Accro
Bonjour à tous les deux

Lone-wolf : je ne veux pas uniquement le critère "xx" mais tous les critères de la colonne C
chris : c'est presque ça sauf que la colonne K ne tient pas compte des lignes filtrées ; l'item "eee" ne devrait pas paraitre car il est filtré par la colonne D
Il faut donc copier sans doublons les lignes visibles de la colonne C

Merci à tous les deux.
 
Dernière édition:

Chris401

XLDnaute Accro
Lone-Wolf, cela reste du manuel. Je suis obligé de lancer chaque impression.
De plus, je ne veux pas systématiquement tous les services.

BOISGONTIER : Je ne veux que les items sans doublon de la colonne C ; comment faire ?

Merci encore
 

Statistiques des forums

Discussions
312 102
Messages
2 085 303
Membres
102 857
dernier inscrit
Nony1931