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:
Merci à vous.
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
RDBAL.
Partager