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

Zone d'impression

  • Initiateur de la discussion Initiateur de la discussion Calvus
  • 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 !

Calvus

XLDnaute Barbatruc
Bonsoir,

J'ai trouvé le fichier (absolument génial !) ci-joint sur le forum.
Chapeau bas M. Kjin !

Dans un souci d'adaptation, est il possible de définir 2 zones d'impression (c'est déjà le cas) mais de n'avoir au final qu'une seule page.
C'est à dire que j'aurais sur une même page la plage A1:B20, et la plage M1:Q20. Les colonnes C à L seraient ignorées.
Exemple en feuille1

Merci
 

Pièces jointes

Dernière édition:
Re : Zone d'impression

Bonjour,
d'abord tu dois renommer les plages à imprimer
exemple a1:b20 ==> plage1
m1:q20 ==> plage2

ensuite tu exécute le code suivant:

Code:
Sub Imprime_deux_zones()
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Name = "imp_plg"
    Range("plage3").Copy
    ActiveSheet.Select
    Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("plage4").Copy
    cl = ActiveSheet.Range("A1" & Columns.Count).End(xlToLeft).Column + 3
    Cells(1, cl).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Cells.EntireColumn.AutoFit
    ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
    Sheets("imp_plg").Select
    ActiveWindow.SelectedSheets.Delete
End Sub

testé sur ton fichier.
 
Re : Zone d'impression

Re,

empêcher le message de confirmation:


Code:
Sub Imprime_deux_zones()
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Name = "imp_plg"
    Range("plage3").Copy
    ActiveSheet.Select
    Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("plage4").Copy
    cl = ActiveSheet.Range("A1" & Columns.Count).End(xlToLeft).Column + 3
    Cells(1, cl).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Cells.EntireColumn.AutoFit
    ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
    Sheets("imp_plg").Select
    ActiveWindow.SelectedSheets.Delete
   With Application
         .ScreenUpdating = true
         .DisplayAlerts = true
    End With
End Sub
 
Re : Zone d'impression

Bonjour,

Merci kingfadhel, mais d'une part le code ne fonctionne pas chez moi, il génère une erreur 1004.

D'autre part, ce que je souhaite c'est adapter le code de Kjin. C'est exactement ce qu'il me faut, sachant que mon fichier comporte 55 onglets et 8 zones d'impression, voire davantage et variables. Impossible dans ce cas de nommer les zones.

La seule chose qui manque est de pouvoir ignorer les zones intermédiaires.A ceci près, la solution de Maître Kjin avec son userform répond parfaitement à cette demande.

Merci
 
Re : Zone d'impression

Bonjour Calvus, kingfadhel,

Dans le code de l'USF modifiez la macro du bouton Imprimer comme suit :

Code:
Private Sub CommandButton1_Click()
Dim i%, zone$, zoneimp$
For i = 0 To ListBox2.ListCount - 1
    If ListBox2.Selected(i) Then
        zone = zone & ListBox2.List(i, 1) & ","
    End If
Next
zone = Left(zone, Len(zone) - 1)
zoneimp = Replace(zone, ",", ":")
Me.Hide
For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) Then
        With Sheets(ListBox1.List(i))
            .PageSetup.PrintArea = ""
            .PageSetup.PrintArea = zoneimp
            .Range(zoneimp).EntireColumn.Hidden = True 'masque tout
            .Range(zone).EntireColumn.Hidden = False 'affichage partiel
            '.PrintOut                      ' à décocher pour imprimer
            .PrintPreview                   ' à cocher pour imprimer
            .Range(zoneimp).EntireColumn.Hidden = False 'affiche tout
        End With
    End If
Next
Me.Show
End Sub
A+
 
Re : Zone d'impression

Bonjour Job,

Encore à ma rescousse ! 😉

J'ai inséré le code qui me donne une erreur à la ligne suivante :

Code:
.Range(zone).EntireColumn.Hidden = False 'affichage partiel

Je ne pourrai certainement plus regarder avant ce soir.

Merci et bonne journée
 
Re : Zone d'impression

Re,

Par acquit de conscience essayez :

Code:
Private Sub CommandButton1_Click()
Dim i%, zone$, zoneimp$, a As Range
For i = 0 To ListBox2.ListCount - 1
    If ListBox2.Selected(i) Then
        zone = zone & ListBox2.List(i, 1) & ","
    End If
Next
If zone = "" Then Exit Sub 'si aucune zone n'est cochée
zone = Left(zone, Len(zone) - 1)
zoneimp = Replace(zone, ",", ":")
Me.Hide
For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) Then
        With Sheets(ListBox1.List(i))
            .PageSetup.PrintArea = ""
            .PageSetup.PrintArea = zoneimp
            .Range(zoneimp).EntireColumn.Hidden = True 'masque tout
            For Each a In .Range(zone).Areas
              a.EntireColumn.Hidden = False 'affichage partiel
            Next
            '.PrintOut                      ' à décocher pour imprimer
            .PrintPreview                   ' à cocher pour imprimer
            .Range(zoneimp).EntireColumn.Hidden = False 'affiche tout
        End With
    End If
Next
Me.Show
End Sub
A+
 
Dernière édition:
Re : Zone d'impression

Bonsoir,

Job, ça fonctionne à merveille. Bizarrement, je viens de tester à nouveau le 1er code que vous avez envoyé et il fonctionne maintenant. Alors peut être ai-je fait une fausse manip ce matin ? Bizarre...
Dans ce cas, dois-je utiliser plutôt l'un que l'autre ?
Je reviendrai si nécessaire après quelques tests d'impression sur mon gros fichier.

Merci encore.
 
Re : Zone d'impression

Bonjour,

Je reviens avec un bout de mon fichier modifié.

J'arrive à obtenir une fenêtre pour l'impression, à partir du Userform, mais il manque les cases à cocher.
Les seules modifications que j'ai faites par rapport au fichier initial, sont les changements des noms des boutons de commande (inversé Commandbutton 1 avec le 2) et le nom des plages dynamiques.
J'ai bien évidemment effectué les changements dans le code.

Par rapport au 1er fichier, il manque une colonne, mais ça ne semble rien changer si on la rajoute.

Où pensez vous que se trouve le problème, et merci de me l'expliquer afin que je puisse continuer le travail en " relative autonomie ! " 😱

Merci
 

Pièces jointes

Re : Zone d'impression

Bonsoir Job,

Je fréquente ce forum depuis assez longtemps pour savoir quel est le but de ce dernier, où lequel il n'est pas !
J'ai pour ma part, ici même, construit des fichiers entiers pour d'autres moins doués que moi, à leur demande, et dans un esprit d'entre-aide, même si ça peut s'éloigner de ma vision pédagogique des choses. Mais c'était pour les sortir du pétrin à un moment donné. Mes dires sont assez faciles à vérifier.

Quant à moi, ce que je demande ici, c'est simplement, qu'éventuellement quelqu'un prenne la peine de m'expliquer certaines choses. Je n'ai jamais demandé du tout cuit, pas plus dans ce post que dans un autre. Cela aussi est facile à vérifier.

Je vous remercie donc, cher Job, de l'aide que vous m'avez déjà apportée, bien plus importante que ce que j'avais demandé.
Si vous relisez bien le post #1, vous verrez qu'il s'agit d'une question ouverte,

Dans un souci d'adaptation, est il possible de définir 2 zones d'impression

où une réponse de votre part comme par exemple : " oui c'est tout à fait possible." m'aurait entièrement satisfait.
Je vous aurais probablement demandé alors quels seraient les moyens d'y parvenir, et aurais cherché, comme je le fais habituellement.

Or, vous m'avez répondu par un grand paragraphe de code, auquel je ne comprends rien !
Là encore, je vous remercie, ce code fonctionne et répond en effet à mon besoin.

Seulement, pour l'adapter à mon fichier...dur dur vu que je n'y comprends pas grand chose.
Bah non ! je ne comprends pas grand chose au vba, ni à excel d'ailleurs, et c'est pour cela aussi que je suis sur ce forum.
Mais nous n'irons peut être pas sur le domaine des compétences de chacun, car je serais alors tenté de de vous inviter à venir vous frotter aux miennes, et nous inverserions les rôles.

Je vous remercie donc à nouveau platement de l'aide que vous avez pu m'apporter.

Pour le reste, si une âme charitable pouvait me dire où chercher, dans le code ou ailleurs, je me ferais alors un plaisir de passer des heures encore à me dépatouiller de mon classeur.

afin que je puisse continuer le travail en " relative autonomie ! "

Si cela n'est pas possible, je me débrouillerai autrement.


Cordialement.


Ps : on voit de tout sur ce forum, qui a cependant bien changé, en ce sens que beaucoup apportent des réponses toutes faites, aliénant toujours ainsi ceux qui demandent une explication.
Beaucoup de "demandeurs" s'en contentent, voire s'en satisfont, et beaucoup de "répondeurs" s'en plaigent alors qu'ils jouent eux-mêmes ce jeu là.
Je ne fais pas partie des premiers. Je demande à apprendre et à comprendre, pas que d'autres fassent le boulot pour moi.

Quant à la seconde catégorie, vous verrez si vous prenez le temps de consulter mes anciens messages, que j'ai à chaque fois tenté d'expliquer ce que je faisais, modestement, à d'autres qui visiblement étaient en core plus en difficulté que moi sur un problème précis.
 
- 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

C
Réponses
11
Affichages
2 K
A
Réponses
0
Affichages
3 K
A
B
Réponses
4
Affichages
41 K
B
A
Réponses
5
Affichages
4 K
A
Réponses
32
Affichages
8 K
julesvernes
J
J
Réponses
9
Affichages
2 K
J
C
Réponses
3
Affichages
18 K
jeromevde
J
H
Réponses
3
Affichages
1 K
Y
Réponses
1
Affichages
1 K
J
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…