XL 2013 Adapter la zone d'impression aux données

Yvan1

XLDnaute Occasionnel
Bonjour,
Je souhaite adapter la zone d'impression en fonction des données présentes.
Dans l'exemple joint, en fonction du critère choisi dans la colonne A, la zone doit se limiter aux x premières colonnes.
Exemple :
- Si on choisit le produit A, zone définie de A2:F18
- Si on choisit le produit B, zone définie de A2:G23
- Si on choisit le produit C, zone définie de A2:H20
Quelqu'un a-t-il une idée ?
Merci d'avance,
Yvan
 

Pièces jointes

  • Classeur1.xlsx
    8.8 KB · Affichages: 10
Solution
@patricktoulon @ :),

Pourquoi programmes-tu les zones d'impression en "dur" ?

Selon moi, le code suivant s'adapte à n'importe quel filtre, enfin je pense...
VB:
Private Sub DefPrintArea()
Dim i&, j&
   With Sheets("Feuil1")
      For j = Range("j1").Column To 1 Step -1
         If .Cells(Rows.Count, j).End(xlUp).Row > 2 Then Exit For
      Next j
      i = .Cells(Rows.Count, "a").End(xlUp).Row
      If i > 2 And j > 0 Then .PageSetup.PrintArea = .Range("a2").Resize(i - 1, j).Address
   End With
End Sub

AtTheOne

XLDnaute Impliqué
Supporter XLD
Bonjour à toutes & à tous, bonjour @Yvan1,
J'y vais de ma solution, sans coder les plages en dur car :
Donc il faut que se soit évolutif ...
J'ai converti la plage de donnée en tableau structuré "Tb_Produit" (j'aime bien les tableaux structurés ;))
J'ai ajouté une colonne pour savoir si la ligne est filtrée ou non :
VB:
=SOUS.TOTAL(103;Tb_Produit[[#Cette ligne];[Produit]:[T9]])<>0
J'ai créé un nom (J'aime bien les noms ;)) qui définit ma zone d'impression :
Code:
Ma_ZI : =DECALER(Tb_Produit[#Tout];0;0;;NbCols)

J'utilise l'événement Workbook.BeforePrint
VB:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
     If ActiveSheet.CodeName = "Feuil1" Then
          With Feuil1
               .PageSetup.PrintArea = [Ma_Zi].Address
          End With
     End If
End Sub

Voilà, si les valeurs pour un produit évolue, la zone s'adaptera.
A bientôt

EDIT
En fait j'ai créé 2 noms
NbCols : =MAX(SI((Tb_Produit[[Produit]:[T9]]<>"")*Tb_Produit[Visible];COLONNE(Tb_Produit[[Produit]:[T9]]);0))
 

Pièces jointes

  • ZI paramétrée.xlsm
    16.8 KB · Affichages: 4
Dernière édition:

Discussions similaires

Réponses
16
Affichages
485

Statistiques des forums

Discussions
312 247
Messages
2 086 586
Membres
103 247
dernier inscrit
bottxok