XL 2013 printpreview s'arrête à la 1ère feuille rencontrée

Sebast

XLDnaute Impliqué
Bonjour à toutes et à tous,


je bute sur un problème de destination d'impression : ça marche quand j'imprime sur papier ou dans un fichier .pdf, mais pas quand je veux afficher le résultat à l'écran …


En pièce jointe un fichier avec des données fictives. Le nombre de feuilles est ici volontairement limité, la réalité est tout autre mais pour des questions d'upload et didactiques, pas besoin de davantage pour comprendre.

Il est clair que le nombre de feuilles est variable ainsi que leur nom respectif, c'est pourquoi je passe par un array et non pas par une sélection des feuilles existantes dans le présent fichier, appelé à changer en permanence.


Mon problème

Quand je veux faire un aperçu des feuilles concernées (PrintPreview), seule la première s'affiche … alors qu'il y en a bien d'autres


Quelqu'un a-t-il une idée de la raison pour laquelle le case 2 ne fonctionne pas ?



D'avance, merci


Code:
Option Explicit
Sub Mode_impression()
Application.ScreenUpdating = False
Dim Destination_impression As Variant
Dim sh As Long  ' Nombre de feuilles
Dim arrTabs
Dim compteur As Integer
Dim n As Integer
n = Sheets.Count - 1
ReDim arrTabs(n)
Destination_impression = Empty
' L'utilisateur est questionné sur la destination
Do Until Destination_impression = 1 Or Destination_impression = 2 Or Destination_impression = 3
    Destination_impression = Application.InputBox("Quel type d'impression voulez-vous ?" _
    + vbCrLf + vbCrLf + "1 = Papier, 2 = Ecran, 3 = Créer un fichier pdf", _
    "Faites votre choix", "3", Type:=1)
Loop
For sh = 1 To Sheets.Count  ' On balaie les feuilles du fichier
     Sheets(sh).Activate
    
     ' on restreint aux feuilles visibles avec TCD
     If ActiveSheet.PivotTables.Count > 0 And ActiveSheet.Visible = True Then
             
          With ActiveSheet.PageSetup ' on définit la zone d'impression
               .PrintArea = ActiveSheet.PivotTables("Tableau croisé dynamique1").TableRange2.Address
          End With
         
          ' Le nom de la feuille active est copié dans l'array
          arrTabs(compteur) = Sheets(sh).Name
         
          compteur = compteur + 1 ' on incrémente
          Else
               n = n - 1
               ReDim Preserve arrTabs(n)
     End If
Next ' on passe à la feuille suivante
     If arrTabs(0) <> "" Then
    
     ' --- Traitement des options d'impression
          Select Case Destination_impression
               Case 1 ' impression papier
                    ThisWorkbook.Worksheets(arrTabs).PrintOut
               Case 2 ' impression écran
                    ThisWorkbook.Worksheets(arrTabs).PrintPreview
               Case 3 ' impression dans un fichier .pdf
                    Application.ScreenUpdating = False
                    ThisWorkbook.Worksheets(arrTabs).Copy
                    With ActiveWorkbook
                         .ExportAsFixedFormat _
                         Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\FichierTexte.pdf", _
                         Quality:=xlQualityStandard, IncludeDocProperties:=True, _
                         IgnorePrintAreas:=False, OpenAfterPublish:=False
                         .Close False
                    End With
                    Application.ScreenUpdating = True
          End Select
    End If
On Error GoTo 0
End Sub
 

Pièces jointes

  • Gestion_impression_03092018.xlsm
    110.1 KB · Affichages: 21

Sebast

XLDnaute Impliqué
Bonjour,

je suis perplexe ...
Quand s'affiche l'aperçu avant impression, j'ai bien "Page suivante" en gras mais quand je clique dessus, il ne se passe rien, je reste sur la seule et unique page.

Ca pourrait être lié à des paramétrages d'écran ?
 

Sebast

XLDnaute Impliqué
Re,

j'ai de plus en plus l'impression que c'est un bug sur 2013 car je viens de faire tourner le code sur un vieux portable avec Excel 2007 et ça fonctionne !
En fait, je n'ai pas l'écran habituel pour un aperçu avant impression mais je passe d'une feuille à l'autre avec la roulette de la souris (et bien sûr, ce sont les feuilles attendues qui s'affichent).

Quelqu'un en sait-il davantage ?
Un possesseur de 2013 peut-il faire tourner le code pour confirmer ou infirmer ?
Merci d'avance
 

job75

XLDnaute Barbatruc
Bonjour Sebast, mapomme, eriiiic,

Effectivement sur Excel 2013 l'aperçu n'affiche que la 1ère feuille, c'est comme ça...

Pour voir toutes les feuilles il faut une boucle :
Code:
               Case 2 ' impression écran
                    Dim f As Object
                    For Each f In ThisWorkbook.Worksheets(arrTabs): f.PrintPreview: Next
A+
 

Sebast

XLDnaute Impliqué
Bonjour,

merci de me donner confirmation, j'en venais à douter de moi, de mon matériel ou de mon code ...
C'est quand même une régression : un loupé Microsoft ou ça répond à des contraintes par ailleurs ?
Merci pour le code et la précision
 

Discussions similaires

Réponses
2
Affichages
253

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T