XL 2010 Imprimer onglets masqués depuis autre page

Orson83

XLDnaute Impliqué
Bonsoir à tous,
Je rencontre un problème VBA que je n'arrive pas à résoudre.
Je cherche à imprimer des pages y compris celles masquées depuis des pages différentes.
Exemple : depuis la page Accueil, je voudrais imprimer les 3 stats, que les pages soient masquées ou non.
Je joins un exemple dans post.
Merci pour votre aide.
Tchotchodu31
 

Pièces jointes

  • Imprimer-onglets-masqués V1.xlsm
    36.4 KB · Affichages: 17
Solution
Bonjour Tchotchodu31, kiki29, le forum

Salut, Tchotchodu31
un conseil utilise le CodeName cela te permettra même si le nom d'onglet est changé de ne pas avoir à retoucher au code VBA.

Et pourtant tout était ici avec le codename des feuilles tu n'avais qu'à recopier le code de .... @Phil69970 au lieu d'essayer de le modifier !

mon classeur contient plus de 20 pages qui sont régulièrement masquées et démasquées, sauf la page "Tableau de bord".
Tu copie qu'une seule fois dans la macro d'impression le nom des feuilles que tu démasques/masques ==>Voir mon Post 4 donc je...

Phil69970

XLDnaute Barbatruc
Bonjour Tchotchodu31, le forum

Je te propose de démasquer les feuilles avant de lancer l'impression et de les remasquer après.
VB:
'****************************************
'IMPRIMER 3 PAGES DEPUIS LA PAGE ACCUEIL
'****************************************
Sub ButtonPrintStats()

Application.ScreenUpdating = False
'Je démasque les feuilles
'Nom à adapter en fonction des feuilles qui sont masquées
Sheets("Stats population").Visible = True
Sheets("Stats métiers").Visible = True
'La procédure impression ....

With Sheets("Stats population").PageSetup
            .LeftMargin = Application.InchesToPoints(0.8) 'Marge gauche
            .RightMargin = Application.InchesToPoints(0.1)  'Marge droite
            .TopMargin = Application.InchesToPoints(0.8) 'Marge haut de page ou top
            .BottomMargin = Application.InchesToPoints(0.8) 'Marge bas de page si nécessaire
            .Orientation = xlLandscape 'Paysage
            '.Orientation = xlPortrait 'Portrait

    .PrintArea = "C4:M26" 'Zone d'impression
    .FitToPagesWide = 1
    .FitToPagesTall = 1
End With

With Sheets("Stats métiers").PageSetup
            .LeftMargin = Application.InchesToPoints(0.8) 'Marge gauche
            .RightMargin = Application.InchesToPoints(0.1)  'Marge droite
            .TopMargin = Application.InchesToPoints(0.8) 'Marge haut de page ou top
            .BottomMargin = Application.InchesToPoints(0.8) 'Marge bas de page si nécessaire
            .Orientation = xlLandscape 'Paysage
            '.Orientation = xlPortrait 'Portrait
            
    .PrintArea = "D5:N27" 'Zone d'impression
    .FitToPagesWide = 1
    .FitToPagesTall = 1
End With

With Sheets("Stats générales").PageSetup
            .LeftMargin = Application.InchesToPoints(0.8) 'Marge gauche
            .RightMargin = Application.InchesToPoints(0.1)  'Marge droite
            .TopMargin = Application.InchesToPoints(0.8) 'Marge haut de page ou top
            .BottomMargin = Application.InchesToPoints(0.8) 'Marge bas de page si nécessaire
            .Orientation = xlLandscape 'Paysage
            '.Orientation = xlPortrait 'Portrait

    .PrintArea = "E6:O28" 'Zone d'impression
    .FitToPagesWide = 1
    .FitToPagesTall = 1
End With

Sheets(Array("Stats population", "Stats métiers", "Stats générales")).PrintPreview 'Prévisualiser

'Je remasque les feuilles
Sheets("Stats population").Visible = False
Sheets("Stats métiers").Visible = False
Application.ScreenUpdating = True

End Sub

@Phil69970
 

Orson83

XLDnaute Impliqué
Bonsoir Phil69970, le forum,
Merci pour ce code qui fonctionne bien dans un cas particulier.
En effet, si je masque la page Stats Générales, cela me génère une erreur.
Serait-il possible que les pages soient imprimées peu importe qu'elles soient masquées ou non ?
L'idée serait que je puisse imprimer des pages définies (masquées ou non) et que l'affichage revienne à l'état de départ.
Merci encore pour votre aide.
Tchotchodu31
 

Phil69970

XLDnaute Barbatruc
'Je démasque les feuilles
'Nom à adapter en fonction des feuilles qui sont masquées
Sheets("Stats population").Visible = True
Sheets("Stats métiers").Visible = True
C'est à toi d'adapter ton fichier en fonction des feuilles qui sont masquées...

Et évidement de les remasquer en fin de procédure

Je ne pense pas que l'on puisse imprimer une feuille masquée sans la démasquée au préalable.
@Phil69970
 

Orson83

XLDnaute Impliqué
C'est à toi d'adapter ton fichier en fonction des feuilles qui sont masquées...

Et évidement de les remasquer en fin de procédure

Je ne pense pas que l'on puisse imprimer une feuille masquée sans la démasquée au préalable.
@Phil69970

Je comprends qu'il soit nécessaire de les démasquer pour que cela fonctionne.
Néanmoins, serait-il possible de remplacer une partie du code par un autre argument de type Sheets.activate ou Sheets.Visible = True de façon à ne pas avoir à identifier les feuilles au début et à la fin du code ?
Merci.
 

Orson83

XLDnaute Impliqué
Salut, Tchotchodu31
un conseil utilise le CodeName cela te permettra même si le nom d'onglet est changé de ne pas avoir à retoucher au code VBA.

Bonsoir kiki29, le forum,
D'accord, il y aurait donc une technique pour ne pas avoir à nommer les pages.
J'ai regardé la page https://silkyroad.developpez.com/VBA/VisualBasicEditor/#LII-B
Malheureusement, je suis honnête, mais mon faible niveau en VBA ne me permet pas d'adapter cet argument, d'autant que mon classeur contient plus de 20 pages qui sont régulièrement masquées et démasquées, sauf la page "Tableau de bord".
Si quelqu'un pouvait modifier le code ? Sinon tant pis.
Bonne soirée.
Tchotchodu31
 

Orson83

XLDnaute Impliqué
Bonsoir kiki29, le forum,
D'accord, il y aurait donc une technique pour ne pas avoir à nommer les pages.
J'ai regardé la page https://silkyroad.developpez.com/VBA/VisualBasicEditor/#LII-B
Malheureusement, je suis honnête, mais mon faible niveau en VBA ne me permet pas d'adapter cet argument, d'autant que mon classeur contient plus de 20 pages qui sont régulièrement masquées et démasquées, sauf la page "Tableau de bord".
Si quelqu'un pouvait modifier le code ? Sinon tant pis.
Bonne soirée.
Tchotchodu31
 

Phil69970

XLDnaute Barbatruc
Bonjour Tchotchodu31, kiki29, le forum

Salut, Tchotchodu31
un conseil utilise le CodeName cela te permettra même si le nom d'onglet est changé de ne pas avoir à retoucher au code VBA.

Et pourtant tout était ici avec le codename des feuilles tu n'avais qu'à recopier le code de .... @Phil69970 au lieu d'essayer de le modifier !

mon classeur contient plus de 20 pages qui sont régulièrement masquées et démasquées, sauf la page "Tableau de bord".
Tu copie qu'une seule fois dans la macro d'impression le nom des feuilles que tu démasques/masques ==>Voir mon Post 4 donc je vois pas trop ou est le problème car apres c'est excel qui fait le boulot !

@Phil69970
 
Dernière édition:

Discussions similaires

Réponses
11
Affichages
611

Statistiques des forums

Discussions
312 108
Messages
2 085 375
Membres
102 876
dernier inscrit
BouteilleMan