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 -
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
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:
- Macro zone d'impression
- Spouleur d'impression - Guide
- Alternative zone telechargement - Accueil - Outils
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Impression livret a5 - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
3 réponses
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 :
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
Bon ça ne marche pas, mon pc calcule dans le vide.... merci quand même d'avoir pris de ton temps
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.
Voici le fichier exemple sur lequel j'ai travaillé : https://www.cjoint.com/c/DJAlNOmNjto
La procédure est dans Module1.
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
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
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 ?
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 ?