Création
d'entreprise
Posez votre question Signaler

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

P-Yves - Dernière réponse le 29 mars 2012 à 11:45
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
Lire la suite 

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

13 réponses
Réponse
+7
moins plus
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
patrick77flyers- 16 août 2011 à 21:29
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
Ajouter un commentaire
Réponse
+3
moins plus
salut,

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

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

Ajouter un commentaire
Réponse
+3
moins plus
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.

P-Yves - 27 avril 2005 à 09:10
Slt!

Ca marche nikel, merci beaucoup!

A+
Mlika - 13 nov. 2008 à 11:50
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.
Ajouter un commentaire
Réponse
+3
moins plus
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
Ajouter un commentaire
Réponse
+2
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
Juste pour dire que ton code me sauve pour ainsi dire la vie ou du moins la fin de mon stage
Kobaya- 29 août 2006 à 23:05
:-)

Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
-2
moins plus
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 !
Ajouter un commentaire
Ce document intitulé « [VBA: définition de la zone d'impression] » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?