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 :

Impression conditionnelle des feuilles


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Par défaut Impression conditionnelle des feuilles
    Bonjour

    Si vous pouvez m'aider à résoudre ce prob.

    Je veux imprimer la zone "A1:AM164" dans une feuille nommée TVAT

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("TVAT").PageSetup.PrintArea = "A1:AM164"
    de plus:

    si la case P8 de la feuille TVAT est égale à 1:
    je veux imprimer une zone d'une feuille nommée DEDT1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("DEDT1").PageSetup.PrintArea = "$A$1:$AO$" & Range("AM189").End(xlUp).Row
    si la case P8 de la feuille TVAT est égale à 2:
    je veux imprimer une zone d'une feuille nommée DEDT2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("DEDT2").PageSetup.PrintArea = "$A$1:$AO$" & Range("AM189").End(xlUp).Row
    si la case P8 de la feuille TVAT est égale à 3:
    je veux imprimer une zone d'une feuille nommée DEDT3

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("DEDT3").PageSetup.PrintArea = "$A$1:$AO$" & Range("AM189").End(xlUp).Row
    si la case P8 de la feuille TVAT est égale à 4:
    je veux imprimer une zone d'une feuille nommée DEDT4

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("DEDT4").PageSetup.PrintArea = "$A$1:$AO$" & Range("AM189").End(xlUp).Row

    J'ai essayé ce code mais qq chose ne marche pas:


    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
    Sub LATVATPDF()
     
    Sheets("TVAT").PageSetup.PrintArea = "A1:AM164"
     
    Select Case Sheets("TVAT").Range("P8").Value
    Case 1
    Sheets("DEDT1").PageSetup.PrintArea = "$A$1:$AO$" & Range("AM189").End(xlUp).Row
    Case 2
    Sheets("DEDT2").PageSetup.PrintArea = "$A$1:$AO$" & Range("AM189").End(xlUp).Row
    Case 3
    Sheets("DEDT3").PageSetup.PrintArea = "$A$1:$AO$" & Range("AM189").End(xlUp).Row
    Case 4
    Sheets("DEDT4").PageSetup.PrintArea = "$A$1:$AO$" & Range("AM189").End(xlUp).Row
     
    Sheets(Array("TVAT", "DEDT1", "DEDT2" _
                , "DEDT3", "DEDT4")).PrintOut Copies:=1, ActivePrinter:="PDFCreator on Ne01:", Collate:=True
     
    End Sub

    le début de code est coloré par le jaune:

    Sub LATVATPDF()


    Merci d'avance

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    en dehors de la validité du code que je n'ai pas le temps de tester, il te manque le end select

    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
     
    Select Case Sheets("TVAT").Range("P8").Value
    Case 1
    Sheets("DEDT1").PageSetup.PrintArea = "$A$1:$AO$" & Range("AM189").End(xlUp).Row
    Case 2
    Sheets("DEDT2").PageSetup.PrintArea = "$A$1:$AO$" & Range("AM189").End(xlUp).Row
    Case 3
    Sheets("DEDT3").PageSetup.PrintArea = "$A$1:$AO$" & Range("AM189").End(xlUp).Row
    Case 4
    Sheets("DEDT4").PageSetup.PrintArea = "$A$1:$AO$" & Range("AM189").End(xlUp).Row
     
    END SELECT 
     
    Sheets(Array("TVAT", "DEDT1", "DEDT2" _
                , "DEDT3", "DEDT4")).PrintOut Copies:=1, ActivePrinter:="PDFCreator on Ne01:", Collate:=True
     
    End Sub

  3. #3
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    bonjour,


    Fait attention, comme on te la déjà dis sur ton autre post, lorsque tu utilise des propriétés de feuilles sans préciser la feuille par exemple
    tu travaille avec la feuille active.
    tu peu utiliser With pour éviter de répeter un préfixe...:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ...
    Width Sheets("DEDT1")
    Select Case Sheets("TVAT").Range("P8").Value
    Case 1
    .PageSetup.PrintArea = "$A$1:$AO$" & .Range("AM189").End(xlUp).Row
    Case 2
    ....
    End select
    End Width

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Par défaut
    Encore merci infiniment M. JackOuYA, comme je remercie aussi M. alsimbad

    Suite à vos remarques et propositions j'ai fini par ce code qui marche à 75%

    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
    Sub Image7_Clic()
     
    Sheets("TVAT").PageSetup.PrintArea = "A1:AM164"
     
     
    With Sheets("TVAT")
     
    Select Case Sheets("TVAT").Range("P8").Value
    Case 1
    Sheets("DEDT1").PageSetup.PrintArea = "$A$1:$AO$" & Sheets("DEDT1").Range("AM189").End(xlUp).Row
    Case 2
    Sheets("DEDT2").PageSetup.PrintArea = "$A$1:$AO$" & Sheets("DEDT2").Range("AM189").End(xlUp).Row
    Case 3
    Sheets("DEDT3").PageSetup.PrintArea = "$A$1:$AO$" & Sheets("DEDT3").Range("AM189").End(xlUp).Row
    Case 4
    Sheets("DEDT4").PageSetup.PrintArea = "$A$1:$AO$" & Sheets("DEDT4").Range("AM189").End(xlUp).Row
     
    End Select
    End With
     
    Sheets(Array("TVAT", "DEDT1", "DEDT2" _
                , "DEDT3", "DEDT4")).PrintOut Copies:=1, ActivePrinter:="PDFCreator on Ne01:", Collate:=True
     
     
    End Sub

    Le seul problème est que le code m'imprime la première ligne des 3 autres feuilles même si la case AM189 de ces feuilles est vide de plus si la case P8 de la feuille TVAT = 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select Case Sheets("TVAT").Range("P8").Value
    il faut m'imprimer la feuille TVAT et la zone

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Case 1
    Sheets("DEDT1").PageSetup.PrintArea = "$A$1:$AO$" & Sheets("DEDT1").Range("AM189").End(xlUp).Row
    de la feuille DEDT1

    si la case P8 de la feuille TVAT = 2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select Case Sheets("TVAT").Range("P8").Value
    il faut m'imprimer la feuille TVAT et la zone

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Case 2
    Sheets("DEDT1").PageSetup.PrintArea = "$A$1:$AO$" & Sheets("DEDT1").Range("AM189").End(xlUp).Row
    de la feuille DEDT2

    .......

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Par défaut
    Après plusieurs tests (en utilisant des probabilités et plusieurs possibilités en tant que nul biensûr en VBA ) je viens de trouver une solution avec ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Image7_Clic()
     
    Sheets("TVAT").PageSetup.PrintArea = "A1:AM164"
    If Sheets("TVAT").Range("P8").Value = 1 Then Sheets("DEDT1").PageSetup.PrintArea = "$A$1:$AO$" & Sheets("DEDT1").Range("AM189").End(xlUp).Row: Sheets(Array("TVAT", "DEDT1")).PrintOut Collate:=True
    If Sheets("TVAT").Range("P8").Value = 2 Then Sheets("DEDT2").PageSetup.PrintArea = "$A$1:$AO$" & Sheets("DEDT2").Range("AM189").End(xlUp).Row: Sheets(Array("TVAT", "DEDT2")).PrintOut Collate:=True
    If Sheets("TVAT").Range("P8").Value = 3 Then Sheets("DEDT3").PageSetup.PrintArea = "$A$1:$AO$" & Sheets("DEDT3").Range("AM189").End(xlUp).Row: Sheets(Array("TVAT", "DEDT3")).PrintOut Collate:=True
    If Sheets("TVAT").Range("P8").Value = 4 Then Sheets("DEDT4").PageSetup.PrintArea = "$A$1:$AO$" & Sheets("DEDT4").Range("AM189").End(xlUp).Row: Sheets(Array("TVAT", "DEDT4")).PrintOut Collate:=True
     
    End Sub

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

Discussions similaires

  1. [XL-2007] Macro pour Impression conditionnelle sur une autre feuille
    Par titi08 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 01/02/2015, 16h49
  2. [XL-2010] Pb Application masquée et aperçu avant impression des feuilles
    Par Lulugant dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 26/09/2014, 19h09
  3. impression d'une feuille excel contenant des label
    Par simon80 dans le forum Excel
    Réponses: 1
    Dernier message: 27/11/2011, 08h48
  4. Impression d'une feuille avec des dessins
    Par coco21 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/08/2007, 08h40
  5. Impression pour des feuilles de classeur
    Par elfia dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/05/2007, 18h44

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