[VBA: définition de la zone d'impression]

Résolu/Fermé
Signaler
-
 Sarah738 -
Bonjour,

Je travaille sur VBA (pour excel). Je souhaite écrire un code permettant d'imprimer une zone variable de la feuille excel.
C'est à dire que j'écrive dans 20 lignes ou 75 lignes de mon tableau, je voudrais que l'impression puisse être "calibrée" automatiquement sur ce nombre de lignes. J'ai un problème de synthaxe. Quelqu'un aurait la solution?

Merci
P-Yves

9 réponses

Messages postés
1846
Date d'inscription
mercredi 19 janvier 2005
Statut
Membre
Dernière intervention
31 août 2021
1 486
On peut aussi utiliser la propriété Address de VBA :

Sub ZoneImp()
Dim intColMin As Integer, intColMax As Integer
Dim intLinMin As Integer, intLinMax As Integer

intColMin = 1
intColMax = 12
intLinMin = 2
intLinMax = 25

ActiveSheet.PageSetup.PrintArea = Range(Cells(intLinMin, intColMin), Cells(intLinMax, intColMax)).Address

End Sub
12
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

Messages postés
3
Date d'inscription
mardi 16 août 2011
Statut
Membre
Dernière intervention
18 août 2011

J'ai utilisé ta formule, mais le problème est que moi je veux tout sélectionné la feuille pour enfin la défnir en zone d'impression
Messages postés
282
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
10 janvier 2008
214
salut,

ActiveSheet.PageSetup.PrintArea = "$A$83:$E$100"

en utilisant des variables, tu dois pouvoir facilement modifier la chaîne "$A$83:$E$100"

Messages postés
282
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
10 janvier 2008
214
voici la fonction Adresse() qui renvoie une colonne sous forme de lettre avec comme paramètre un numéro de colonne (5 renverra E, 27 renverra AA, etc...) :

Private Function Adresse(Colonne As Integer) As String
'************************************************
' renvoie la référence de colonne au format $AA *
'************************************************
If Colonne < 257 Then
If Colonne > 26 Then
' le IIf() traite le cas particulier des Z
Adresse = "$" & Chr(64 + (Colonne \ 26) + IIf(Colonne Mod 26 = 0, -1, 0))
Else
Adresse = "$"
End If

' le IIf() traite le cas particulier des Z
Adresse = Adresse & Chr(64 + IIf(Colonne Mod 26 = 0, 26, 0) + (Colonne Mod 26))
Else
Adresse = "Erreur : numéro de colonne > 256"
End If
End Function

Sub ZoneImp()
Dim intColMin As Integer, intColMax As Integer
Dim intLinMin As Integer, intLinMax As Integer

intColMin = 1
intColMax = 12
intLinMin = 2
intLin = 25

ActiveSheet.PageSetup.PrintArea = Adresse(inColMin) & intLinMin & ":" & Adresse(intColMax) & intLinMax
' les $ ne sont pas indispensables

End Sub

j'ai tapé ce code directement ici, sans le tester, mais ça devrait être bon.

Slt!

Ca marche nikel, merci beaucoup!

A+
Bonjour,
nous devons faire un programme sur VBA et nous voudrions savoir quel langage VBA placer derrière le bouton "imprimer". Si on a une imprimante ou deux ou plus ? S'il est possible d'avoir un aperçu avant impression et de règler les marges et tout le tralala !

Merci.
ou

Sub zone_impression()
'
' zone d'impression & aperçu

With Range("A:H")
Worksheets("command").Activate
ActiveSheet.PageSetup.PrintArea = Range("A1:H" & .Find("*", .Item(1), , , , xlPrevious).Row).Address
End With
ActiveWindow.SelectedSheets.PrintPreview
End Sub
Bonjour P.Yves (et les autres),
Je viens d'avoir cette problématique. J'ai trouvé comment faire (bon j'espère que depuis votre message, vous avez trouvé la solution).
Pour tous ceux qui ont ce problème voici les lignes pour définir une zone d'impression comprenant les colonnes de A à J et les lignes de 1 jusqu'à la dernière contenant quelque chose (tout ça sur la feuille nommée "Etiquettes") :

Dans la déclaration des variables j'entre :
Dim IL As Long ' l'indice de la dernière ligne utilisée


Ensuite :
IL = Sheets("Etiquettes").Range("A" & Application.Rows.Count).End(xlUp).Row 'Recherche de la dernière ligne

Sheets("Etiquettes").PageSetup.PrintArea = "A1:J" & IL ' Définition de la zone d'impression avec variable IL
Slt,

C'est justement ça mon problème!!
J'arrive pas à introduire une variable dans la synthaxe de:
"$A$83:$E$100"

Tu vois comment je peux faire?


P-Yves
Juste pour dire que ton code me sauve pour ainsi dire la vie ou du moins la fin de mon stage
Messages postés
282
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
10 janvier 2008
214
:-)

Messages postés
3
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
26 février 2010

bonjour je voudrais creer un bouton impression
j ai definis que chaque ligne est a imprimer séparement sur pages différentes
le nombre de feuille a imprimer est a definir cela peut etre 5,10,12,20 juste a définir avant l'impression
merci d'avance
Bonjour,
nous devons faire un programme sur VBA et nous voudrions savoir quel langage VBA placer derrière le bouton "imprimer". Si on a une imprimante ou deux ou plus ? S'il est possible d'avoir un aperçu avant impression et de règler les marges et tout le tralala !