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 :

ne pas imprimer une feuille si une case est vide


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Points : 32
    Points
    32
    Par défaut ne pas imprimer une feuille si une case est vide
    Bonsoir


    Je veux ajouter à ce code une modification dans la mesur à:

    Ne pas imprimer la feuille DEDT1 si la case AG7 de DEDT1 est vide
    Ne pas imprimer la feuille DEDT2 si la case AG7 de DEDT2 est vide
    Ne pas imprimer la feuille DEDT3 si la case AG7 de DEDT3 est vide
    Ne pas imprimer la feuille DEDT4 si la case AG7 de DEDT4 est vide


    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
    Merci d'avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    Bonsoir kazannova,

    Peut-être une façon de faire :
    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
    Sub Image7_Clic()
    Dim Sh As Worksheet
        With Sheets("TVAT")
            .PageSetup.PrintArea = "A1:AM164"
            With .Range("P8")
                If .Value >= 1 And .Value <= 4 Then
                    Set Sh = Sheets("DEDT" & .Value)
                    Sh.PageSetup.PrintArea = "$A$1:$AO$" & Sh.Range("AM189").End(xlUp).Row
                    If Not IsEmpty(Sh.Range("AG7")) Then
                        Sheets(Array("TVAT", Sh.Name)).PrintOut Collate:=True
                    Else
                        Sheets("TVAT").PrintOut
                    End If
                End If
            End With
        End With
    End Sub
    Cordialement,
    Didier_mDF

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Points : 32
    Points
    32
    Par défaut
    Bonsoir M. Dedier

    Le code m'imprime la première ligne de la feuille DEDT* même si la case AG7 est vide, comme c'était le cas avec le premier code.

    Merci

  4. #4
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour à tous,

    Kazannova, ça serait bien que tu relises tes ennoncés
    Citation Envoyé par kazannova Voir le message
    Ne pas imprimer la feuille DEDT1 si la case AG7 de DEDT1 est vide
    Citation Envoyé par kazannova Voir le message
    Le code m'imprime la première ligne de la feuille DEDT* même si la case AG7 est vide
    Quel est le bon ?
    .
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par fring Voir le message
    Bonjour à tous,

    Kazannova, ça serait bien que tu relises tes ennoncés


    Quel est le bon ?
    .
    bonjour Fring

    j'ai volu dire que:


    dans mon code j'imprime toujours la feuille "TVAT" plus une zone d'une autre feuille soit DEDT1 soit DEDT2 soit DEDT3 soit DEDT4 : ça dépond de chiffre existant dans la case "P8" de la feuille "TVAT"

    Mais moi je ne veux pas imprimer les feuilles annexes (DEDT1 DEDT2 DEDT3 DEDT4) si leurs cases AG7 sont vides, juste imprimer la feuille "TVAT"

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je suppose que ça pourrait être quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Sheets("TVAT").Range("P8").Value = 1 And Sheets("DEDT1").Range("AG7").value <> "" _
    Then Sheets("DEDT1").PageSetup.PrintArea = "$A$1:$AO$" & Sheets("DEDT1").Range("AM189") _
    .End(xlUp).Row: Sheets(Array("TVAT", "DEDT1")).PrintOut Collate:=True

  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
    Vous y comprenez quelque chose ? Pour ma part, j'ai du mal
    Bon, si je reformule, tu as
    - Une cellule B8 de la feuille TVAT contenant un N° 1, 2, 3 ou 4
    - Si et seulement si dans la feuille DEDT correspondante à ce N°, la cellule AG7 est renseignée
    tu veux
    - Imprimer la feuille TVAT

    Est-ce bien ça ?

  8. #8
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour tlm ,

    Non Ousk ce n'est pas exactement ça, la feuille TVAT est toujours imprimée et à TVAT est associée la feuille DEDTx (dont le numéro est renseigné dans la cellule P8 de la feuille TVAT) seulement si la cellule AG7 de cette feuille DEPT contient une valeur.

    C'est exactement ce que fait le code proposé par Didier (mDF)
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  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
    Hello fring,
    Tu es certain ? Sicécla feuille TVAT elle doit toujours être imprimée alors que vient faire cette quadrupe condition ?
    Ne pas imprimer la feuille DEDT1 si la case AG7 de DEDT1 est vide
    Ne pas imprimer la feuille DEDT2 si la case AG7 de DEDT2 est vide
    Ne pas imprimer la feuille DEDT3 si la case AG7 de DEDT3 est vide
    Ne pas imprimer la feuille DEDT4 si la case AG7 de DEDT4 est vide

  10. #10
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Hello fring,
    Tu es certain ? Sicécla feuille TVAT elle doit toujours être imprimée alors que vient faire cette quadrupe condition ?
    et à TVAT est associée la feuille DEDTx si ...

    Je changerais juste un truc dans le code de myDearFriend
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not IsEmpty(Sh.Range("AG7")) Then
    J'écrirais plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Sh.Range("AG7") <> "" Then
    Parce que même si il n'y a pas de valeur dans la cellule AG7 mais qu'elle contient une formule elle ne sera pas considérée comme vide
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    Bonsoir,
    Citation Envoyé par fring Voir le message
    et à TVAT est associée la feuille DEDTx si ...

    Je changerais juste un truc dans le code de myDearFriend
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not IsEmpty(Sh.Range("AG7")) Then
    J'écrirais plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Sh.Range("AG7") <> "" Then
    Parce que même si il n'y a pas de valeur dans la cellule AG7 mais qu'elle contient une formule elle ne sera pas considérée comme vide
    Bien vu !
    Tout à fait d'accord fring, on peut imaginer que c'est ce qui est arrivé à kazannova lorsqu'il a testé le code.

    Cordialement,

  12. #12
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Points : 32
    Points
    32
    Par défaut
    Bravo vous êtes vraiment des héros.
    le code marche 100%
    Je vous remercie tous: Didier_mDF, jacques_jean, ouskel'n'or et Fring

    le code est le suivant:

    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
    Dim Sh As Worksheet
        With Sheets("TVAT")
            .PageSetup.PrintArea = "A1:AM164"
            With .Range("P8")
                If .Value >= 1 And .Value <= 4 Then
                    Set Sh = Sheets("DEDT" & .Value)
                    Sh.PageSetup.PrintArea = "$A$1:$AO$" & Sh.Range("AM189").End(xlUp).Row
                    If Sh.Range("AG7") <> "" Then
                        Sheets(Array("TVAT", Sh.Name)).PrintOut Collate:=True
                    Else
                        Sheets("TVAT").PrintOut
                    End If
                End If
            End With
        End With

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

Discussions similaires

  1. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  2. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  3. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  4. remplacer une feuille par une feuille du meme nom
    Par florent149 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/08/2006, 16h00
  5. VBA : copier une image d'une feuille excel à une autre
    Par Equus dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/12/2005, 14h01

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