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 :

[VBA-E] Impression page paire sur plusieurs onglets


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut [VBA-E] Impression page paire sur plusieurs onglets
    Bonjour,

    Je suis en train de séché sur mon code et donc je me permets de vous solliciter car je pense que c'est un truc tout con.

    Je suis sur un fichier Excel présentant 13 onglets. Je souhaite via ma macro lancer une impression sur 5 onglets. Le truc c'est que je souhaite avoir uniquement les pages impaires dans un premier temps puis les paires. Ma macro me permets de le faire en deux temps mais je n'arrive pas à lui faire comprendre qu'elle doit s'exécuter sur certains onglets uniquement.

    Bref, disait Pépin , voici mon 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Sub Impression()
    '
    ' Impression Macro
    ' Macro enregistrée le 15/02/05 par Nicolas BAUDRY
    '
     
     
     
     Sheets(Array("Impression", "Chiffres Clés", "Contacts", "Actions", "Produits")).Select
     
     Dim i&, NbPages&, rep, PremierePage&
      rep = MsgBox("Cliquer sur :" & vbLf & _
                   "- Oui pour imprimer les pages paires" & vbLf & _
                   "- Non pour imprimer les pages impaires" & vbLf & _
                   "- Annuler pour quitter sans rien faire.", vbYesNoCancel)
      If rep = vbCancel Then Exit Sub
      PremierePage = IIf(rep = vbYes, 2, 1)
      NbPages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
      For i = PremierePage To NbPages Step 2
        ActiveSheet.PrintOut From:=i, To:=i, Preview:=False
      Next i
     
     
        Sheets("Fiche Client").Select
        ActiveSheet.Cells(1, 1).Select
     
     
    End Sub
    Merci d'avance pour votre aide

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    Personne peut m'aider??


  3. #3
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    activesheet n'imprime que la feuille courante non ?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    Ouais tu as raison Bidou !!

    Le truc c'est que j'ai essayé ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWindow.SelectedSheets.PrintOut From:=i, To:=i, Preview:=True, collate:=True
    Mais rien n'y fait. A l'aperçu avant impression, il me met bien mon nbre de page impaire mais il ne m'imprime que la 1ère !!!

    Help SVP

  5. #5
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWindow.SelectedSheets(i).PrintOut.....

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    Bidou merci pour l'aide mais ca ne marche pas mieux.

    Maintenant il ne me propose que le premier onglet à imprimer???

  7. #7
    120
    120 est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 62
    Points
    62
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      For i = PremierePage To NbPages Step 2
        Sheets(i).Select
        ActiveSheet.PrintOut  Preview:=False
      Next i
    Non?

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    120 : Non plus

    Il me prend le premier onglet de mon fichier; il ne prend même pas le premier onglet de la sélection!

    Voici mon code dans son ensemble et je veux que sur les 15 onglets de mon fichier seules les pages impaires des onglets sélectionnés soient imprimées.

    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
    26
    27
    28
    29
    30
    Sub Impression()
    '
    ' Impression Macro
    ' Macro enregistrée le 15/02/05 par Nicolas BAUDRY
    '
     
     
     
     Sheets(Array("Impression", "Chiffres Clés", "Contacts", "Actions", "Produits")).Select
     
     
     Dim i&, NbPages&, rep, PremierePage&
      rep = MsgBox("Cliquer sur :" & vbLf & _
                   "- Oui pour imprimer les pages paires" & vbLf & _
                   "- Non pour imprimer les pages impaires" & vbLf & _
                   "- Annuler pour quitter sans rien faire.", vbYesNoCancel)
      If rep = vbCancel Then Exit Sub
      PremierePage = IIf(rep = vbYes, 2, 1)
      NbPages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
      For i = PremierePage To NbPages Step 2
     
        ActiveWindow.SelectedSheets(i).PrintOut From:=i, To:=i, Preview:=True, collate:=True
     
      Next i
     
        Sheets("Fiche Client").Select
        ActiveSheet.Cells(1, 1).Select
     
     
    End Sub
    J'y arrive pas

    [Edité par Thierry AIM; Attention de ne pas désactiver le bbcode dans les messages comportant des balises]

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    Bon si je comprends bien mon post ne vous emballe pas

    Je pensais que c'était simple mais a priori pas autant qua çà et par conséquent je comprends pourquoi je n'ai pas réussi

    Merci quand même à Bisou et 120 pour leur aide.



    P.S. : Désolé Thierry AIM, je ne savais pas.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    Bon si je comprends bien mon post ne vous emballe pas

    Je pensais que c'était simple mais a priori pas autant qua çà et par conséquent je comprends pourquoi je n'ai pas réussi

    Merci quand même à Bidou et 120 pour leur aide.



    P.S. : Désolé Thierry AIM, je ne savais pas.

  11. #11
    120
    120 est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 62
    Points
    62
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim feuille as worksheet
     
    for each feuille in ActiveWindow.SelectedSheets
      if (feuille.index mod 2) =1 then
          feuille.PrintOut  Preview:=False
       end if
    next
    faut pas se décourager comme ça...

    [edit] : j'ai un doute c'est les onglets impairs ou les pages impaires des onglets que tu veux ...
    j'ai l'impression que j'ai encore lu trop vite...
    Dans le second cas tu peux essayer ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim feuille As Worksheet
    For Each feuille In ActiveWindow.SelectedSheets
        i = 1
        While Err.Number = 0
            On Error Resume Next
            feuille.PrintOut i, i, False
            i = i + 2
        Wend
        On Error GoTo 0
    Next
    [/edit]

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    120 : ton code m'a fait une boucle pas joli-joli, j'ai été obligé de faire ctrl alt supp


    Bon ce n'est pas grave !!

    Ce que je veux en fait c'est sur mon fichier excel de 15 onglets imprimer uniquement les pages impaires (dans un premier temps) des onglets sélectionnés soit seulement 5 onglets sur les 15.
    Dans un deuxième temps, je veux imprimer les pages paires des onglets sélectionnés pour obtenir au final un recto-verso en impression des 5 onglets parmis les 15.

    Est ce plus clair?

    Je te remets ci dessous le code utilisé jusqu'à présent. Le pb, c'est qu'à l'aperçu avant impression il ne prend pas toutes les pages à imprimer mais uniquement la première!!!
    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
    26
    27
    28
    29
    30
    31
    Sub Impression()
    '
    ' Impression Macro
    ' Macro enregistrée le 15/02/05 par Nicolas BAUDRY
    '
     
     
     
     Sheets(Array("Impression", "Chiffres Clés", "Contacts", "Actions", "Produits")).Select
     
     
     Dim i&, NbPages&, rep, PremierePage&
      rep = MsgBox("Cliquer sur :" & vbLf & _
                   "- Oui pour imprimer les pages paires" & vbLf & _
                   "- Non pour imprimer les pages impaires" & vbLf & _
                   "- Annuler pour quitter sans rien faire.", vbYesNoCancel)
      If rep = vbCancel Then Exit Sub
      PremierePage = IIf(rep = vbYes, 2, 1)
      NbPages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
      For i = PremierePage To NbPages Step 2
     
        ActiveWindow.SelectedSheets.PrintOut From:=i, To:=i, Preview:=True, collate:=True
     
    Next i
     
     
        Sheets("Fiche Client").Select
        ActiveSheet.Cells(1, 1).Select
     
     
    End Sub

  13. #13
    120
    120 est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 62
    Points
    62
    Par défaut
    quelle est la valeur de nbPages quand tu entres dans ta boucle?
    toutes tes feuilles ont le même nombre de pages?
    As tu fait une exécution pas à pas?

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    1. Le nbre d epage est variable (c'est fonction de la fiche client choisi)

    2. Toutes les feuilles (= tous les onglets) n'ont pas le même nbre de page à imprimer.
    Parmi les 5 feuilles, les feuilles "Impression" et "Chiffres Clés" ont une seule page alors que les feuilles "Contacts", "Actions" et "Produits" ont un nbre variable de pages à imprimer

    3. Non je n'ai pas fait d'exécution pas à pas mais je m'y mets tout de suite en espérant y trouver qqchose.

    Merci de me tenir au courant en fonction des points 1 et 2 que je viens de te fournir

    Merci encore pour ton aide

  15. #15
    120
    120 est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 62
    Points
    62
    Par défaut
    Pour moi ta solution sera de ce genre là...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim feuille As Worksheet
    For Each feuille In ActiveWindow.SelectedSheets
        nbpages='résultat de ta macro qui compte les pages appliquée à l'onglet en cours
        for i=premierepage to nbpages step 2
            feuille.PrintOut i, i, False
        next
    Next

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut

    Marche toujours pas mais je laisse tomber

    je ne vais pas automatiser mes impressions et c'est tout

    Merci pour votre aide

    A t'chao

  17. #17
    120
    120 est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 62
    Points
    62
    Par défaut
    Dommage!
    As tu fait l'exécution pas à pas ?
    Si oui quelle était la valeur de nbPages ?
    Variait -elle dans la boucle ?

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    En fait la valeur de nb de page varie entre 5 (obligatoirement le minimum) et 15 pour certains clients

  19. #19
    120
    120 est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 62
    Points
    62
    Par défaut
    OK mais ce je voulais savoir c'est si ton comptage de page fonctionnait bien durant ton prog...
    tu pourrais mettre un msgbox pour vérifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Each feuille In ActiveWindow.SelectedSheets
        nbpages='résultat de ta macro qui compte les pages appliquée à l'onglet en cours
        msgbox feuille.name &": "& nbpages &" pages comptées"
        for i=premierepage to nbpages step 2
            feuille.PrintOut i, i, False
        next
    Next

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    Il me mets 1 page comptée !!

    Normal car il me prend uniquement la première page du 1er onglet (qui est constitué d'une seule page, si je mets comme premier en sélection l'onglet "Produits" (minimum 3 pages) il m'aurait annoncé pour les pages impaires 2)

    Le truc c'est qu'en mettant aperçu avant impression, en bas à gauche c'est bien écrit 1 page sur x (x étant au moins égal à 5). Et le truc n°2 c'est que le bouton "suiv." de l'aperçu est grisé et non utilisable.


    : :

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

Discussions similaires

  1. [XL-2003] Lier des champs de page de TCD sur plusieurs onglets
    Par nekhar87 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/04/2012, 14h26
  2. codage vba: recherchev sur plusieurs onglets
    Par sims92.66 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/02/2012, 15h48
  3. Réponses: 4
    Dernier message: 28/09/2006, 11h26
  4. Impression d'une page web sur plusieurs pages papier
    Par Spidyy dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 20/06/2006, 17h42
  5. Impression pages paires et impaires
    Par ely dans le forum Access
    Réponses: 1
    Dernier message: 26/01/2006, 09h44

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