Définir zone d'impression variable

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

FL123

XLDnaute Nouveau
Bonjour à tous,

Je souhaite créer une macro afin de définir une zone d'impression avec colonnes variables.

En effet, les lignes 1 à 43 resteront toujours les mêmes, en revanche, les colonnes à imprimer sont uniquement les colonnes non vides, à partir de la colonne A.

Ici le code que j'ai entré, ne fonctionnant pas 🙁

Sub defimpress()

Application.ScreenUpdating = False
For i = 1 To 43
Cells(i, 16000).Select
Selection.End(xlLeft).Select
If Selection.Column > fin Then fin = Selection.Column
Next i
Application.ScreenUpdating = True

Set impression = Range([A1], Cells(43, fin))
ActiveSheet.PageSetup.PrintArea = impression.Address

End Sub


Merci à tous pour votre aide 🙂
 
Re : Définir zone d'impression variable

Bonjour
Essayez comme ça:
VB:
Sub DefImpress()
With ActiveSheet: .PageSetup.PrintArea = PlgUti(.[A1], .[1:43]).Address: End With
End Sub
Avec :
VB:
Function PlgUti(ByVal PlageDép As Range, Optional ByVal PlagExam As Range = Nothing) As Range
Rem. Cherche la partie utilisée d'une plage, c'est à dire celle qui s'étend jusqu'à la dernière cellule renseignée de plus qu'une chaîne vide.
'    PlageDép: Plage de départ. Seule la 1ère cellule spécifiée est prise en compte pour la déterminer, et suffit donc pour une utilisation VBA.
'            Pour utilisation en formules, il est néanmoins nécessaire de spécifier la plage depuis celle ci jusqu'au reste des colonnes entières.
'    PlageExam: Plus grande plage susceptible de contenir la plage cherchée.
'            Facultatif: UsedRange assumé par défaut.
Dim LMax As Long, CMax As Long, NbL As Long, NbC As Long
On Error GoTo RienTrouvé
If PlagExam Is Nothing Then Set PlagExam = PlageDép.Worksheet.UsedRange
LMax = PlagExam.Find("*", PlagExam.Cells(1, 1), xlValues, xlWhole, xlByRows, xlPrevious).Row
CMax = PlagExam.Find("*", PlagExam.Cells(1, 1), xlValues, xlWhole, xlByColumns, xlPrevious).Column
On Error GoTo 0
NbL = LMax - PlageDép.Row + 1: If NbL < 1 Then GoTo CEstToutVide
NbC = CMax - PlageDép.Column + 1: If NbC < 1 Then GoTo CEstToutVide
Set PlgUti = PlageDép.Resize(NbL, NbC)
Exit Function
RienTrouvé: Resume CEstToutVide
CEstToutVide: Set PlgUti = Nothing
End Function
 
Dernière édition:
Re : Définir zone d'impression variable

Bonjour, FL123, Dranreb 🙂, le Forum,

Bienvenue sur XLD, FL123.

Peut-être, également, ainsi :

Code:
Option Explicit
Sub Imprimer_nombre_colonnes_variable()
Range(Range("a1"), Range("a43").End(xlToRight)).PrintPreview 'lance l'aperçu
'Range(Range("a1"), Range("a43").End(xlToRight)).PrintOut  'lance l'impression
End Sub

A bientôt 🙂

P. S. : Bonjour, Efgé 😀
 
Dernière édition:
Re : Définir zone d'impression variable

Bonjour FL123, Dranreb, Bonjour 00 🙂
Je n'ai peut être pas tout saisi mais...
Définir une zone d'impression bidon (Fichier / Zone d'impression / definir)
Definir une plage dynamique nommée Plg (insertion / Nom / definir)
=DECALER(Feuil1!$A$1;;;43;NBVAL(Feuil1!$1:$1))
Puis remplacer la formule de la zone d'impression par =Plg
Cordialement
 

Pièces jointes

Re : Définir zone d'impression variable

Bonjour à tous,

Je vous remercie pour vos réponses !

Dranreb j'ai utilisé ton code, en revanche DoubleZero ton code m'a permis de lancer l'aperçu et l'impression à partir de celui-ci, c'est parfait !

Efgé merci aussi à toi pour ta réponse, mon fichier est quasiment fait entièrement de macros, j'ai donc préféré continuer avec celles-ci, mais ta solution fonctionne également j'ai essayé !

Merci à tous !
 
- 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
7
Affichages
163
Réponses
2
Affichages
1 K
Retour