VBA mise en page pour impression

Résolu/Fermé
Nico - 22 sept. 2011 à 11:44
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 22 sept. 2011 à 13:28
Bonjour,

Voici mon fichier
http://www.cijoint.fr/cjlink.php?file=cj201109/cijGVXAF83.xls
je sais pas ce que vous pensez de mon code, si vous avez moyen de l'améliorer je ne suis pas contre :-)

ma question porte sur la mise en page. comment faire pour que les petits tableaux ne soient jamais coupés sur 2 pages lors de l'impression ?

Merci d'avance

A voir également:

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
22 sept. 2011 à 12:13
pour l'instant tu parles de petits tableaux et moi je n'en vois qu'un

pour encadrer
par ex:
Range("A1:C46").borders.weight=xlthin


et pourquoi ne fais tu pas ces encadrements en 1 seule fois ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
22 sept. 2011 à 12:16
Salut Michel,
Décidément tu es toujours le plus prompt...
Bonne journée
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
22 sept. 2011 à 12:15
Bonjour,
je sais pas ce que vous pensez de mon code, si vous avez moyen de l'améliorer je ne suis pas contre
Il fonctionne?
N'est pas lent?
===> Pourquoi le changer...

comment faire pour que les petits tableaux ne soient jamais coupés sur 2 pages lors de l'impression ? Dans ton cas, je ferais une boucle et imprimerais par "sélection" de 5 tableaux (soit 30 lignes).
Du style :
Dim Lign As Integer, DrLign As Integer
'la dernière ligne à imprimer correspond mathématiquement à :
'arrondi supérieur de : (nombre de lignes total/30) * 30 soit en VBA :
DrLign = Round(Range("B" & Rows.Count).End(xlUp).Row / 30 + 0.5) * 30
For Lign = 1 To DrLign Step 30
    Range("A" & Lign & ":E" & Lign + 29).PrintOut
Next
--
Cordialement,
Franck P
0
merci de vosu intéresser à mon sujet.
la macro prend 1s, j'étais simplement curieux de voir comment il aurait pu être écrit.
J'essaie ton code et reviens te dire.

Michel, au départ j'ai la liste sur les 3 colonnes et si tu lances la macro, tu obtiens des dizaines de petits tableaux. c'est là que j'ai besoin que ces petits tableaux ne soient pas coupés
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
Modifié par pijaku le 22/09/2011 à 13:18
j'étais simplement curieux de voir comment il aurait pu être écrit

Alors déjà, commence par appliquer ce que Michel t'as donné comme indication :

pour encadrer
par ex:
Range("A1:C46").borders.weight=xlthin
et pourquoi ne fais tu pas ces encadrements en 1 seule fois ?
0
ça ne va pas me donner le même résultat car la bordure sera apaprente sur la ligne qui doit être vierge entre les petits tableaux.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
22 sept. 2011 à 13:28
Sisi!
Suffit d'adapter le Range.
En exemple :
Range("B1:D5,B7:D11,B13:D17,B19:D23").Borders.Weight = xlThin
0