Macro impression/PDF

Bonsoir à tous,

je cherche à adapter sur un classeur un code me permettant d'imprimer une sélection de feuilles affichées ou masquées (quid Userform avec Msgbox à choix multiples pour sélection des feuilles?).

Un code transmis par LouReed (créé par Bruno45) offrant la possibilité de transformer en ".Pdf" me serait utile a son tour.

Ainsi est donc née l'idée de combiner ces deux options afin d'extraire la sélection des feuilles soit en ".Pdf" indépendants pour les stocker sur un dossier de mon DDR, soit en les imprimant en fonction du besoin.

Est-il donc possible de:

- créer un Userform avec Msgbox pour sélectionner les feuilles d'un classeur ?

- avoir la possibilité depuis ce Msgbox soit d'imprimer cette sélection soit de les transformer en ".Pdf" indépendants ?

J'avoue ne pas être en mesure de rédiger ces codes et sollicite donc, s'il vous plaît, votre aide.

P.S: le classeur en question ne pouvant être transmis pour des raisons de confidentialité professionnelle, je joins un classeur d'essai dans lequel j'ai volontairement masqué des onglets.

D'avance merci (en espérant être clair sur le besoin)

Salut tlam

Bonsoir à tous,

je cherche à adapter sur un classeur un code me permettant d'imprimer une sélection de feuilles affichées ou masquées (quid Userform avec Msgbox à choix multiples pour sélection des feuilles?).

Si tu imprimes une feuilles masquées, elle n'est plus réellement masquée

Un code transmis par LouReed (créé par Bruno45) offrant la possibilité de transformer en ".Pdf" me serait utile a son tour.

Ainsi est donc née l'idée de combiner ces deux options afin d'extraire la sélection des feuilles soit en ".Pdf" indépendants pour les stocker sur un dossier de mon DDR, soit en les imprimant en fonction du besoin.

Est-il donc possible de:

- créer un Userform avec Msgbox pour sélectionner les feuilles d'un classeur ?

- avoir la possibilité depuis ce Msgbox soit d'imprimer cette sélection soit de les transformer en ".Pdf" indépendants ?

J'avoue ne pas être en mesure de rédiger ces codes et sollicite donc, s'il vous plaît, votre aide.

Une idée à ajouter à mon fichier de code, un UserForm de sélection des feuilles

Je te donne la réponse dès que je peux

@+

Salut BrunoM45,

Effectivement je masque certaines feuilles car pas utiles au quotidien mais je les imprime hebdomadairement. Pouvoir la sélectionner sans l'afficher au préalable m'évite une manipulation.

Merci pour ton aide sur le sujet.

hâte de voir ton code

Cordialement

Bonjour tlam,

Tu trouveras le classeur avec un tas d'exemples, dont celui qui t'intéresse, ICI
https://www.excel-pratique.com/fr/telechargements/utilitaires/pdf-email-vba-excel-no508

@+

Bonjour BrunoM45,

Beau boulot, cependant il y un à bug lorsque l'on utilise les macros "x feuilles vers 1 pdf" et "x feuilles vers x pdf".

Dernier point, si d'avenir je ne souhaite pas pouvoir imprimer les feuilles masquées (réflexion de modification du classeur en cours) que dois-je modifier au code du UserForm?

Cdt,

Salut tlam

Bonjour BrunoM45,

Beau boulot, cependant il y un à bug lorsque l'on utilise les macros "x feuilles vers 1 pdf" et "x feuilles vers x pdf".

Dernier point, si d'avenir je ne souhaite pas pouvoir imprimer les feuilles masquées (réflexion de modification du classeur en cours) que dois-je modifier au code du UserForm?

Cdt,

Les 2 procédures dont tu me parles ne sont pas prévues pour ta situation (feuilles masquées)
Ceci dit, c'est peut-être quelque chose à laquelle il faut que je pense dans me codes

Si à l'avenir, tu ne souhaites pas imprimer les feuilles masquées et passer par l'USF, il faut les enlever de la liste

Private Sub UserForm_Initialize()
  ' Vide la ListBox avant ajout
  Me.Lbx_Feuilles.Clear
  ' Pour chaque feuille du classeur
  For Each Sht In ThisWorkbook.Worksheets
    ' Si la feuille n'est pas celle de l'acceueil et est visible
    If Sht.Name <> "Accueil" And Sht.Visible = xlSheetVisible Then
      ' L'ajouter à la liste
      Me.Lbx_Feuilles.AddItem Sht.Name
    End If
  Next Sht
End Sub

@+

Ok, merci à toi BrunoM45

@+

Une dernière question, penses-tu possible que la sélection de plusieurs feuilles en export .pdf soit possible vers un .pdf indépendant pour chaques feuilles?

Cordialement,

tlam,

C'est dans mon fichier, il suffit de mixer les codes

me voilà découvert, j'essaye justement de mixer mais sans obtenir le résultat escompté. Je manque encore de connaissances en codage.

Bonsoir BrunoM45,

Après réflexion, j'ai modifier mon classeur pour ne plus devoir imprimer les feuilles masquées. Pour le moment cela semble être opérationnel toutefois je conserve ton codage au cas où.

J'ai donc adapter ton code en conséquence et cela fonctionne parfaitement. Encore merci pour ton aide.

Il me reste à adapter le codage pour obtenir un PDF par feuilles sélectionnées depuis l'USF et c'est là que je coince totalement.

Actuellement j'en suis là, mais comme j'en perds mon latin, ça doit être du grand n'importe quoi:

Private Sub Cbn_Export_Click()
  Dim sPath As String, sFileName As String
  Dim ShtArray() As String, CountArr As Integer
  Dim ShtHidden() As String, CountHidden As Integer
  Dim Ind As Integer
  ' Désactiver le rafraichissement écran
  Application.ScreenUpdating = False
  Me.Hide ' Masquer l'USF
  ' Initialisation de certaines variables
  sPath = Environ("TEMP") & "\"
  ' Vérifier l'extension du fichier à enregistrer
  If Right(sFileName, 4) <> ".pdf" Then sFileName = sFileName & ".pdf"
  ' Pour chaque feuilles de la ListBox
  For Ind = 0 To Me.Lbx_Feuilles.ListCount - 1
    ' Si la ligne ligne est sélectionnée
    If Me.Lbx_Feuilles.Selected(Ind) = True Then
      ' L'ajouter au tableau des feuilles à exporter
      ReDim Preserve ShtArray(CountArr)
      ShtArray(CountArr) = Me.Lbx_Feuilles.List(Ind)
      CountArr = CountArr + 1
    End If
  Next Ind
  ' Générer les PDF dans le répertoire temporaire de l'utilisateur
  Sheets(ShtArray).Select
  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sPath & sFileName, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
  ' Effacer les variables objet
  Set Sht = Nothing
  ' Afficher l'usf
  Me.Show
End Sub

Je fais une nouvelle fois appel à tes connaissance et ton dévouement pour m'aider si tu le veux bien.

Cordialement

Salut tlam,

C'est plus simple que ça

Private Sub Cbn_Export_Click()
  Dim sPath As String, sFileName As String
  Dim Ind As Integer
  Dim Sht As Worksheet
  ' Désactiver le rafraichissement écran
  Application.ScreenUpdating = False
  Me.Hide ' Masquer l'USF
  ' Définir le chemin d'enregistrement
  sPath = Environ("TEMP") & "\"
  ' Pour chaque feuilles de la ListBox
  For Ind = 0 To Me.Lbx_Feuilles.ListCount - 1
    ' Si la ligne ligne est sélectionnée
    If Me.Lbx_Feuilles.Selected(Ind) = True Then
      ' Définir la feuille à imprimer
      Set Sht = Sheets(Me.Lbx_Feuilles.List(Ind))
      ' Définit le nom du fichier
      sFileName = Sht.Name & ".pdf"
      ' Export la feuille au format PDF
      Sht.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sPath & sFileName, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    End If
    ' Effacer les variables objet
    Set Sht = Nothing
  Next Ind
  ' Afficher l'usf
  Me.Show
End Sub

@+

Salut BrunoM45,

Merci pour ton retour. je viens de le mettre en application, il y a bien une action qui se passe lorsque j'exporte les fichiers souhaités cependant je n'ai pas d'instance pour l'enregistrement et je ne trouve pas trace des pdf sur le ddr?

J'ai trouvé, il suffisait de passer "OpenAfterPublish:=False" en "True".

Un énorme merci pour ton aide BrunoM45.

@ bientôt

Rechercher des sujets similaires à "macro impression pdf"