IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

filtre et impression


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 80
    Par défaut filtre et impression
    Bonjour,
    J'ai un tableau avec une dizaine de colonnes et un millier de lignes, je souhaite faire un filtre et imprimer un certains nombre de colonnes.
    Je lance donc la macro ci dessous qui fonctionne très bien pour le tri mais ne me convient pas pour l'impression. Cela imprime bien le résultat du tri, mais cela rajoute des pages blanches. Je n'arrive pas à définir la zone d'impression. J'avais pensé définir la zone d'impression en cherchant la dernière ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    derlig = Range("I1000").End(xlUp).Row
    mais cela me donne la dernière ligne du tableau complet.

    D'où ma question: Comment faire pour imprimer juste le résultat du filtre?
    Merci pour votre aide et excellente journée.
    Pascal

    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
    18
    19
    20
    21
    22
    23
    24
    25
     
              With Sheets("BASE")
                             selection.AutoFilter
                             ActiveSheet.Range("$B$2:$AE$1000").AutoFilter Field:=9, Criteria1:="UE"
                     With Sheets("BASE")
                          With ActiveSheet.PageSetup
                               .PrintTitleRows = "$2:$2"
                               .PrintTitleColumns = ""
                          End With
     
     
                   ActiveSheet.PageSetup.PrintArea = "$B$3:$I$1000"
                  ' derlig = Range("I1000").End(xlUp).Row
                  ' ActiveSheet.PageSetup.PrintArea = "$B$3:$I$" & derlig
     
                          With ActiveSheet.PageSetup
                               .LeftHeader = "Etat stock &D"
                               .CenterHeader = "Union européenne (UE)"
                               .Orientation = xlPortrait
                          End With
     
                            .PrintPreview
                            '.PrintOut 'impression
                          End With
                   End With

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 684
    Par défaut
    Citation Envoyé par pascalcom Voir le message
    . J'avais pensé définir la zone d'impression en cherchant la dernière ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    derlig = Range("I1000").End(xlUp).Row
    mais cela me donne la dernière ligne du tableau complet.
    Bonjour,

    Tu peux compter le nombre de lignes visible avec le code ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.UsedRange.SpecialCells(xlVisible).Rows.Count

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Normalement, si tu enlèves ton PrintArea et que tu laisses Excel se débrouiller seul pour définir la zone d'impression, il ne devrait pas imprimer des pages blanches.

    Si tu veux limiter la zone aux colonne B:I, tu peux l'écrire : ActiveSheet.PageSetup.PrintArea = "$B:$I" sans préciser de ligne.

    Au pire essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.PageSetup.PrintArea = Intersect(Columns("B:I"), ActiveSheet.UsedRange.SpecialCells(xlVisible)).Address

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Ou bien, tu peux essayer avec le filtre avancé avec extraction sur une nouvelle feuille (ou une feuille dédiée à ce seul usage) et imprimer la nouvelle feuille.

    Si c'est toujours la même extraction/filtrage tu peux enregistrer une macro.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gérer des filtres pour impressions
    Par niboTD dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/01/2019, 16h52
  2. [XL-2010] Macro ligne suivante d'un filtre pour impression.
    Par karpou21 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/11/2017, 19h11
  3. Réponses: 4
    Dernier message: 29/12/2008, 11h31
  4. Impression Word Filtré
    Par sofinf dans le forum VBA Word
    Réponses: 6
    Dernier message: 09/11/2007, 14h54
  5. Impression filtre sur formulaire
    Par zut94 dans le forum Access
    Réponses: 6
    Dernier message: 07/03/2006, 17h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo