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 :

code pour impression [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 211
    Par défaut code pour impression
    Bonsoir le forum,

    j'ai ce code qui m'imprime un tableau de B1 à F104 mais j'ai des données que jusqu'a F20 et cela peut varier, donc ma question est que faut il ajouter pour n'imprimer que jusqu'au lignes remplis
    merci
    jacky
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Essai()
     
        Range("B1:F104").Select
        ActiveWorkbook.Worksheets("SNF").Sort.SortFields.Clear
        ActiveSheet.PageSetup.PrintArea = "$B$1:$F$104"
        ActiveWindow.SelectedSheets.PrintOut Copies:=3, Collate:=True, _
            IgnorePrintAreas:=False
        Range("B11").Select
    End Sub

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Essais comme cela (Remplaces Feuil1 par le bon nom de la feuille ou utilise Me)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Essai()
     
        Range("B1:F104").Select
        ActiveWorkbook.Worksheets("SNF").Sort.SortFields.Clear
        ActiveSheet.PageSetup.PrintArea = Sheets("Feuil1").UsedRange.Address
        ActiveWindow.SelectedSheets.PrintOut Copies:=3, Collate:=True, _
            IgnorePrintAreas:=False
        Range("B11").Select
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 211
    Par défaut
    Bonsoir le forum,jFontaine,

    j'ai essayé le code et le problème, c'est que j'ai d'autres tableau à coté qui vont de G1 à M104 etc... ( 8 tableau de même format mais pas tous rempli de la même façon, il y en a qui s'arretent à la ligne 20 et d'autres à la 40 et plus )donc quand j'utilise ton code, il me met tous les tableau les uns à coté des autres et ce que je voudrais c'est que l'impression n'imprime que les lignes rempli et cela pour chaque code de chaque tableau
    merci
    jacky

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonsoir,

    Il y a plusieurs solutions qui peuvent convenir suivant les règles qui définissent le bloc à imprimer.

    - Pour imprimer toute la place utilisé sur une feuille on peut utiliser UsedRange.

    - Pour imprimer un bloc de données contigüe (sans rencontrer de cellules vides), on pourra utiliser Range("F1").CurrentRegion.

    - Enfin pour trouver la dernière ligne non vide dans une colonne à partir d'une cellule [F1].End(xlDown).Row.
    Du coup la plage s'écrirait Range("B1:F" & [F1].End(xlDown).Row).

    voir Faq

  5. #5
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    ok, dans ce cas, utilises CurrentRegion

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Essai()
     
        Range("B1:F104").Select
        ActiveWorkbook.Worksheets("SNF").Sort.SortFields.Clear
        ActiveSheet.PageSetup.PrintArea = Sheets("Feuil1").Range("B1").CurrentRegion.Address
        ActiveWindow.SelectedSheets.PrintOut Copies:=3, Collate:=True, _
            IgnorePrintAreas:=False
        Range("B11").Select
    End Sub

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 211
    Par défaut
    re,
    non cela m'imprime toujours 3 page au lieu d'une
    merci
    jacky

  7. #7
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Peut etre en faisant plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range("B1").CurrentRegion.PrintOut Copies:=1, Collate:=True

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 211
    Par défaut
    Bonjour le forum, Jfontaine,BlueMonkey,

    voici donc le dernier code par rapport à ce que vous m'avez dit et cela m'imprime toujours le tableau de B1 à F104
    merci
    jacky
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Essai()
     
        Range("B1").CurrentRegion.PrintOut Copies:=1, Collate:=True
        Range("B11").Select
    End Sub
    Edit: a savoir que j'ai des formules dans les colonnes B, C et D

  9. #9
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonsoir,

    Essayer avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        With ActiveSheet.PageSetup
            .PrintArea = Sheets("Feuil1").Range("B1:F" & [F1].End(xlDown).Row).Address
            .Order = xlDownThenOver
            .FitToPagesWide = 1
            .FitToPagesTall = 1
            .PrintErrors = xlPrintErrorsDisplayed
        End With
     
        ActiveSheet.PrintOut Copies:=1, Collate:=True

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 211
    Par défaut
    Bonjour le forum, jFontaine,BlueMonkey,

    BlueLonkey, cest presque cela sauf que la le code me fait imprimer de B1 à F5 alors que j'ai des données jusqu'à F20
    merci
    jacky
    Re, en fait, cela me prend la 1ère cellule B1 et s'arrêtent aux Titre de mon Tableau Ligne F et colonne 5

  11. #11
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,

    Citation Envoyé par jacfld49 Voir le message
    ....
    BlueLonkey, cest presque cela sauf que la le code me fait imprimer de B1 à F5 alors que j'ai des données jusqu'à F20..
    et tu as un "trou" en F6 ?

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 211
    Par défaut
    Bonjour a tous,

    Non, je n'ai pas de trou, j'ai bien des données à partir de B6 et jusqu'à F20,
    en colonne B, C et D, des formules et en colonnes E et F des chiffres que j'entre manuellement
    merci
    jacky

  13. #13
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut
    Bonjours à tous,

    je me permets d'intervenir...

    J'ai compris : on imprime de la colonne "B" à la colonne "F" depuis la ligne "1" à la dernière ligne contenant quelque chose.

    je te propose de nous dire quelle est la colonne (B à F) obligatoirement la plus remplie vers le bas si elle existe.


    Rq : tu parles de "B6" dans le dernier post.

    ESVBA

    Autre solution :
    • inséres une colonne vide en "G" que l'on masque et utilises "Currentregion" vu plus haut.



    A tout hazard, les autres pages 2-3 correspondent à quelles cellules ?
    Ce n'est pas un problème de saut de page ?


    ESVBA

  14. #14
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Je viens rajouter mon grain de sel histoire de relever la soupe.
    Si on peut s’appuyer sur la dernière ligne renseignée de la colonne F, on doit pouvor coder
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim Ws As Worksheet
    Dim MaPlage As Range
        Set Ws = Worksheets("Feuil1")
        Derlig = Ws.Range("F" & Ws.Rows.Count).End(xlUp).Row
        Set MaPlage = Ws.Range("B1:F" & Derlig)
        Ws.PageSetup.PrintArea = MaPlage.Address
        Ws.PrintOut
    Cordialement.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 211
    Par défaut
    Bonjour ESVBA,

    Les Colonnes B et F sont rempli identiquement en même temps, j'ai essayer d'ajouter une colonne G dans le code et du coup cela m'imprime bien une page mais de la colonne B1 à G104 donc cela ne va pas
    merci
    jacky

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 211
    Par défaut
    Bonjour gFZT82,

    Merci beaucoup, cela fonctionne
    super
    jacky

    Re le Forum,

    Le code donnée par gFZT82 fonctionne à merveille mais j'ai un autre problème sur un tableau à coté à qui je ne peux pas attribué le même code car mon tableau est de CM1 à CW104 mais le problème est que j'ai des formules dans toutes les colonnes sauf la colonnes CP mais le quand j'utilise le même code, du coup, je n'ai le tableau que de CM1 à CP 20 ce qui est logique mais comment faire pour garder le tableau de CM1 à CW104 en ayant la dernière ligne vide dans la colonne CP
    merci
    PS: j'ai enlevé résolu pour reprendre ce fil plutot que d'en ouvrir un autre, j'espère que j'ai bien fait
    merci
    jacky

  17. #17
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Re,

    C’est la même logique.
    Tu détermines la dernière ligne renseignée avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Derlig = Ws.Range("CP" & Ws.Rows.Count).End(xlUp).Row
    Et tu sélectionnes ta plage avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set MaPlage = Ws.Range("CM1:CW" & Derlig)
    Cordialement.

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 211
    Par défaut
    Re gFZT82,

    merci, je venais de comprendre quand j'ai vu ta réponse et je te remercie beaucoup, j'ai une dernière question , que faut il ajouter pour imprimer 3 fois la même feuille,:
    est ce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ws.PrintOut Copies:=, Collate:=True
    merci
    jacky

  19. #19
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Re.

    En effet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ws.PrintOut Copies:=<nombre de fois qu il faut imprimer la feuille>, Collate:=True

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 211
    Par défaut
    Re,

    merci à tous pour vos réponse qui m'ont super aidées

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. code pour impression
    Par jacfld49 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/03/2010, 20h13
  2. Code pour impression
    Par elric dans le forum VBA Access
    Réponses: 1
    Dernier message: 06/11/2009, 16h49
  3. [PC-MS] Code pour modifier la police d'impression
    Par sharcky dans le forum Cobol
    Réponses: 11
    Dernier message: 30/08/2007, 10h35
  4. [VB.NET] code pour afficher apercu avant impression
    Par DonJR dans le forum Windows Forms
    Réponses: 1
    Dernier message: 14/07/2006, 20h54
  5. Solution pour impression de codes à barres
    Par KRis dans le forum Composants VCL
    Réponses: 2
    Dernier message: 31/03/2006, 16h58

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