Impression plusieurs feuilles en VBA (excel 2007)

Signaler
Messages postés
6
Date d'inscription
jeudi 14 avril 2011
Statut
Membre
Dernière intervention
11 juillet 2011
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour,

J'essaie de créer une macro permettant d'imprimer plusieurs pages à partir d'Excel. Le problème c'est que c'est page ne se suivent pas.

Effectivement, j'ai besoin de faire imprimer les pages comprises entre les cellules 1@41 et 124@158. Pour les deux feuilles, c'est le contenu compris entre les rangé 1@10 qui devra s'imprimer.

J'ai créé une procédure, mais en lorsque je clique sur le bouton pour imprimer, il n'imprime qu'une seule des deux pages à imprimer.

Voici la fonction que j'ai faite:

Private Sub CommandButton5_Click()
 
dim intColMin as integer, intColMax as integer
dim intLinMax_autre as integer, intLinMax_autre as integer
dim intLinMax as integer, intLinMax as integer
 
intColMin = 1
intColMax = 10
intLinMin_autre = 1
intLinMax_autre = 41
intLinMin = 124
intLinMax = 158
 
with ActiveSheet.PageSetup.PrintArea = Range(Cells(intLinMin, intColMin), _
Cells(intLinMax, intColMax)).Address
ActiveSheet.PageSetup.PrintArea = Range(Cells(intLinMi_nautre, intColMin), _
Cells(intLinMax_autre, intColMax)).Address
end with
 
Application.Dialogs(xlDialogPrinterSetup).Show
    ActiveWindow.SelectedSheets.PrintOut
 
Paramètre_impression.Hide
 
End Sub



Merci à l'avance de votre aide.

9 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Bonjour,

Lu dans l'aide VBA pour la propriété PrintArea :
Cette propriété renvoie ou définit la plage à imprimer, sous la forme d'une chaîne de caractères utilisant les références de type A1 dans le langage de la macro. Type de données String en lecture-écriture


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
il n'imprime qu'une seule des deux pages à imprimer.


pardi ! ===Celle-ci :
 Range(Cells(intLinMi_nautre, intColMin), _
Cells(intLinMax_autre, intColMax)).Address

puisque tu ne demandes pas d'impression entre la première et la 2ème plage
Donc ===>>>> seule plage passée à ta boite d'impression : la seconde !
____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
6
Date d'inscription
jeudi 14 avril 2011
Statut
Membre
Dernière intervention
11 juillet 2011

Comment faire alors, via vba, pour demander qu'il imprime les deux pages ????
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Je crois t'y avoir pourtant "guidé" plus haut, non ?
Imprime la première plage puis imprime la deuxième.

Si tout cela te parait du chinois, voilà une autre méthode "à la hussarde" :
Tu ajoutes dynamiquement une feuille
Tu y copies ta première plage
Tu y insères un saut de page (si tu le souhaites)
Tu y copies la 2ème plage
Tu imprimes la feuille ajoutée
Tu supprimes la feuille ajoutée
Ma foi ...

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
6
Date d'inscription
jeudi 14 avril 2011
Statut
Membre
Dernière intervention
11 juillet 2011

Je comprend le principe d'imprimer la première page puis la seconde après. Le problèmes c'est que mon fichier comprte plusieurs pages et les pages a imprimer ne se suivent pas nécéssairement. Il faut, entre-autre, que j'imprime les ligne 1@42 et 124@158.

Ce que j'aimerais, c'est que lorsque l'utilisateur sélectionne l'imprimante qu'il veut imprimer, via
Application.Dialogs(xlDialogPrinterSetup).Show
    ActiveWindow.SelectedSheets.PrintOut
qu'il soit en mesure d'imprimer les 2 pages qu'il veut en même temps sans avoir à demander d'imprimer la première et ensuite la seconde. Comment faire pour que VBA comprennent qu'il faut qu'il imprime seulement les pages suivantes en une seule impression :
intColMin = 1
intColMax = 10
intLinMin_autre = 1
intLinMax_autre = 41
intLinMin = 124
intLinMax = 158
en une seule impression ???
Messages postés
6
Date d'inscription
jeudi 14 avril 2011
Statut
Membre
Dernière intervention
11 juillet 2011

En passant, je suis un débutant par rapport à VBA. J'en suis à ;a création de mes premières macro.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Je crois ;
1) avoir été assez clair
2) je t'ai également exposé une méthode "à la hussarde"
3) je n'y peux rien, mais (c'est ainsi depuis mon plus jeune âge) je suis soudainement touché par une crise d'aphonie sélective aigüe face à certaines réactions de refus de comprendre. C'est le cas ici.
Bonne chance.




____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
6
Date d'inscription
jeudi 14 avril 2011
Statut
Membre
Dernière intervention
11 juillet 2011

Y à t'il quelq'un alors qui pourrait m'aider, en m'indiquant quelques lignes de code, afin de pouvoir exécuter la fonction que j'aimerais faire
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Juste un dernier mot.
La méthode "à la hussarde" décrite plus haut, assortie de la méthode PrintOut (à voir dans ton aide VBA), ne nécessitera aucune intervention de l'utilisateur (pas d'ouverture de la boite de dialogue d'impression).
Voilà ! Je pars avec le sentiment d'avoir tout dit aux âmes de bonne volonté.

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP