Macro zone d'impression

DavYoshi Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   -  
DavYoshi Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'ai un probleme concernant une macro pour une zone d'impression. Voici une partie de la macro:

Sub printAreaMod()
Dim derLig As Integer
Application.ScreenUpdating = False 'bloquage écran'

Sheets("Usinées").Select
derLig = Cells(65000, 1).End(xlUp).Row
ActiveSheet.PageSetup.printArea = "A9:D" & derLig + 1

Rows("1:8").RowHeight = 16.5 ' hauteur lignes 3 et 4 à 25
For lig = 9 To derLig ' pour les lignes de 5 à 6 ajustement automatique
Range(Cells(lig, "A"), Cells(lig, "D")).Select 'concerne les colonnes de A à D
Selection.EntireRow.autoFit ' hauteur ligne automatique
'Selection.EntireRow.RowHeight = Selection.EntireRow.RowHeight + 15 ' + 15 pixel
If Selection.EntireRow.RowHeight < 16.5 Then Selection.EntireRow.RowHeight = 16.5 ' hauteur de ligne 16.5 mini
Next

j'aimerai que lors de l'impression la dernière page soit complete: je m'explique, actuellement en fonction du nombre de colonne que je tape dans mon tableau la dernière page imprimée aura un nombre de ligne qui ne remplie pas la page entière. (une moitié de tableau au milieu de la page)
En gros est-ce que je peux remplacer le deLig +1 par quelque chose qui me rajoute des cases non utilisées jusqu'a la marge de fin de la dernière page? (je veux garder des cases vides jusqu'à la fin de ma page et non qu'une seule)

Merci pour vos réponses
A voir également:

3 réponses

redaiwa Messages postés 351 Date d'inscription   Statut Membre Dernière intervention   119
 
Salam DavYoshi. :)

J'ai ajouté un bout de code à celui que tu as posté. Essaye-le et dis-nous si ça répond à tes attentes :

Sub printAreaMod()
Dim derLig As Integer
Application.ScreenUpdating = False 'bloquage écran'

Sheets("Usinées").Select
derLig = Cells(65000, 1).End(xlUp).Row
ActiveSheet.PageSetup.PrintArea = "A9:D" & derLig

Rows("1:8").RowHeight = 16.5 ' hauteur lignes 3 et 4 à 25
For lig = 9 To derLig ' pour les lignes de 5 à 6 ajustement automatique
Range(Cells(lig, "A"), Cells(lig, "D")).Select 'concerne les colonnes de A à D
Selection.EntireRow.AutoFit ' hauteur ligne automatique
'Selection.EntireRow.RowHeight = Selection.EntireRow.RowHeight + 15 ' + 15 pixel
If Selection.EntireRow.RowHeight < 16.5 Then Selection.EntireRow.RowHeight = 16.5 ' hauteur de ligne 16.5 mini
Next

''' Le code que j'ai ajouté commence ici '''
nbs = ActiveSheet.HPageBreaks.Count ' compte le nombre de sauts de page
nbs2 = nbs
While nbs2 = nbs 'tant que le nombre de saut de pages n'a pas augmenté
Rows(derLig).Copy
derLig = derLig + 1
Rows(derLig).PasteSpecial Paste:=xlPasteFormats 'ajouter une ligne en dernier avec le même format (quadrillage) que la ligne précédente
ActiveSheet.PageSetup.PrintArea = "A9:D" & derLig 'redéfinir la zone d'impression
nbs2 = ActiveSheet.HPageBreaks.Count 'compter le nouveau nombre de sauts de pages
Wend ' arrêter d'ajouter des lignes quand le nombre de sauts de pages a augmenté de 1
ActiveSheet.PageSetup.PrintArea = "A9:D" & derLig - 1 ' redéfinir la zone d'impression

End Sub

1
DavYoshi Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   66
 
Bon ça ne marche pas, mon pc calcule dans le vide.... merci quand même d'avoir pris de ton temps
1
redaiwa Messages postés 351 Date d'inscription   Statut Membre Dernière intervention   119
 
Ah bon !? C'est curieux car chez moi ça marche!

Voici le fichier exemple sur lequel j'ai travaillé : https://www.cjoint.com/c/DJAlNOmNjto

La procédure est dans Module1.
0
DavYoshi Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   66
 
Merci je test plu tard !
0
DavYoshi Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   66
 
Merci pour ton exemple, mais je reviens car ma macro ne fonctionne toujours pas. J'avais abandonné un moment mais ça m'agace.
En gros j'ai 3 feuilles (usinées, commerce, visseries) et je voudrais que la macro s'applique sur les 3 feuilles. Quand je lance ma macro, on dirai que le pc calcul dans le vide et ajoute des pages indéfiniment. Bref je ne sais plus quoi faire. on dirait un bug avec le système de boucle (while)
Si tu pouvais me dire d'où vient le problème ce serai le top ! voici le fichier sur lequel je travaille.
http://dl.free.fr/getfile.pl?file=/YQBDSTzl
0
redaiwa Messages postés 351 Date d'inscription   Statut Membre Dernière intervention   119 > DavYoshi Messages postés 131 Date d'inscription   Statut Membre Dernière intervention  
 
Salam DavYoshi.

Excuse-moi de ne pas t'avoir répondu plus tôt mais c'est parce que je suis un peu occupé ces jours-ci.

Je pense que dans le code de la procédure printAreaMod(), il faut remplacer la 6ème ligne :

ActiveSheet.PageSetup.PrintArea = "A9:D" & derLig

par :

ActiveSheet.PageSetup.PrintArea = False

ce qui a pour effet d'annuler la zone d'impression avant la suite du code.

Est-ce que ça marche maintenant ?
0
DavYoshi Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   66
 
Merci j'essayerai
0
DavYoshi Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   66
 
Merci je test ça demain je te dirais
0