zone d'impression suivant tableau dynamique

E

eric

Guest
Comment est ce que je pourrais définir une zone d'impression qui s'adapterait à un tableau croisé dynamique. Afin de ne pas devoir toujours la redefinir??

Merci d'avance
 

vwelschinger

XLDnaute Nouveau
Alors nous avions pensé à séparer les TCD sur plusieurs feuilles, mais comme les utilisateurs au jour le le jour de ce fichier ne sont pas très très doués en informatique en général, on ne voulait pas que cela soit source d'erreur. D'autant que le classeur original comporte une bonne quinzaine de feuilles déjà (utilisées pour autre chose)

Mais en gros, la structure :

Toutes les données viennent donc de la deuxième feuille.
Tous les TCD ont la même source de données, ils n'affichent simplement pas les même valeurs
Tous les soirs, ils appliquent la Macro, donnant ainsi un PDF de 2 pages avec un TCD sur chacune qui se met dans un email outlook, avec uniquement les données de la journée.

C'est fonctionnel en l'état, le soucis est que la source peut être plus importante certains jours, ce qui fait que tout ne s'affiche pas sur le PDF.
De plus, on a du un peu "bricoler" ce qui explique les nombres lignes entre les TCD, pour qu'ils ne se chevauchent pas.


Donc, en bref :
- Est-il possible de faire en sorte, que des lignes s'ajoutent et se retirent automatiquement pour éviter le dernier point ?
- Plus généralement, est-ce que le PDF est faisable, dans le sens de l'adaptation automatique dans ce sens ?

Ou mieux vaut-il séparer les TCD dans des feuilles distintes et faire une macro globale qui rassemble tout cela ?

En espérant avoir pu être clair dans mes explications

Merci :)
 

Sebast

XLDnaute Impliqué
Pour répondre à ces questions, même si cela me paraît un peu confus :
- Est-il possible de faire en sorte, que des lignes s'ajoutent et se retirent automatiquement pour éviter le dernier point ?
Quand tu écris que les lignes s'ajoutent automatiquement, n'est -ce pas effectivement automatique par principe, avec les TCD ?
A moins que tu penses à la zone d'impression, qui doit s'adapter à la taille - variable - du TCD ?

- Plus généralement, est-ce que le PDF est faisable, dans le sens de l'adaptation automatique dans ce sens ?
Je ne maitrise pas trop la mise en forme pdf; j'aurais tendance à procéder d'abord en définissant dans excel les zones d'impression puis à exporter vers pdf

Ou mieux vaut-il séparer les TCD dans des feuilles distintes et faire une macro globale qui rassemble tout cela ?
Oui, cela me paraît plus sage, surtout plus lisible
 

chris

XLDnaute Barbatruc
Re

Si j'ai compris on doit avoir n lignes vides entre les TCD mais en afficher/masquer automatiquement une partie selon le nombre de lignes afffichées par les TCD.

Pour le reste comme déjà dit :
l'insertion d'un saut de page entre les TCD règle l'impression d'un TCD par page.

Mais si le TCD est très long, il faudra sans doute le répartir sur plusieurs pages et cela peut se faire via les options du TCD (répétition des titres) et les paramètres de champ (sauts de page automatique sur un champ de 1er niveau par exemple)
 

vwelschinger

XLDnaute Nouveau
Je suis désolé, ce n'est pas aisé à expliquer.

Faisons plus simple,

Au lieu d'être les un en dessous des autres, on va mettre les TCD en lignes, ça évitera les chevauchements si le nombre de lignes est élevé, et de rajouter des feuilles.

Dans ce cas de figure, puis-je faire pour définir une zone d'impression par TCD qui me le met ensuite dans un PDF unique.
Comment utiliser le code initial pour ce cas de figure ?

Merci pour le temps consacré déjà :)
 

Sebast

XLDnaute Impliqué
Re,

en lisant Chris, je me rends compte que je suis passé totalement à côté de la demande !
Pour le coup, je ne connais pas ces options d'impression, notamment les sauts de page liés aux TCD.
Mais ça m'intéresse : si quelqu'un a une idée ?

Sebast
 

chris

XLDnaute Barbatruc
RE

Si on fait précéder chaque TCD d'un saut de page manuel, ils vont forcément s'imprimer sur des pages différentes

Pour un TCD long nécessitant plusieurs page, on peut,
  • dans les options du TCD, onglet impression demander la répétition des titres afin de ne pas avoir des lignes dont on ne comprend pas le sens
  • dans les paramètres de champ, demander un saut de page avant chaque élément. Par exemple pour un champ client en étiquette de ligne : cela évite que les factures d'un client démarrent sur une page et se terminent sur une autre en coupant après chaque client
En général pdf est un mode d'impression donc la mise en page s'impose à l'imprimante virtuelle pdf
 

STephane

XLDnaute Occasionnel
Bonjour

Dur de comprendre exactement où est le problème ?

Pour définir la zone d'impression avec un TCD unique dans une feuille
VB:
Sub ZoneImpression_PVT_Unique()
If ActiveSheet.PivotTables.Count = 0 Then Exit Sub
ActiveSheet.PageSetup.PrintArea = ActiveSheet.PivotTables(1).TableRange2.Address
End Sub

Pour définir la zone d'impression avec plusieurs TCD dans une feuille.
A l'impression trois feuilles sont générées dans le PDF
Code:
Sub ZoneImpression_PVT_Multiple()
Dim MaPlage As Range, oPVTs As PivotTables, oPVT As PivotTable
Dim i As Integer
Set oPVTs = ActiveSheet.PivotTables
If oPVTs.Count = 0 Then Exit Sub

Set MaPlage = Nothing
For Each oPVT In oPVTs
    If MaPlage Is Nothing Then
        Set MaPlage = oPVT.TableRange2
    Else
     Set MaPlage = Union(MaPlage, oPVT.TableRange2)
    End If
Next oPVT
MaPlage.Select

ActiveSheet.PageSetup.PrintArea = MaPlage.Address
ActiveSheet.PrintOut preview:=True
End Sub

Pour imprimer tous les TCD du classeur dans un seul PDF
Code:
sub ZoneImpression_TCDsDuClasseur
Dim MaPlage As Range, oPVTs As PivotTables, oPVT As PivotTable
Dim bValidWorksheet As Boolean
For Each wsh In ActiveWorkbook.Worksheets
    Set oPVTs = wsh.PivotTables
    If oPVTs.Count = 0 Then GoTo nnext:
    
    '# pour être sur de n'imprimer que des feuilles avec PVT
    '# to ensure only worksheets with pivot tables will being printed
    If bValideWorksheet = False Then wsh.Select
    bValideWorksheet = True

    Set MaPlage = Nothing
    For Each oPVT In oPVTs
        If MaPlage Is Nothing Then
            Set MaPlage = oPVT.TableRange2
        Else
         Set MaPlage = Union(MaPlage, oPVT.TableRange2)
        End If
    Next oPVT
    wsh.PageSetup.PrintArea = MaPlage.Address
    wsh.Select Replace:=False
nnext:
Next wsh

ActiveWindow.SelectedSheets.PrintOut , preview:=True
end sub


En espérant que cela aide.

STéphane
 

Discussions similaires

Réponses
6
Affichages
447

Statistiques des forums

Discussions
311 715
Messages
2 081 822
Membres
101 822
dernier inscrit
holale