Bonjour à tous.
Voilà mon problème :
Je souhaite par un code vba lancer une impression de mes feuilles contenues dans mon classeur.
J’ai donc trouvé un code qui marche très bien et avec un userform qui me permet de sélectionner dans une liste contenant toutes les feuilles de mon classeur celles que je souhaite imprimer.
Mais miracle d’excel ; si on lance une impression par un code ou une macro regroupant plusieurs feuilles les sauts de pages sont ensuite impossible à modifier (là c’est un mystère).
Menu : Affichage / aperçu des sauts de pages
Sur la ligne bleue le curseur de la souris n’a plus d’effets.
J’ai donc trouvé un code qui rétablit les choses, qui marche très bien activé par un bouton macro.
Je voudrais l’intégrer à mon code vba d’impression pour qu’il rétablisse la possibilité de modifier à nouveau les sauts de pages sur celles que je viens d’imprimer.
Pouvez-vous m’aider –svp
Et voilà mon code d'impression
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Private Sub razSautsPage_Click() Sheets("feuille1").DisplayAutomaticPageBreaks = True End Sub
Merci par avance
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 Private Sub imprimante_Click() 'Attribute VB_Name = "BoiteDialogueImprimerFeuilles" 'construit une boite de dialogue temporaire pour sélectionner 'les feuilles que l'on souhaite imprimer dans un classeur 'Sub ChoixImpressionFeuilles() 'd'après un code diffusé par René Roy, mpfe 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 feuilles 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 = "Feuille(s) à 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 "Toutes les feuilles sont vides." End If ' Compte le nombre de page à imprimer 'Sheets("garde").Range("E41").Value = (Wsh.VPageBreaks.Count + 1) * (Wsh.HPageBreaks.Count + 1) ' NbPages = (Wsh.VPageBreaks.Count + 1) * (Wsh.HPageBreaks.Count + 1) 'MsgBox ExecuteExcel4Macro("Get.Document(50)") ' 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 End Sub
LagratteCchouette
Partager