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

VBA Discussion :

Imprimer seulement les pages repondant a un critere


Sujet :

VBA

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Points : 24
    Points
    24
    Par défaut Imprimer seulement les pages repondant a un critere
    Bijour a tous

    Voici ce que je desire faire:
    j'ai pleins de feuilles, et je souhaite imprimer seulement celles qui repondent a un critere concernant leur nom (la propriete right est egale a un certain mot).
    Treve de bla bla, voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For Each Sh In ActiveWorkbook.Worksheets
            If Right(Sh.Name, 2) = " m" Then
                ZoneImpr "A", 1, "S", 10, Sh
            End If
    Next Sh
    ou Zoneimpr est dans un module:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub ZoneImpr(ColBeg As String, LiBeg As Integer, ColEnd As String, LiEnd As Integer, _
    PrintSheet As Excel.Worksheet)
        PrintZon = Range(Cells(LiBeg, ColBeg), Cells(LiEnd, ColEnd)).Address
        PrintSheet.PageSetup.PrintArea = PrintZon
    End Sub

    Voila j'aimerais lancer la boite de dialogue imprimer d'Excel pour que l'utilisateur regle ce qu'il veut, et quand il clique sur ok ca n'imprime que les feuilles retenues.

    Donc je pense que je ne suis pas loin, il me manque seulement le code pour stocker les feuilles selectionnees dans une variable.

    Merci d'avance pour vos precieuses idees

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Citation Envoyé par florent149
    il me manque seulement le code pour stocker les feuilles selectionnées dans une variable
    Tu commences par définir tes zones d'impression pour chaque feuille puis tu crées un tableau de tes noms de feuilles et, dans une boucle, tu imprimes tour à tour les feuilles de ton tableau.
    Pour ton tableau, utilises Redim Preserve. Pour connaître sa taille, LaTaille = Ubound (TheTableau). Pour le reste, enregistre une macro, simplifie le code et utilise-le pour imprimer chaque feuille de ton tableau.
    Enfin, si tu as un problème, propose-nous queuq'chose

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Points : 24
    Points
    24
    Par défaut
    Je ne suis pas sur que ca reponde exactement a mon attente, mais je me trompe peut etre... En effet si je fait comme tu dis Ousk', est ce que j'aurais ma fenetre d'impression pour toutes les feuilles que j'aurais selectionne?

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Qu'appelles-tu "Fenêtre d'impression" ? L'aperçu avant impression ?
    Pour répondre à la question : Tu peux sélectionner toutes les feuilles de calculs que tu veux éditer dans l'ordre que tu souhaites et demander un aperçu de ces feuilles ou les éditer directement (Imprimer : Feuilles sélectionnées)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Select
    ActiveWindow.SelectedSheets.PrintPreview 'Aperçu
     
    'Edition
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Preview:=True, Collate:= True
    Quel est ton pb ?

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Points : 24
    Points
    24
    Par défaut
    Hello Ousk' et les autres

    desole c'etait effectivement pas tres clair. Par fenetre d'impression j'entend fenetre que l'on a dans fichier->imprimer, et ceci afin que l'utilisateur puisse choisir l'imprimante, le nombre d'exemplaires...

    Donc l'idee de l'array est a developper, mais comment fait on pour ajouter a chaque tour de ma boucle For les feuilles repondant au critere dans le tableau?
    Deole je ne sais vraiment pas manipuler les arrays et je ne trouve pas ce que je veux dans l'aide...

    Voila et apres j'aurais juste a faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWindow.SelectedSheets.PrintOut Copies:=1
    Merki

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    j'espere que cet exemple pourra t'aider


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim Ws As Worksheet
     
    For Each Ws In Sheets(Array("Feuil1", "Feuil3", "Feuil7"))
        Ws.Activate
        Application.Dialogs(xlDialogPrint).Show
    Next Ws


    bonne journée
    michel

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Hello Silky,
    J'ai compris le pb de florent et ne sais pas comment le résoudre Peut-être as-tu une solution...
    Il souhaite sélectionner un groupe de feuilles sélectionnées au fur et à mesure et afficher un aperçu avant impression.
    Je mets mon idée (qui n'a jamais fonctionné ) que j'aimerais aussi pouvoir utiliser d'une manière ou d'une autre (!)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim i
    Dim LeTableau()
        For i = 1 To 3 'simule la sélection de plusieurs feuilles par l'utilisateur
            ReDim Preserve LeTableau(i)
            LeTableau(i) = "Feuil" + CStr(i)
        Next
    
        For i = 1 To UBound(LeTableau) 'reconstitue la liste des feuilles
            LaListe = LaListe + LeTableau(i) + Chr(34) + ", " + Chr(34)
        Next
        LaListe = Left(LaListe, Len(LaListe) - 4) ' un ", " de trop, on efface
        Sheets(Array(LaListe)).Select 'à la place de la ligne suivante
        'Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Select
        ActiveWindow.SelectedSheets.PrintPreview
    "On" compte (une fois de plus) sur toi Par avance, merci

    Edit
    En rouge, ce qui ne fonctionne pas

  8. #8
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Points : 24
    Points
    24
    Par défaut
    Hello Ousk', hello Michel

    Merci bien de vous pencher sur mon probleme. Pour Michel, dsl si je n'ai pas ete tres clair mais ce que je veux faire, Ousk l'a presque compris c'est selectionner des feuilles au fur et a mesure, en les rajoutant dans un tableau par exemple, et apres lancer la fenetre que l'on a par fichier->imprimer... et lorsque l'on clique sur imprimer, ca imprime toutes les feuilles que j'aurais selectionne.

    Donc il y a juste a rajouter dans le code suivant (dans le If) une maniere d'ajouter la feuille a un tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For Each Sh In ActiveWorkbook.Worksheets
            If Right(Sh.Name, 2) = " m" Then
                ZoneImpr "A", 1, "S", 10, Sh
            End If
    Next Sh
    et ensuite j'aurais ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Select
    Application.Dialogs(xlDialogPrint).Show

    Avec peut etre un bout de code pour dire que ce qui est a imprimer est la selection en cours
    Merki

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    C'est bien ce que j'avais compris, seulement
    Array(Selection(1), Selection(2), Selection(3)) ne fonctionne pas

  10. #10
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Points : 24
    Points
    24
    Par défaut
    oui j'ai juste dit "presque compris" car en fait je ne veux pas d'apercu avant impression, je veux juste imprimer, en passant par la fenetre d'impression. Mais bon de toute facon la difficulte n'est pas la!

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Oui, mais tu veux sélectionner tes feuilles... Si tu veux les sélectionner dans la boîte de dialogue Excel, alors... ta question était mal posée Et toc !

  12. #12
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Points : 24
    Points
    24
    Par défaut
    C'est pas vraiment que je veux les selectionner dans la boite de dialogue d'Excel, je pensais juste que si j'arrivais a selectionner les feuilles a imprimer et a cactiver par le code l'option "imprimer la selection" c'etait bon. Mais en fait je me rends compte que c'est presque une autre solution que de creer un array...

  13. #13
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Points : 24
    Points
    24
    Par défaut
    Bon je vais essayer de reformuler un peu mon probleme car la je sens que la discussion part un peu en cacahuete...

    Y a t'il un equivalent au ctrl-click en Vba pour selectionner plusieurs feuilles, ou faut il forcement passer par Worksheets(array... ?

    Si il faut passer par l'array, comment dans une boucle "For each Sh in workbook.Sheets" rajouter au fur et a mesure des feuilles dans ce array?

    Merci!

  14. #14
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Points : 24
    Points
    24
    Par défaut
    Si tu veux les sélectionner dans la boîte de dialogue Excel

    Je viens de relire ca Ousk', et ca m'a fait tilt. je me demandais si c'etait possible (par le code) de faire ca: selectionner certaines feuilles DANS la boite de dialogue excel?

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Voilà ! Youpi ! Tu poses précisemment la question que j'ai posée hier à 11h01, si tu lis bien. Pas trop tôt !
    Je donnais, hier à 11h01, l'exemple de ce que tu veux réaliser, mais qui, hélas, ne marche pas...
    Et je souhaitais en même temps qu'un gentil modérateur ou rédacteur ou crack de VBA comme y'en a tant, veuille bien nous offrir une solution.

    Bref, on en est toujours au même point

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tiens, je soumets ça à ta réfexion, si tu peux l'exploiter...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For Each sh In Workbooks("1").Windows(1).SelectedSheets
    	If sh.Name = "Feui1" Then
    		MsgBox "Feuil1 est sélectionnée"
    	End If
    Next
    Une question : comment les utilisateurs sélectionnent-ils leurs feuilles ?

  17. #17
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Points : 24
    Points
    24
    Par défaut
    Ca sort de l'aide ce bout de code non?
    Ben je ne vois pas trop ce que je peux en faire car ca ne me dit pas comment selectionner les feuilles. Car une fois que je les aurais selectionne les feuilles, ca roulera parfaitement!
    Quand a ca:

    Une question : comment les utilisateurs sélectionnent-ils leurs feuilles ?
    J'avoue ne pas comprendre car les feuilles sont a selectionner dans le code, selon le nom qu'elles ont. (Si la droite de leur nom est summary, alors on retient la feuille)

    Argh...je sens que c'est pas loin!

  18. #18
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ma question n'était pourtant pas hors sujet :
    Si ta feuille est sélectionnée par le nom, alors pourquoi ne pas faire une boucle sur la liste des noms de feuilles sélectionnées et lancer l'impression dans la boucle, feuille par feuille ?
    Vouais, je vois, je parie que tu veux des N° de pages qui se suivent, en plus Y'en a toujours qui veulent tout

  19. #19
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Points : 24
    Points
    24
    Par défaut
    Euh...Je capte plus trop la t'as reussi a m'embrouiller sur mon propre code Ousk'!
    C'est un peu ce que je fais non de faire une boucle sur le nom des feuilles? Et puis avec la boucle que j'ai fait j'ai juste a rajouter un printout dans chaque if et ca m'imprimera les feuilles, mais ce n'est pas exactement ce que je veux... je sais je suis exigant!
    Non ce qu'il faudrait c'est juste simuler le controle click a chaque tour de boucle non?

  20. #20
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Pour répondre à ta question, là, tout de suite,

    Bon week-end !

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

Discussions similaires

  1. [XL-2010] Ouvrir tous les pdf d'un dossier et imprimer uniquement les pages 3 et 5 par exemple.
    Par rastaquere dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/03/2015, 10h50
  2. Imprimer différemment les pages d'un document
    Par Over.Salsh dans le forum VBA Word
    Réponses: 3
    Dernier message: 25/09/2014, 11h36
  3. Imprimer toutes les pages d'un USF Multipages
    Par Didier Gonard dans le forum Contribuez
    Réponses: 0
    Dernier message: 02/10/2009, 13h14
  4. window.print() imprime seulement une page sous FireFox
    Par djolof dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 09/09/2009, 14h49
  5. imprimer sans les pages blanches
    Par SAINT-BERNARD dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 28/08/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