Macro zone d'impression

DavYoshi Messages postés 135 Statut Membre -  
DavYoshi Messages postés 135 Statut Membre -
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

3 réponses

  1. redaiwa Messages postés 370 Statut Membre 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
  2. DavYoshi Messages postés 135 Statut Membre 66
     
    Bon ça ne marche pas, mon pc calcule dans le vide.... merci quand même d'avoir pris de ton temps
    1
    1. redaiwa Messages postés 370 Statut Membre 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
    2. DavYoshi Messages postés 135 Statut Membre 66
       
      Merci je test plu tard !
      0
    3. DavYoshi Messages postés 135 Statut Membre 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
      1. redaiwa Messages postés 370 Statut Membre 119 > DavYoshi Messages postés 135 Statut Membre
         
        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
    4. DavYoshi Messages postés 135 Statut Membre 66
       
      Merci j'essayerai
      0
  3. DavYoshi Messages postés 135 Statut Membre 66
     
    Merci je test ça demain je te dirais
    0