Selectionner toutes les pages visibles de mon fichier

Bonjour,

Dans le cadre de mon travail, j'ai fait en vba tout un traitement de mes dépenses. Je souhaite, à la fin, l'exporter en pdf, après avoir masquer les feuilles qui ne m'intéressent pas (les feuilles contenant les données de base avant traitement notamment).

Je peux alors soit l'imprimer en pdf via pdf creator en imprimant tout le classeur actif, soit l'enregistrer en pdf, maintenant qu'Excel le permet. J'essaye donc de réaliser cet enregistrement.

A vrai dire, l'enregistrement fonctionne très bien. Le problème c'est qu'il ne m'enregistre que la première page visible de mon classeur. Si je sélectionne à la main toutes les pages visibles et que j'enregistre, j'ai alors toutes mes pages dans mon document pdf. Le soucis c'est que je n'arrive pas à sélectionner toutes mes pages via vba sans avoir à les nommer.

Sheets.Select

Activeworkbook.Sheets.Select

L'enregistreur ne macro se contente de sélectionner selon les noms, tout cela ne fonctionne pas.

Bref ma question est: comment sélectionner toutes les pages visibles de mon classeur?

Merci d'avance,

Marilo

Bonjour, le code qui suit permet de sélectionner toutes les feuilles du classeur, et la gestion d'erreur les évite si la feuille est masquée :

Sub vbMBHB()
    Dim Feuille As Worksheet
    On Error Resume Next
    For Each Feuille In ThisWorkbook.Sheets
        Feuille.Select Replace:=False
    Next
End Sub

Avec ceci il n'y a pas besoin de connaitre le noms des feuilles.

vbMBHB

Bonjour,

C'est parfait, merci beaucoup.

Par contre je ne suis pas sûr de comprendre le code.

On Error Resume Next: Pour chaque page en erreur, passer à la suivante, c'est cela?

Feuille.Select Replace:=False: Là je capte pas, le coup du Replace:=False. Qu'est-ce qui devient False?

Merci en tout cas

Marilo

C'est mon secret... Je trouve des solutions sur le net "qui datent" mais qui marchent. Après le fonctionnement "exacte" du code... Je suis navré, mais vous avez raison sans le On Error Resume Next le code provoque une erreur sur la sélection d'une feuille masquée...Donc si erreur on continue. Par contre le Feuille.Select Replace:=False si on veut l'expliquer serait : on sélectionne la feuille suivante (par la boucle) mais on ne remplace pas celle(s) qui est (sont) déjà sélectionnée(s) Replace=: False, du coup on garde ce qui est déjà sélectionné, donc on a bien toutes les feuilles.

vbMBHB

Jsuis pas sûr d'avoir complètement capté le truc, n'empêche que c'est parfait !!

Merci pour l'explication

Bonne journée

Bonjour,

une alternative :

Public Sub TEST()
Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Sheets
        If ws.Visible = xlSheetVisible Then ws.Select Replace:=False
    Next ws
End Sub

Bonsoir, c'est plus propre car pas d'erreur... Mais Est-ce mieux ? Plus rapide ? Autant c'est plus "léger" car il n'y a pas de mise en mémoire des codes erreurs...

Pour le "On Error Resume Next" vous aviez compris, si VBA détecte une erreur, cette instruction lui dit de continuer...

On lance la boucle sur toutes les feuilles du classeur.

On essaie de sélectionner la première, il n'y a pas d'erreur (elle est visible) elle est donc sélectionnée, mais on ne remplace pas la sélection d'avant. Hors il n'y a rien de sélectionner donc pas grave on sélectionne.

La boucle boucle, on passe donc à la feuille 2, elle est visible, on la sélectionne, mais on ne remplace pas la sélection d'avant, donc comme on a déjà sélectionné la feuille une et qu'on remplace pas, alors on se retrouve avec la sélection de la feuille 1 et 2.

on boucle,

On passe à la feuille 3, elle est masquée, on ne peut pas la sélectionner, cela déclenche une erreur VBA, mais comme VBA sait qu'il doit continuer, alors il boucle.

Feuille 4 visible on la sélectionne sans remplacer la sélection existante donc on l'ajoute on a bien 1,2 et 4 de sélectionnées !

etc....

vbMBHB

Rechercher des sujets similaires à "selectionner toutes pages visibles mon fichier"