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 :

Zone d'impression dynamique avec des colonnes masquées


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 148
    Points : 57
    Points
    57
    Par défaut Zone d'impression dynamique avec des colonnes masquées
    Bonjour,

    voilà sur l'image en dessous je voudrais imprimer les lignes non vide de la colonne b à la colonne x bien évidement il y a des colonnes masquées qui contiennent des données j'ai essayé plusieurs macros mais sur l'aperçu avant impression sa donne impression de la page 1 a 20 alors que je n'aie que 2 feuilles



    Merci d'avance pour vos réponses

    Cordialement

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Il te faut définir la zone d'impression. Tu sélectionne les cellules devant être imprimées puis "Zone d'impression" --> "Définir" ou par VBA (ici, pour les cellules contenant des constantes) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub Imprimer()
     
        With ActiveSheet
     
            .PageSetup.PrintArea = .Cells.SpecialCells(xlCellTypeConstants).Address
     
        End With
     
    End Sub
    Hervé.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 148
    Points : 57
    Points
    57
    Par défaut
    Bonjour,

    merci pour ta réponse rapide je viens d'essayer ton code et à l'aperçu j'obtiens page de 1 à 11



    Cordialement

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 148
    Points : 57
    Points
    57
    Par défaut
    Bonjour,

    J'ai essayé avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub IMPRIMER()
    With Worksheets("Achats")
    ActiveSheet.PageSetup.PrintArea = Range("b1:x" & Range("C65536").End(xlUp).Row).Address
        With .PageSetup
            .PrintTitleRows = "$1:$1"                  'COPIE 1Ere LIGNE SUR CHAQUE FEUILLE
            .LeftHeader = "&""Arial,Gras""&D"          'AFFICHE DATE A GAUCHE
            .CenterHeader = "&""Arial,Gras""&14ACHATS MARTIN DESSERT" 'TITRE DE LA PAGE
            .CenterFooter = "Page &P de &N"            'INDIQUE PAGE 1 SUR 2 PAR Ex
        End With
        .PrintOut                                      'ENLEVER " ' " EN DEBUT LIGNE POUR IMPRIMER LA FEUILLE ACHATS
    End With
    End Sub
    Mais j'obtiens toujour impression de la page 1 a 20

    Cordialement

  5. #5
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    La mise en page te montre les sauts de page donc tu dois bien voir si ta zone d'impression est correcte ou erronée, non ?
    Dans ton code tu fais référence à la feuille "Achats" mais tu utilise la feuille active pour définir ta zone d'impression donc ma question est, ta feuille Achats est elle bien la feuille active au moment de l'exécution du code ? Sinon, regarde avec le code modifié ci-dessous :
    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
     
    Sub IMPRIMER()
     
        With Worksheets("Achats")
     
            With .PageSetup
     
                .PrintArea = .Range("b1:x" & .Range("C65536").End(xlUp).Row).Address
                .PrintTitleRows = "$1:$1"                  'COPIE 1Ere LIGNE SUR CHAQUE FEUILLE
                .LeftHeader = "&""Arial,Gras""&D"          'AFFICHE DATE A GAUCHE
                .CenterHeader = "&""Arial,Gras""&14ACHATS MARTIN DESSERT" 'TITRE DE LA PAGE
                .CenterFooter = "Page &P de &N"            'INDIQUE PAGE 1 SUR 2 PAR Ex
     
            End With
     
            .PrintPreview 'aperçu
            '.PrintOut
     
        End With
     
    End Sub
    Hervé.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 148
    Points : 57
    Points
    57
    Par défaut
    Bonjour,

    En appuyant sur le bouton "Imprimer Feuilles" je suis sur la feuille "ACHATS"
    en effet.
    Je dois dire que je suis novice en vba et j'éssaye des codes ou je ne comprend pas toutes les nuances et je te remercie de prendre du temps pour mon probléme ainsi que toutes les autres personnes qui m'ont aidés sur ce fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .PrintArea = .Range("b1:x" & .Range("C65536").End(xlUp).Row).Address
    sur cette ligne de code j'ai une erreur "Propriété ou méthode non géré pour cette objet"

    pour les sauts de page sur l'onglet mise en page je vois des ligne qui délimites les pages

    Cordialement

    bonjour,

    Alors si je mets un bouton de commande et ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub CommandButton1_Click()
    '********************************************************************
    'ROUTINE POUR COPIER ENTETE DATE TITRE No DE PAGE SUR TOUTE LES PAGES
    '********************************************************************
    With Worksheets("Achats")
        With .PageSetup
            .PrintTitleRows = "$1:$1"                  'COPIE 1Ere LIGNE SUR CHAQUE FEUILLE
            .LeftHeader = "&""Arial,Gras""&D"          'AFFICHE DATE A GAUCHE
            .CenterHeader = "&""Arial,Gras""&14ACHATS MARTIN DESSERT" 'TITRE DE LA PAGE
            .CenterFooter = "Page &P de &N"            'INDIQUE PAGE 1 SUR 2 PAR Ex
        End With
        .PrintOut                                      'ENLEVER " ' " EN DEBUT LIGNE POUR IMPRIMER LA FEUILLE ACHATS
    End With
    End Sub
    tout fonctionne bien je peux imprimer 1 ou 2 ou 3 pages selon la longueur ce code ce trouve dans "feuil2(Achats)" et non dans un module

    mais si à la place du bouton je mets une forme pour que ce soit plus beau et que j'insèrt un module avec le même code au preview j'obtiens impression de la page 1 à 11

    Cordialement

Discussions similaires

  1. Réaliser un formulaire avec des colonnes dynamiques
    Par tikigod dans le forum Langage
    Réponses: 6
    Dernier message: 29/04/2013, 16h44
  2. Réponses: 4
    Dernier message: 25/06/2012, 15h13
  3. DataTable avec des colonnes dynamiques
    Par PrinceDeLu dans le forum JSF
    Réponses: 5
    Dernier message: 15/04/2011, 11h54
  4. Un tableau avec des colonnes dynamiques
    Par Cronycs dans le forum Struts 1
    Réponses: 5
    Dernier message: 07/06/2007, 14h38
  5. Réponses: 1
    Dernier message: 04/05/2005, 12h43

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