XL 2010 Créer un document PDF avec affichage personnalisé

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

hatem1234

XLDnaute Junior
Bonjour à tous,
J'ai eu beaucoup de succès et de l'aide sur ce forum alors je partage avec vous un dernier projet dans lequel j'aimerais imprimer un tableau Excel vers un document PDF
Pour le moment, j'imprime bien les données sélectionnées et le document PDF est bien créée
Le problème est que le document PDF affiche les données exactement comme dans le tableau or je cherche à modifier l'affichage comme suit :

Titre1
Colonne 1 Colonne 2 Colonne 3 Colonne 8 Colonne 9 Etc

Titre2
Colonne 1 Colonne 2 Colonne 3 Colonne 10 Colonne 11 Etc

Je joins un fichier pour plus d'informations

Je ne sais pas si la solution passe par copier les données dans une autre feuille Temp ou si c'est possible de spéficier l'affichage du document PDF sans créer de nouvelle feuille Temp

Merci d'avance
 

Pièces jointes

bonjour hatem1234 et le forum
j'ai un peu regarder ton classeur et ai trouvé 2 anomalies, maintenant corrige les et reviens
tu as mis
Code:
Option Explicit
Public ZonePrint As Range 'Définit la zone d'impression

Sub Imprimer()

Application.ScreenUpdating = False

With Sheets("Data").PageSetup

    .PrintTitleRows = Sheets("Data").Rows("2").Address
    .CenterHeader = "Liste des employés pour Alain"
    .LeftFooter = "&T"
    .CenterFooter = Format("&D", "yyyy-mm-dd")
    .RightFooter = "Page &P sur &N"
    .LeftMargin = Application.InchesToPoints(0.75)
    .RightMargin = Application.InchesToPoints(0.75)
    .TopMargin = Application.InchesToPoints(1)
    .BottomMargin = Application.InchesToPoints(1)
    .HeaderMargin = Application.InchesToPoints(0.5)
    .FooterMargin = Application.InchesToPoints(0.5)
    .PrintHeadings = False
    .PrintGridlines = True
    .PrintComments = xlPrintNoComments
    .CenterHorizontally = True
    .CenterVertically = False
    .Orientation = xlLandscape   'Portrait ou Landscape
    .Draft = False
    .PaperSize = xlPaperLegal   'xlPaperA4
    .FirstPageNumber = xlAutomatic
    .Order = xlDownThenOver
    .BlackAndWhite = False
    .Zoom = 100
End With

With Sheets("Data")

.Select

Dim Fin, Cel
  
    Fin = Sheets("Data").Range("A65535").End(xlUp).Row
  
    Set ZonePrint = Range("A2:P" & Fin)
  
    'Masquer la colonne du nom du directeur
    Sheets("Data").Columns("D").EntireColumn.Hidden = True
  
    'Masquer les lignes dont le nom du directeur est autre que Alain
    For Each Cel In ZonePrint.Range("D2:D" & Fin)
        If Not Cel.Value = "Alain" Then Cel.EntireRow.Hidden = True
    Next
 
  ZonePrint.ExportAsFixedFormat Type:=xlTypePDF, Filename:="ListeEmployésPourAlain", Quality:=xlQualityStandard, _
      IncludeDocProperties:=False, IgnorePrintAreas:=True, OpenAfterPublish:=True

Sheets("Data").Cells.EntireColumn.Hidden = False
Sheets("Data").Cells.EntireRow.Hidden = False

End With

Application.ScreenUpdating = True

End Sub

hors si tu l'observe bien with sheets "data" ne sert a rien qu'a sélectionner la feuille,puisque chaque ligne démarre par le nom de feuille
sauf une dont tu as oublier le . devant "range"
et il y a la fonction "printarea" qui sert pour définir les zones d'impressions, mais je ne sais pas l'adapter a ton cas
 
Bonjour,

Je ne comprends pas bien... parlons seulement de la première page pour l'instant ...
À l'impression, tu veux masquer les colonnes D,E,F,G sur la première page ou seulement les éléments du Titre ... i.e. ligne 2 (D2:G2) ?


Jecherche
 
Bonjour,
Voici ce que je cherche à faire : Afficher dans un document PDF les colonnes appropriées pour chaque catégorie d'employés
En d'autres termes, afficher les colonnes comme suit :

Gestionnaires : Colonnes B, C, E et P
Cadres : Colonnes B, C, E et O
Agents : Colonnes B, C, E, L, M et N
Commis : Colonnes B, C, E, F, G, H, I, J et K

Merci
 
Bonjour hatem1234, grisan29, jecherche,

Voyez dans le fichier joint les 4 tableaux de la feuille "PDF" dotés de formules matricielles très classiques.

Grâce à ces formules le code du bouton est vraiment très simple :
Code:
Private Sub CommandButton1_Click()
On Error Resume Next
Cells.SpecialCells(xlCellTypeFormulas, 16).EntireRow.Hidden = True
On Error GoTo 0
Me.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & "\ImprimerPDF.pdf" 'à adapter
'---RAZ---
Rows.Hidden = False
End Sub
Quant à "aucun nom trouvé" c'est tout à fait inutile si l'on a de bonnes lunettes 🙂

A+
 

Pièces jointes

Bonjour Jobs75 et le forum,
C'est une bonne idée et si je comprends bien, il faut créer une nouvelle feuille nommée PDF et dans laquelle on doit créer 4 nouveaux tableaux pour chacun des employés : Gestionnaire, Cadre, Agent et Commis
Par la suite, il est vrai que le bouton pour imprimer le PDF devient facile (un peu comme dans mon fichier original)
J'avoue que je suis plutôt à la recherche de solution entièrement en VBA et qui ne demande pas de créer de nouvelles feuilles dans le classeur
Je vais m'inspirer de ton beau travail pour l'adapter à mon but
Si vous avez d'autres solutions en VBA seulement et qui ne passent pas par la création de nouvelles feuilles, n'hésitez surtout pas à les partager
Merci bien
 
Bonjour hatem1234, le forum,

Si vous avez d'autres solutions en VBA seulement et qui ne passent pas par la création de nouvelles feuilles, n'hésitez surtout pas à les partager
Allons allons, pour créer un fichier PDF il faut bien exporter une feuille formatée correctement !

Mais si vous voulez masquer les 4 tableaux sources c'est facile, voyez ce fichier (2) et la macro :
Code:
Private Sub CommandButton1_Click()
Dim i As Byte, P As Range
Application.ScreenUpdating = False
Rows.Hidden = False
Rows("1:9").Hidden = True 'lignes à adapter éventuellement
On Error Resume Next
Cells.SpecialCells(xlCellTypeFormulas, 16).EntireRow.Hidden = True 'masque les valeurs d'erreur
For i = 1 To 4
  Set P = Cells(15 * i - 3, 2).CurrentRegion 'cellule initiale B12 à adapter éventuellement
  Set P = P.Resize(P.Rows.Count + 1)
  With Shapes("Label" & i)
    .Left = P.Left - 3: .Top = P.Top - 3: .Width = P.Width + 6: .Height = P.Height + 6
    If IsError(P(2, 1)) Then .Visible = True
  End With
Next
Me.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & "\" & [D2] & ".pdf" 'à adapter
'---RAZ---
For i = 1 To 4
  Shapes("Label" & i).Visible = False
Next
Rows("10:69").Hidden = True 'lignes à adapter éventuellement
Rows("1:9").Hidden = False 'lignes à adapter éventuellement
ActiveWindow.ScrollRow = 1
End Sub
Pour les miros j'utilise 4 Labels avec le texte "Aucun nom trouvé".

Le fichier PDF porte maintenant le nom du directeur recherché.

A+
 

Pièces jointes

Bonjour job75,
Je vais regarder ta solution car je la trouve pas mal intéressante
Ce que j'ai essayé d'éviter c'est de créer une nouvelle feuille mais ta solution fonctionne bien même si elle passe par celà
je pense également à créer une feuille temporaire et la supprimer une fois le PDF enregistré
Je vous reviens avec d'autres fichiers à jour
Merci encore pour cette idée
 
Bonjour hatem1234,

je pense également à créer une feuille temporaire et la supprimer une fois le PDF enregistré

Bonjour la galère, car il faut tout reformater à chaque fois dans la feuille temporaire.

Il est bien plus simple de masquer la feuille des 4 tableaux, l'afficher pour la création du fichier PDF puis la remasquer.

Mais visiblement vous êtes têtu...

A+
 
Bonjour à toutes et tous,

Bof, pourquoi s'évertuer a trouver une solution à hatem1234, puisque les réponses ne lui sont apparemment pas satisfaisante.
Je dis ça parce que hatem1234 ou misig sur un autre forum pose la même question aujourd'hui à 9h35.
j'dis ça, j'dis rien !
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    118.5 KB · Affichages: 39
Bonjour job75,

Oui j'avais vu aussi, ce n'ai pas interdit d'aller voir ailleurs si l'herbe y est plus verte, mais quand on pose une question sur un forum, on va jusqu'au bout, ne serait-ce que pour respecter les contributeurs de leurs efforts.

Il y a autant de compétence ici, comme ailleurs.

C'est comme ça 🙁

Bonne fin de dimanche.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
15
Affichages
1 K
Compte Supprimé 979
C
Retour