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 masquer lignes sur plusieurs onglets [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Par défaut vba masquer lignes sur plusieurs onglets
    Bonjour à tous,

    j'essaie de convertir 3 onglets (en masquant les mêmes lignes sur chaque onglet) en pdf.
    La macro convertit bien en pdf avec lignes masquées uniquement pour le 1er onglet.
    Les onglets 2 et 3 ont toutes les lignes non masquées.
    J'ai fait plusieurs tentatives mais sans succès.

    Si quelqu'un a la solution cela serait sympa

    Merci et bonne journée
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Comme beaucoup de participants, je n'ouvre pas les fichiers joints.
    Il serait préférable que tu présentes ton code (entouré de balises CODE) dans un message.

    Je suppose que pour faire ce que tu souhaites, il suffirait d'appliquer aux deux autres onglets le même traitement de masquage que tu appliques à l'onglet qui fonctionne.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Par défaut
    Bonjour,
    désolé mais entouré de balise code ?

    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
    29
    30
    31
    32
    33
    34
    Sub PlanningPdf()
     
    Application.ScreenUpdating = False
    Dim i As Integer
    Dim NbOnglets As Long
    NbOnglets = ActiveWorkbook.Sheets.Count
     
        'Pour chaque onglet concerné
        For i = NbOnglets - 1 To NbOnglets - 3 Step -1
            With ThisWorkbook.Worksheets(i)
                .Activate
     
                .Rows("2:2").EntireRow.Hidden = True
                .Rows("17:25").EntireRow.Hidden = True
                .Rows("61:70").EntireRow.Hidden = True
                .Rows("91:99").EntireRow.Hidden = True
                .Rows("147:154").EntireRow.Hidden = True
                .Rows("172:265").EntireRow.Hidden = True
     
                Application.PrintCommunication = False
                .PageSetup.Zoom = 55
                Application.PrintCommunication = True
     
                .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
                "C:\Users\xxx\Documents\Planning test.pdf", Quality:=xlQualityStandard _
                , IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
                True
     
     
                .Rows("1:280").EntireRow.Hidden = False
            End With
        Next i
    '
        Application.ScreenUpdating = True

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Ton Activate est inutile (étant donné le With de la ligne précédente) mais ce n'est pas ça qui pose problème.

    Es-tu sûr que les onglets que tu veux traiter sont l'avant dernier et les deux précédents ?
    Pour le vérifier, place cette ligne à la place de ton Activate et regarde les noms qui sortent dans la fenêtre d'exécution.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Par défaut
    c'est bon j'ai trouvé de l'aide. voici le code au cas où certains en auraient besoin.


    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Sub planningPdf()
        Dim i As Integer
        Dim NbOnglets As Integer
        Dim TabFeuilles() As String
        Const LignesMasquées = "2:2,17:25,61:70,91:99,147:154,172:265"
        Const NomFichierPDF = "C:\Users\UR11725797\Documents\Planning test.pdf"
     
     
        Application.ScreenUpdating = False
        NbOnglets = ActiveWorkbook.Sheets.Count
     
        'Pour chaque onglet concerné, masquer les lignes
        For i = NbOnglets - 1 To NbOnglets - 3 Step -1
            With ThisWorkbook.Worksheets(i)
                ReDim Preserve TabFeuilles(1 To NbOnglets - i)
                TabFeuilles(NbOnglets - i) = .Name
                .Activate
     
                .Range(LignesMasquées).EntireRow.Hidden = True
     
                Application.PrintCommunication = False
                .PageSetup.Zoom = 55
                Application.PrintCommunication = True
            End With
        Next i
     
        'Export PDF des feuilles en 1 seul fichier
        ThisWorkbook.Worksheets(TabFeuilles).Select
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=NomFichierPDF, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
     
        'Pour chaque onglet concerné, démasquer les lignes
        For i = NbOnglets - 1 To NbOnglets - 3 Step -1
            With ThisWorkbook.Worksheets(i)
                .Range(LignesMasquées).EntireRow.Hidden = False
            End With
        Next i
     
        Application.ScreenUpdating = True
    End Sub

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

Discussions similaires

  1. [XL-2010] Liste déroulante pour afficher/masquer lignes sur différents onglets
    Par Pierre et le loup dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 29/06/2018, 15h27
  2. [XL-2016] Masquer lignes sur plusieurs feuilles
    Par jhntms dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 01/10/2017, 20h45
  3. [XL-2007] Ajout de ligne sur plusieurs onglets en insérant une donnée
    Par damien.huchette dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 02/04/2015, 14h25
  4. 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
  5. [VBA-E] Impression page paire sur plusieurs onglets
    Par liop49 dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 17/02/2005, 15h19

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