Bonjour à Tous,

J'aurais besoin d'une aide concernant un petit soucis que je n'arrive pas à résoudre.
J'ai un code (qui ne vient pas de moi), afin d'imprimer une où plusieurs feuilles au choix d'un classeur.
Logiquement celui-ci devrait me permettre de visualiser la où les feuilles avant l'impression, mais voilà je n'ai pas ce résultat, la frame reste noire.
Je ne sais si cela vient de mon côté où d'un bug.
Sinon cette fonction marche à merveille et je l'utilise pour imprimer souvent sans problèmes, ce n'est en rien dérangeant. Mais je pars du principe qu'une fonction existante se doit de fonctionner.

Voiçi le code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
Sub ChoixImprFeuilles() '-----------------------------------
Dim i As Integer, Arr(), x&
Dim TopPos As Integer
Dim SheetCount As Integer
Dim PrintDlg As DialogSheet
Dim CurrentSheet As Worksheet
Dim cb As CheckBox
 
  Application.ScreenUpdating = False
 
  If Sheets.Count > 40 Then
    MsgBox "Trop de choix pour la boite de dialogue..."
    Exit Sub
  End If
 
'  Ajoute une feuille de dialogue temporaire
  If ActiveWindow.SelectedSheets.Count > 1 Then Sheets(1).Activate
  Set PrintDlg = ActiveWorkbook.DialogSheets.Add
  PrintDlg.Visible = xlSheetHidden
 
  SheetCount = 0
 
'  Ajoute les boutons d'option
  TopPos = 40
  For i = 1 To ActiveWorkbook.Worksheets.Count
    Set CurrentSheet = ActiveWorkbook.Worksheets(i)
'   Ne tient pas compte des feuilles vide ou masquées
    If Application.CountA(CurrentSheet.Cells) <> 0 And _
            CurrentSheet.Visible Then
      SheetCount = SheetCount + 1
      PrintDlg.CheckBoxes.Add 78, TopPos, 120, 16.5
      PrintDlg.CheckBoxes(SheetCount).Text = CurrentSheet.Name
      TopPos = TopPos + 13
    End If
  Next i
 
'  Positionne les boutons OK et Annuler
  PrintDlg.Buttons.Left = 200
 
'  Dimensionne la hauteur, la largeur et le titre de la bte de dialogue
  With PrintDlg.DialogFrame
    .Height = Application.Max _
            (68, PrintDlg.DialogFrame.Top + TopPos - 34)
    .Width = 200
    .Caption = "Le(s) Mois à imprimer ? "
  End With
 
'  Change l'ordre de tabulation des boutons OK et Annuler
'  afin de donner le focus au premier bouton d'option
  PrintDlg.Buttons("Button 2").BringToFront
  PrintDlg.Buttons("Button 3").BringToFront
 
'  Affiche la boîte de dialogue
  Application.ScreenUpdating = True
  If SheetCount <> 0 Then
    If PrintDlg.Show = True Then
      x = -1
      Application.ScreenUpdating = False
      For i = 1 To SheetCount
        If PrintDlg.CheckBoxes(i).Value = xlOn Then
          x = x + 1: ReDim Preserve Arr(x)
          Arr(x) = PrintDlg.CheckBoxes(i).Caption
        End If
      Next i
    Else: Exit Sub
    End If
  Else
    MsgBox "Tous les Mois sont vides !"
  End If
 
'  Supprime la feuille de dialogue temporaire (sans message d'avertissement)
  Application.DisplayAlerts = False
  PrintDlg.Delete
  If x = -1 Then Exit Sub
 
'  Sélectionne les feuilles et montre un aperçu avant impression
  Sheets(Arr).Select
  ActiveWindow.SelectedSheets.PrintPreview
  'pour imprimer :
 'ActiveWindow.SelectedSheets.PrintOut
End Sub
Merci à vous.

RDBAL.