Rechercher : dans
Par :

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

Dernière réponse le 13 nov 2008 à 12:21:07 P-Yves, le 26 avr 2005 à 10:06:58 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [VBA: définition de la zone d'impression] » dans :
Impression : sous quel format travailler ? VoirVotre travail de graphiste est souvent appelé à être publié. Il y a certaines règles à respecter pour éviter toute surprise une fois le travail imprimé. Le mode de travail La résolution L’enregistrement : tiff, eps ou jpeg...
Impression d’un document VoirIl est bien sûr possible (et facile) d’imprimer un tableau de calcul. Vous pouvez imprimer tout ou partie d’une feuille de calcul, choisir l’orientation (portait ou paysage), définir les marges et les sauts de ligne, etc. Une précieuse...

1

Kobaya, le 26 avr 2005 à 13:37:54
  • +1

Salut,

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

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

A+,
Kobaya.

Répondre à Kobaya

2

P-Yves, le 26 avr 2005 à 14:50:14

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

Répondre à P-Yves

3

Kobaya, le 26 avr 2005 à 14:59:36

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.

A+,
Kobaya.

Répondre à Kobaya

4

P-Yves, le 27 avr 2005 à 09:10:03

Slt!

Ca marche nikel, merci beaucoup!

A+

Répondre à P-Yves

9

Mlika, le 13 nov 2008 à 11:50:43

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.

Répondre à Mlika

5

toto, le 29 aoû 2006 à 19:43:11

Juste pour dire que ton code me sauve pour ainsi dire la vie ou du moins la fin de mon stage

Répondre à toto

6

Kobaya, le 29 aoû 2006 à 23:05:48
  • +1

:-)

A+,
Kobaya.

Répondre à Kobaya

7

Armojax, le 30 aoû 2006 à 08:36:45
  • +1

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

Répondre à Armojax

8

exceljl, le 1 aoû 2007 à 00:51:32
  • +1

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

Répondre à exceljl

10

 Mlika, le 13 nov 2008 à 12:21:07
  • +1

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 !

Répondre à Mlika