En VBA définir une zone d'impression

apdf

XLDnaute Occasionnel
Bonjour

J'ai une question a poser. Est il possible de définir une zone d'impression en fonction du nombre de ligne.

Je m'explique: j'ai un classeur et suivant les concours il y a de 50 à 250 adhérents et a chaque fois que je doit imprimer je doit définir une zone d'impression. Y a t-il en VBA un code qui permette de définir la zone d'impression suivant le nombre de ligne a imprimer?

Je vous remercie de votre aide
Cordialement
Max
 
Dernière édition:

Moa

XLDnaute Occasionnel
Re : En VBA définir une zone d'impression

Salut apdf,

Oui il te suffit de déterminer ta dernière ligne non vide de ta colonne.

Sub printAreaMod()
Dim derLig As Integer

derLig = Cells(65000, 2).End(xlUp).Row
ActiveSheet.PageSetup.PrintArea = "B4:E" & derLig
End Sub

Si ta colonne est B et que tes données commencent en B4.

@ +++

Kris Moa
 

job75

XLDnaute Barbatruc
Re : En VBA définir une zone d'impression

Bonjour,

Aucune information sur la disposition des données dans la feuille...

Vous pouvez toujours tester l'une ou l'autre de ces macros dans ThisWorkbook :

Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim deb&, n&
deb = 1 '1ère ligne d'impression, à adapter
n = Val(InputBox("Nombre de lignes à imprimer :", "Imprimer"))
If n < 1 Or deb + n - 1 > Rows.Count Then Cancel = True: Exit Sub
ActiveSheet.PageSetup.PrintArea = _
Intersect(ActiveSheet.UsedRange, Rows(deb & ":" & deb + n - 1)).Address
End Sub

'ou bien

Private Sub Workbook_BeforePrint(Cancel As Boolean)
ActiveSheet.PageSetup.PrintArea = [A1].CurrentRegion.Address
End Sub
Evidemment une seule de ces macros dans ThisWorkbook...

Elles se déclencheront avec les commandes Imprimer standard.

Edit : salut Moa, oui pourquoi pas, sans info c'est bon aussi...

A+
 
Dernière édition:

apdf

XLDnaute Occasionnel
Re : En VBA définir une zone d'impression

Bonjour Moa, Job75

Je vous remercie, les deux codes fonctionnent j'ai fait l'essaie sur une feuille Nickel.
Mais j'ai un probleme j'importe les infos d'une feuille "Score" vers la feuille "Affichage" que je doit définir une zone d'impression.

Comme j'ai des formules dans les cellules de la feuille Score sa me defini de "a1 à G101"

Je joint mon fichier qui seras plus parlant

Cordialement

Max
 

Pièces jointes

  • Zone.zip
    117.9 KB · Affichages: 177
  • Zone.zip
    117.9 KB · Affichages: 172
  • Zone.zip
    117.9 KB · Affichages: 178
Dernière édition:

Moa

XLDnaute Occasionnel
Re : En VBA définir une zone d'impression

Re,

Je t'explique 2 choses:

-Premièrement, il faut préciser la feuille pour calculer ta dernière ligne non vide, soit :

Sub printAreaMod()
Dim derLig As Integer
With Sheets("Affichage").Activate
derLig = Cells(65000, 2).End(xlUp).Row
ActiveSheet.PageSetup.PrintArea = "A1:G" & derLig
End With
End Sub

-Deuxièmement:

Lors de ta copie :
Worksheets("Score").Range("I2:I110").Copy
Worksheets("Affichage").Range("B2:B110").PasteSpecial xlPasteValues

Tu ramène des cellules qui en apparence sont vides, mais en fait ne le sont pas.

Quand on écrit :
derLig = Cells(65000, 2).End(xlUp).Row

On dit dans la colonne 2 depuis la cellule 65000, remonte jusqu'à la première cellule non vide.

Hors si tu te mets en cellule c ou b 150 et que clique sur CTRL + Flèche haute ça te place dans la première cellule non vide vers le haut.

Eh bien tu verras que la cellule sélectionnée sera dans les 101 au lieu de remonter dans les 60 (fin de ta liste), donc

Dans les 101 ta cellule n'est pas vide, même si Excel n'affiche rien.

Si tu es sûr de ne pas avoir de ligne vide en partant du haut de ta feuille, pars du haut (même s'il est toujours préférable de partir du bas)

J'espère t'avoir aidé à comprendre ton problème.

@ +++

Kris Moa
 

job75

XLDnaute Barbatruc
Re : En VBA définir une zone d'impression

Re,

En comptant les valeurs numériques en colonne A de la feuille Affichage :

Code:
Sub printAreaMod()
Dim derLig As Integer
derLig = Application.Count([A:A]) + 1
ActiveSheet.PageSetup.PrintArea = "A1:G" & derLig
End Sub
Ainsi plus de problème avec les cellules apparemment vides - mais qui contiennent le texte vide "" (colonne A) ou un espace (colonne B).

Nota : Application.Count c'est la fonction NB.

A+
 
Dernière édition:

Mafalda78

XLDnaute Nouveau
Bonjour,
Je souhaite exporter en PDF via une macro. toutes les semaines des lignes sont ajoutées et je voudrai que celles-ci soient prises automatiquement en compte dans ma macro. J'ai écris ces lignes mais cela ne fonctionne pas
Sheets se met en jaune. Pourriez-vous me dire ce qui ne va pas ? D'avance merci

Sub Exporter_PDF()
'
' Exporter_PDF Macro
'

'

Sheets("EtatNavette").Select
premLigneVisa = 1
ligDepVisa = 1
dernlignevisa = 0
Do While Range("C" & ligDepVisa + dernlignevisa + 1) <> ""
dernlignevisa = dernlignevisa + 1
Loop

premColVisa = 7
ColDepVisa = 7
derncolvisa = 0
Do While Cells(7, ColDepVisa + derncolvisa + 1) <> ""
derncolvisa = derncolvisa + 1
Loop


'Zone impression pour onglet suivi_visa
Range(Cells(4, 2), Cells(dernlignevisa + 7, derncolvisa + 1)).Select
Range(Cells(4, 2), Cells(dernlignevisa + 7, derncolvisa + 1)).Name = "zone_impression_T3A"


'Enregistrement du fichier

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"P:\II221400 - L15 SUD - TRAVAUX\AMENAGEMENTS_T3A\03_TRANSVERSE\2. PowerBI\ISS\Etat navette\Etat_navette_ISS.pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True


MsgBox "Le PDF a été généré dans le répertoire dans lequel se trouve ce fichier"


End Sub
 

Discussions similaires

Réponses
6
Affichages
740
Réponses
2
Affichages
748

Statistiques des forums

Discussions
314 628
Messages
2 111 333
Membres
111 104
dernier inscrit
JEMADA