OVH Cloud OVH Cloud

menu d'impression

3 réponses
Avatar
Markos
Bonjour à tous en cette nouvelle année,
Je cherche à réaliser une boite de dialogue temporaire pour sélectionner
certaines feuilles que l'on souhaite imprimer dans un classeur donné.

j'ai trouver un exemple - d'après un code diffusé par René Roy, mpfe - qui
construit effectivement un menu, mais il liste toute les feuiles du fichier.
Je souhaite la même chose mais limiter le choix paramétrable à certaines
feuilles du fichier.
Merci de l'aide.

3 réponses

Avatar
anomymousA
bonjour,

je ne connais pas ce code mais je suppose que comme d'hab, il liste dans un
listbox ou un combobox l'ensemble des feuilles.
2 méthodes sont souvent utilisées pour nourrir ce style de controles:

soit on balaye l'ensemble des feuilles par une boucle du style

for I=1 to worksheets.count
blabala 'on nourrit le controle
next

soit on déclare un tableau Array(......) si on connait par avance le nom des
feuilles puis on passe directement le tableau à un listbox.

Bon, dans tous les cas, on n'invente rien et le code indique la méthode
suivie. POur ne selectionner dans le contenu du controle qu'un certain nombre
de feuilles , il faut restreindre leur source soit en éliminant certianes
feuilles dans la boucle For en faisant un test sur leurs noms quand on les
connait ou sur un critères qui leur appartiennent en propre, soit on modifie
le Array pour n'y inclure que les feuilles qui t'interessent.

C'est ton choix. tu regardes le code et tu appliques l'une des 2 méthodes
précédentes et tout devrait rouler sans problème.

A+


Bonjour à tous en cette nouvelle année,
Je cherche à réaliser une boite de dialogue temporaire pour sélectionner
certaines feuilles que l'on souhaite imprimer dans un classeur donné.

j'ai trouver un exemple - d'après un code diffusé par René Roy, mpfe - qui
construit effectivement un menu, mais il liste toute les feuiles du fichier.
Je souhaite la même chose mais limiter le choix paramétrable à certaines
feuilles du fichier.
Merci de l'aide.





Avatar
Bob Phillips
Bonjour Markos,

Cette aide ?

Sub SelectSheets()
Dim i As Integer
Dim TopPos As Integer
Dim iBooks As Integer
Dim PrintDlg As DialogSheet
Dim CurrentSheet As Worksheet
Dim cb As CheckBox
Application.ScreenUpdating = False


' Check for protected workbook
If ActiveWorkbook.ProtectStructure Then
MsgBox "Classeur est protégé.", vbCritical
Exit Sub
End If


' Add a temporary dialog sheet
Set CurrentSheet = ActiveSheet
Set PrintDlg = ActiveWorkbook.DialogSheets.Add


iBooks = 0


' Add the checkboxes
TopPos = 40
With ActiveWorkbook
For i = 1 To .Sheets.Count
If .Sheets(i).Name <> PrintDlg.Name Then
Set CurrentSheet = .Sheets(i)
' Skip empty sheets and hidden sheets
iBooks = iBooks + 1
PrintDlg.CheckBoxes.Add 78, TopPos, 150, 16.5
PrintDlg.CheckBoxes(iBooks).Text = _
Sheets(i).Name
TopPos = TopPos + 13
End If
Next i
End With


' Move the OK and Cancel buttons
PrintDlg.Buttons.Left = 240


' Reactivate original sheet
CurrentSheet.Activate
PrintDlg.Visible = False


' Set dialog height, width, and caption
With PrintDlg.DialogFrame
.Height = Application.Max _
(68, PrintDlg.DialogFrame.Top + TopPos - 34)
.Width = 230
.Caption = "Choisissez les feuilles pour imprimer"
End With


' Change tab order of OK and Cancel buttons
' so the 1st option button will have the focus
PrintDlg.Buttons("Button 2").BringToFront
PrintDlg.Buttons("Button 3").BringToFront


' Display the dialog box
Application.ScreenUpdating = True
If PrintDlg.Show Then
For Each cb In PrintDlg.CheckBoxes
If cb.Value = xlOn Then
Sheets(cb.Caption).Printout
End If
Next cb
Else
MsgBox "Nothing selected"
End If


' Delete temporary dialog sheet (without a warning)
Application.DisplayAlerts = False
PrintDlg.Delete


End Sub


--
HTH

-------

Bob Phillips
"Markos" wrote in message
news:%
Bonjour à tous en cette nouvelle année,
Je cherche à réaliser une boite de dialogue temporaire pour sélectionner
certaines feuilles que l'on souhaite imprimer dans un classeur donné.

j'ai trouver un exemple - d'après un code diffusé par René Roy, mpfe -
qui

construit effectivement un menu, mais il liste toute les feuiles du
fichier.

Je souhaite la même chose mais limiter le choix paramétrable à certaines
feuilles du fichier.
Merci de l'aide.




Avatar
Markos
Merci à vous deux,
je vais essayer d'utiliser cette macro en incluant mes variables !!!!
je dis bien essayer.
A bientôt.
"Bob Phillips" a écrit dans le message de
news:
Bonjour Markos,

Cette aide ?

Sub SelectSheets()
Dim i As Integer
Dim TopPos As Integer
Dim iBooks As Integer
Dim PrintDlg As DialogSheet
Dim CurrentSheet As Worksheet
Dim cb As CheckBox
Application.ScreenUpdating = False


' Check for protected workbook
If ActiveWorkbook.ProtectStructure Then
MsgBox "Classeur est protégé.", vbCritical
Exit Sub
End If


' Add a temporary dialog sheet
Set CurrentSheet = ActiveSheet
Set PrintDlg = ActiveWorkbook.DialogSheets.Add


iBooks = 0


' Add the checkboxes
TopPos = 40
With ActiveWorkbook
For i = 1 To .Sheets.Count
If .Sheets(i).Name <> PrintDlg.Name Then
Set CurrentSheet = .Sheets(i)
' Skip empty sheets and hidden sheets
iBooks = iBooks + 1
PrintDlg.CheckBoxes.Add 78, TopPos, 150, 16.5
PrintDlg.CheckBoxes(iBooks).Text = _
Sheets(i).Name
TopPos = TopPos + 13
End If
Next i
End With


' Move the OK and Cancel buttons
PrintDlg.Buttons.Left = 240


' Reactivate original sheet
CurrentSheet.Activate
PrintDlg.Visible = False


' Set dialog height, width, and caption
With PrintDlg.DialogFrame
.Height = Application.Max _
(68, PrintDlg.DialogFrame.Top + TopPos - 34)
.Width = 230
.Caption = "Choisissez les feuilles pour imprimer"
End With


' Change tab order of OK and Cancel buttons
' so the 1st option button will have the focus
PrintDlg.Buttons("Button 2").BringToFront
PrintDlg.Buttons("Button 3").BringToFront


' Display the dialog box
Application.ScreenUpdating = True
If PrintDlg.Show Then
For Each cb In PrintDlg.CheckBoxes
If cb.Value = xlOn Then
Sheets(cb.Caption).Printout
End If
Next cb
Else
MsgBox "Nothing selected"
End If


' Delete temporary dialog sheet (without a warning)
Application.DisplayAlerts = False
PrintDlg.Delete


End Sub


--
HTH

-------

Bob Phillips
"Markos" wrote in message
news:%
Bonjour à tous en cette nouvelle année,
Je cherche à réaliser une boite de dialogue temporaire pour sélectionner
certaines feuilles que l'on souhaite imprimer dans un classeur donné.

j'ai trouver un exemple - d'après un code diffusé par René Roy, mpfe -
qui

construit effectivement un menu, mais il liste toute les feuiles du
fichier.

Je souhaite la même chose mais limiter le choix paramétrable à certaines
feuilles du fichier.
Merci de l'aide.