Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro vba choix des onglets à imprimer

  • Initiateur de la discussion Initiateur de la discussion Madjon6
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Madjon6

XLDnaute Occasionnel
Bonjour,

Je cherche une macro en VBA me permet de choisir les onglets à imprimer.

Si c'est possible de choisir plusieurs onglets en même temps ca serait encore mieux.

Merci d'avance
 
Re : Macro vba choix des onglets à imprimer

Bonjour

A mettre dans une macro (Alt F11)

Code:
Sub imprimer_onglet()

'pour chacune des feuilles du classeur
For Each feuille_en_cours In Sheets

    'l 'activer pour visualiser
    feuille_en_cours.Activate
    
    'demander à l'imprimer
    reponse = MsgBox("Voulez-vous imprimer la feuille : " & feuille_en_cours.Name & " ?", vbYesNoCancel)
    
    'si la réponse n'est ni oui ni non, sortir du programme
    If reponse <> 6 And reponse <> 7 Then End
    
    'si la réponse est oui (6), imprimer
    If reponse = 6 Then feuille_en_cours.PrintOut

Next


Cette solution permet de choisir coup par coup, et d'imprimer ce que l'on choisit.
Pour une gestion par liste (par exemple sur une feuille, avec OUI pour ce que l'on veux imprimmer), il faut utiliser une boucle qui ne lira pas la collection Sheets, mais qui lira la liste contenu sur la feuille.

Cordialement

Olivier
 
Dernière édition:
Re : Macro vba choix des onglets à imprimer

Merci beaucoup +++

Par contre la macro telle qu'elle propose d'imprimer ou pas tous les onglets y a t il un moyen qu'elle ne me demande que certains onglets car le classeur contient beaucoup des feuilles de calcul qu'on imprime jamais

Merci à vous
 
Dernière édition:
Re : Macro vba choix des onglets à imprimer

Re.
En réalisant un contrôle sur le nom de la feuille.

Si par exemple, nous ne voulez pas imprimer les feuilles "Feuille des données", "Parametres" et "Horaires Semaine", il suffit de rajouter une fonction 'IF'

Code:
Sub imprimer_onglet()

'pour chacune des feuilles du classeur
For Each feuille_en_cours In Sheets
  if feuille_en_cours.Name <> "Feuille des données" and feuille_en_cours.Name <> "Parametres" and feuille_en_cours.Name <> "Horaires Semaine" then
    'l 'activer pour visualiser
    feuille_en_cours.Activate
    
    'demander à l'imprimer
    reponse = MsgBox("Voulez-vous imprimer la feuille : " & feuille_en_cours.Name & " ?", vbYesNoCancel)
    
    'si la réponse n'est ni oui ni non, sortir du programme
    If reponse <> 6 And reponse <> 7 Then End
    
    'si la réponse est oui (6), imprimer
    If reponse = 6 Then feuille_en_cours.PrintOut


   end if
Next

Cela vous oblige à définir manuellement dans le programme toutes les feuilles que vous ne souhaitez pas imprimer.
Une autre solution pourrait être de mettre un 'flag' sur chaque feuille :
Exemple, en cellule A1 : "Imp" si l'on veux imprimer la feuille
if feuille_en_cours.cells(1,1).value = "Imp"

(à la place de l'autre IF ... )


Cordialement

Olivier
 
Re : Macro vba choix des onglets à imprimer

Bonsoir Madjon6, Odesta,

Une solution avec le choix d'une ou plusieurs feuilles dans une ListBox :

Code:
Private Sub CommandButton1_Click()
Dim i as Integer
UserForm1.Hide
With ListBox1
  For i = 0 To .ListCount - 1
    If .Selected(i) Then Sheets(.List(i)).PrintOut 'Preview:=True
  Next
End With
UserForm1.Show
End Sub

Private Sub UserForm_Initialize()
Dim s As Object
ListBox1.MultiSelect = fmMultiSelectExtended
For Each s In Sheets
  ListBox1.AddItem s.Name
Next
End Sub

A+
 

Pièces jointes

Re : Macro vba choix des onglets à imprimer



Salut,
je reprends ce poste. Ta macro est super mais je n'arrive pas à l'activer chez moi.
J'ai une erreur 434.

Peux-tu m'aider stp ?
est-on obligé de passer par une private Sub ?
 
Re : Macro vba choix des onglets à imprimer

Bonjour grosquick59, salut Staple,

Très bonne question Jean-Marie 🙂

Mais on peut aussi se passer d'UserForm... Voir le fichier joint.

Les macros dans Module1 (Alt+F11) :

Code:
Sub ChargeListBox()
Dim s As Object
With Sheets("Feuil1").ListBox1
  .MultiSelect = fmMultiSelectExtended
  .Clear
  For Each s In Sheets
    .AddItem s.Name
  Next
End With
End Sub

Sub Imprimer()
Dim i As Integer
With Sheets("Feuil1").ListBox1
  For i = 0 To .ListCount - 1
    If .Selected(i) Then Sheets(.List(i)).PrintOut 'Preview:=True
  Next
End With
ActiveCell.Activate
End Sub

Voir dans les codes de Feuil1 et de ThisWorkbook les macros évènementielles.

A+
 

Pièces jointes

Re : Macro vba choix des onglets à imprimer

Re,

Hum, je n'avais testé le fichier (2) qu'avec l'aperçu avant impression !

L'impression elle-même (PrintOut) déclenche la macro SheetActivate...

Il faut donc désactiver l'action des évènements :

Code:
Sub Imprimer()
Dim i As Integer
With Sheets("Feuil1").ListBox1
  Application.EnableEvents = False 'désactive l'action des évènements
  For i = 0 To .ListCount - 1
    If .Selected(i) Then Sheets(.List(i)).PrintOut 'Preview:=True
  Next
  Application.EnableEvents = True
End With
ActiveCell.Activate
End Sub

Fichier (3) joint.

A+
 

Pièces jointes

Dernière édition:
Re : Macro vba choix des onglets à imprimer

Merci pour les réponses.
Job75 avec ta solution peut-on se passer d'afficher le formulaire ?
ça me dérange un peu d'avoir le liste sur la feuille et des msgbox.
En fait ta toute première solution était quasi parfaite, je n'arrive juste pas à l'adapter sur mon classeur.

Staple1600 tu entends quoi par Controle ListBox sur la feuil1 ?
 
Dernière édition:
Re : Macro vba choix des onglets à imprimer

Bonsoir grosquick59,

En fait ta toute première solution était quasi parfaite (...)

Je vois que vous savez apprécier les bonnes choses.

(...) je n'arrive juste pas à l'adapter sur mon classeur.

Dommage, car maintenant je tire l'échelle.

Baladez-vous un peu sur les UserForms du forum.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
145
Réponses
5
Affichages
142
Réponses
6
Affichages
163
Réponses
5
Affichages
253
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…