Une Visualisation Imparfaite.
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:
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.