PRENDRE UN CLICHÉ DE LA SELECTION DE CELULES(VBA)

Signaler
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
-
Messages postés
42
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
26 juin 2013
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/52838-prendre-un-cliche-de-la-selection-de-celules-vba

Messages postés
42
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
26 juin 2013

bonjour nathansecret

ben ma fois tu met une 3 eme condition et tu choisi l'orientation que tu veux

mais de toute facon par defaux c'est "xlportrait"
et j'irais meme plus loin
si ton cliché est un carré parfait que tu choisisse l'un ou l'autre il aurra la meme taille sur les deux solution en sortie imprimante puisque adaptation automatic


allez
au plaisir
Messages postés
63
Date d'inscription
mardi 11 novembre 2008
Statut
Membre
Dernière intervention
31 octobre 2011

Mimizanzan :

If ma_selection.Width > ma_selection.Height Then .Orientation = xlLandscape
If ma_selection.Width < ma_selection.Height Then .Orientation = xlPortrait

Et si ma_selection.Width = ma_selection.Height ?
Messages postés
42
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
26 juin 2013

bonjour mimizanzan

oui tu a raison jai fait la meme chose avec le tag moi transféré en variable string et mis le tout en selectcase pour les 3 options

au plaisir
Messages postés
301
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
17 décembre 2017

Salut patosch,

Si je peux me permettre quelques optimisations de ton code (oui, je suis un peu perfectionniste..):
1/ Dans le module Menu_context_usf, il serait préférable de n'utiliser qu'une fois les lignes With ActiveSheet.PageSetup, etc
Il existe une propriété CommandBars.ActionControl qui permet de retrouver le controle qui a appelé la procédure, donc on peut faire une seule procédure que l'on relie aux 3 controles du sous-menu Impression (on ecrit .OnAction="ActionsImp" pour ces 3 controles):

Sub ActionsImp()
Dim ap As Boolean, bw As Boolean, ix As String
ix = CommandBars.ActionControl.Caption
Select Case ix
Case "Imprimer la selection" ap False: bw False
Case "Apercu avant Impression" ap True: bw False: UserForm1.Hide
Case "Impression en Noir et Blanc" ap False: bw True
End Select
With ActiveSheet.PageSetup
.PrintArea = ma_selection.Address
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.PrintGridlines = False
.CenterHorizontally = True
.CenterVertically = True
If ma_selection.Width > ma_selection.Height Then .Orientation = xlLandscape
If ma_selection.Width < ma_selection.Height Then .Orientation = xlPortrait
.PaperSize = xlPaperA4
.BlackAndWhite = bw
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
ActiveSheet.PrintOut preview:=ap
If UserForm1.Visible = False Then UserForm1.show 0
End Sub

Rq: il faut définir Set ma_selection = Selection dans la sub apercu du module cliché. C'est + sûr car si par hasard on déselectionne la zone, çà déclenche un bug.

2/ Il est inutile de déclarer Public les API du module Module_userform, ainsi que le handle. Les déclarer en Privé libère de la place mémoire.
3/ Idem pour les API du module cliché, et les variables Type,cmb et but. Les variables Donnee,newlargeur,newhauteur ne sont pas utilisées.
4/ Inutile de calculer le handle plusieurs fois dans le module Module_userform: il suffit de le déterminer à l'ouverture de la form avec la sub usf_properties
5/ Un conseil: forcer la déclarations des variables avec Option Explicit en tête de tous les modules; çà permet de vite retrouver une erreur (à définir dans le menu VBA Option/Editeur)
6/ Décocher la case Options de confidentialité dans le menu Excel Outils/Option/Sécurité, çà pose des pbs à l'enregistrement.

Voilà, désolé pour ces "pinailleries", j'espère que tu trouveras çà malgré tout utile...
Çà n'empêche que ton code marche correctement tel qu'il est, sauf que l'on déclenche un aperçu quand on choisit une impression noir & blanc.

Cdt
Afficher les 17 commentaires