Définition automatique d'une zone d'impression...

Kiriko

XLDnaute Occasionnel
Bonjour à tous !

Sans doute très simple, il s'agit d'une définition automatique de zone d'impression...
Soit un tableau défini en A:AI (le nombre de lignes est variable).
Si on considère (x) la dernière ligne du tableau (si ça simplifie le code, la colonne A n'est jamais vide dans le tableau), je souhaiterais un code permettant de définir la zone d'impression suivante :
A1:p(x)
Soit dans l'exemple A1:p17
Sachant que le tableau "défini" se nomme "Tableau13"

Merci par avance !
 

Pièces jointes

  • Test zone d'impression.xlsx
    48.7 KB · Affichages: 90

Papou-net

XLDnaute Barbatruc
Re : Définition automatique d'une zone d'impression...

Bonjour Kiriko,

Vois si ton classeur avec macro événementielle ci-joint répond à ta demande.

Cordialement.
 

Pièces jointes

  • Copie de Test zone d'impression.xlsm
    54.4 KB · Affichages: 89
Dernière édition:

frangy

XLDnaute Occasionnel
Re : Définition automatique d'une zone d'impression...

Bonjour Kiriko, Papou-net, le forum

Si la zone d’impression doit correspondre à A1 :p(nb de lignes), j'aurais bien vu
Code:
Sub ZoneImp()
Dim DerLig As Long
    With Worksheets("Plannings")
        DerLig = .Range("A" & Rows.Count).End(xlUp).Row
        .PageSetup.PrintArea = "$A$1:$P$" & DerLig
    End With
End Sub

A+
 

Kiriko

XLDnaute Occasionnel
Re : Définition automatique d'une zone d'impression...

Bonjour Papou-net, bonjour frangy,

Merci à tous les deux !
Papou-net, cela ne fonctionne pas chez moi, je dois rater quelque chose... Qu'est-ce qui est censé "déclencher" la macro ?
Frangy, ce code marche parfaitement.
Y aurait-il une option qui permettrait d'utiliser le tableau défini (="Tableau 13")pour retrouver cette fameuse dernière ligne? Sans conviction, je me demande si cela ne ferait pas gagner un peu de temps de traitement (sur des fichiers de quelquefois 30 000 lignes)??

Merci encore !!
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Définition automatique d'une zone d'impression...

Papou-net, cela ne fonctionne pas chez moi, je dois rater quelque chose... Qu'est-ce qui est censé "déclencher" la macro ?

La macro fonctionne d'une façon "transparente". Elle se déclenche si tu remplis ou modifies une cellule.

Tu ne verras le résultat qu'en lançant l'impression, ou l'aperçu avant impression.

Cette macro ne cherche pas la dernière ligne remplie car elle récupère l'adresse de la plage de cellules renseignées (UsedRange).

Espérant avoir répondu.

Cordialement.

Pardon, j'ai oublié de te saluer Frangy. Voilà qui est fait. Bonne journée.
 

Kiriko

XLDnaute Occasionnel
Re : Définition automatique d'une zone d'impression...

La macro fonctionne d'une façon "transparente". Elle se déclenche si tu remplis ou modifies une cellule.
C'est une très bonne approche pour moi, je n'y aurais pas penser... Par contre, la zone d'impression ne s'arrête pas à la colonne P comme il est souhaité !! J'ai essayé de combiner les 2 méthodes, ça donne :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim DernLign As Long
        DernLign = Range("A" & Rows.Count).End(xlUp).Row 
ActiveSheet.PageSetup.PrintArea = "$A$1:$P$" & DernLign
End Sub
J'avais initialement un code qui ensuite, supprimait tous les sauts de pages, en ajoutait à chaque changement de valeur en colonne A, puis ensuite, s'il y a d'autres sauts de page "automatiques" rajoutés (ceux en pointillé), les remontait à chaque changement en colonne C. Je vais voir si je peux l'adapter, d'autant plus que cela bugait après un certain nombre de pages... Si vous avez des pistes en ce sens...

Merci encore,

Cordialement,
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Définition automatique d'une zone d'impression...

Par contre, la zone d'impression ne s'arrête pas à la colonne P comme il est souhaité !!

Exact, j'ai négligé ce détail. J'ai donc corrigé le code comme ceci :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.PageSetup.PrintArea = Me.UsedRange.Range("A:P").Address
End Sub
Quant au code de suppression de pages, vois si la solution proposée dans le fichier ci-joint te convient.

Cordialement.
 

Pièces jointes

  • Copie 01 de Test zone d'impression.xlsm
    56.5 KB · Affichages: 68

Kiriko

XLDnaute Occasionnel
Re : Définition automatique d'une zone d'impression...

Bonsoir à tous
Bonsoir Papou-Net, et merci beaucoup !!
Dans le fichier joint, deux remarques :
- En fait, lorsque le fichier est volumineux (ou simplement lorsque un même N° en A a beaucoup de lignes), excel "rajoute" des sauts de pages en pointillés, mais à des endroits qui ne m'arrangent pas du tout (dans le nouvel exemple, un saut est "rajouté" par excel après la ligne 44 dans ce nouveau fichier exemple). L'idéal étant pour moi de repérer ces sauts de pages, et de les "remonter" au premier changement au dessus en colonne C cette fois (la date)... Dans l'exemple, après la ligne 32 serait donc l'idéal...
- Le fichier est amené à comporter un grand nombre de lignes, qui sont elles-mêmes générées par une macro qui a un temps assez long d'exécution (souvent 10 minutes!)... Du coup, je me demande si la méthode d'application "à chaque changement" est adaptée...

Encore merci !

Cordialement,
 

Pièces jointes

  • V3Test zone d'impression.xlsm
    54.9 KB · Affichages: 69

Papou-net

XLDnaute Barbatruc
Re : Définition automatique d'une zone d'impression...

Bonsoir Kiriko,

Voici ton fichier modifié.

La coupure se fait bien au changement de page comme tu le désires. Toutefois, à savoir que si le nombre de lignes données pour une même date dépasse le nombre de lignes imprimables selon la configuration de la page, Excel insèrera alors un saut de page système.

J'en ai également profité pour réduire l'action de la macro à la colonne A et neutraliser le rafraîchissement d'écran. Ca devrait améliorer le temps de réponse significativement, en tout cas chez moi, ça le fait.

Espérant avoir résolu la question.

Cordialement.


PS : merci pour tes likes, ça fait toujours plaisir à celui qui les reçoit.
 

Pièces jointes

  • Copie de V3Test zone d'impression.xlsm
    57 KB · Affichages: 73
Dernière édition:

Kiriko

XLDnaute Occasionnel
Re : Définition automatique d'une zone d'impression...

Re bonsoir Papou-net !
Effectivement, traitement très rapide (testé sur 8000 lignes). Par contre, petit soucis :
La macro que tu proposes fait un saut de page si changement de valeur en A ou en C... Le but recherché est que les sauts soient sur tous les changements en A effectivement, mais si (et seulement si) le nombre de lignes impose qu'il y en ait plus (les fameux sauts "en pointillés", les "xlPageBreakAutomatic" rajoutés par excel), et bien de remonter ces sauts de page au 1er changement de date (au dessus)... Le nombre de page restera donc inchangé...
Gareth, forumeur, m'avait communiqué une macro en ce sens sur ce forum (
HTML:
http://www.excel-downloads.com/forum/193044-sauts-de-pages-elabores.html
) , mais elle ne s'exécute pas au delà d'un certain nombre de pages (très bizarre d'ailleurs) mais aussi, n'est pas liée aux "évènements"...

Merci encore !!

Cordialement,
 

Papou-net

XLDnaute Barbatruc
Re : Définition automatique d'une zone d'impression...

RE :

Au bout de combien de pages la macro plante-t-elle ?

Je ne pense pas que ce soit le cas, mais tu dois savoir que le nombre maxi de sauts de pages en horizontal est de : 1026 (dixit l'aide de VBA).

Par ailleurs, j'ai repris une partie du code de Gareth (je pense qu'il ne m'en voudra pas) et je te laisse le soin de vérifier si le problème est solutionné.

Cordialement.
 

Pièces jointes

  • Copie 01 de V3Test zone d'impression.xlsm
    56.6 KB · Affichages: 60

Kiriko

XLDnaute Occasionnel
Re : Définition automatique d'une zone d'impression...

RE :
Merci de l'essai !
Ben là je ne comprend vraiment plus : Saut de page à TOUS les changements de date encore...
Bizarre... Du coup, beaucoup trop de pages !!
Peut-être un soucis de variables "déjà utilisées" et non remises à zéro ???
En fait, je dis cela, mais je n'y connait vraiment rien...

J'ai posté un fichier avec beaucoup de lignes (épurées) pour se rendre compte...


Merci encore !!

Cordialement,
 

Pièces jointes

  • Full Pages.xlsm
    595.1 KB · Affichages: 78

Papou-net

XLDnaute Barbatruc
Re : Définition automatique d'une zone d'impression...

Bonjour Kiriko,

Voilà, je pense avoir enfin trouvé la solution.

J'ai procédé d'une autre façon : dans une première boucle je balaie la colonne A et j'enregistre dans un tableau dynamique toutes les lignes correspondant à un saut de page éventuel. Puis je balaie ce tableau et si je détecte un changement de référence ou un nombre de lignes supérieur à 30, je crée un saut de page.

Je t'ai mis des commentaires dans le code pour t'aider à mieux suivre le déroulement.

Le simple fait de traiter les données dans un tableau améliore sensiblement la rapidité d'exécution : environ une seconde chez moi pour 446 pages.

NB : j'ai dû régler le zoom de la page à 90% pour obtenir l'affichage complet sur mon imprimante car sinon j'obtenais 892 pages. Il est possible que chez toi ce facteur de zoom soit différent, dans ce cas tu n'as qu'à modifier la ligne .PageSetup = 90.

En te souhaitant un bon WE, peut-être prolongé.

Cordialement.
 

Pièces jointes

  • Copie de Full Pages.xlsm
    594.8 KB · Affichages: 326

Kiriko

XLDnaute Occasionnel
Re : Définition automatique d'une zone d'impression...

Bonjour Papou-net, et merci beaucoup du temps passé !
L'approche est très intéressante, et la rapidité de traitement fulgurante, mais on n'obtiens toujours pas le résultat final escompté:
1_ Saut de page à chaque changement de valeur en A : Ceci est immuable, aucune exception.
2_ Une fois le 1_ appliqué, nous avons (x) sauts de pages au total dans le doc (les sauts de pages générés par le 1_, +les sauts de pages "automatiques" (ceux en pointillés). Ce nombre (x) de sauts de pages ne doit pas changer au final... Pas plus, pas moins.
3- Repérer ces "sauts de pages automatiques", et les "remonter" au changement de date (colonne C) le plus proche "au dessus"...

Une autre façon de présenter pourrait être :
1_ Appliquer un saut de page à chaque changement en A ou en C.
2_ Supprimer tous les sauts de pages en C qui n'impliquerait pas d'autres "déplacements" de sauts si on les supprime...

En plus succinct, on pourrait dire :
Tous les changements de plannings (colonne A)imposent un saut de page.
Tous les éventuels autres sauts de pages doivent être minimiser au maximum, et ne se faire que sur des changement de date (colonne C)

En tous les cas, encore merci !!!!
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Définition automatique d'une zone d'impression...

En plus succinct, on pourrait dire :
Tous les changements de plannings (colonne A)imposent un saut de page.
Tous les éventuels autres sauts de pages doivent être minimiser au maximum, et ne se faire que sur des changement de date (colonne C)

RE Kiriko,

Alors là, j'en pers mon latin. N'est-ce pas ce que fait ma macro ?

Il n'y a plus de sauts de pages créés par Excel (en pointillés) puisque :

- A chaque changement de planning j'insère un saut de page

- Si le nombre de lignes d'un planning dépasse la contenance d'une page, alors j'insère un saut de page au changement de date en colonne C

Pour exemple :

- Page 1 --> Planning 1 du 13/11 au 20/11

- Page 2 --> Planning 1, du 22/11 au 27/11

- Page 3 --> Planning 2du 13/11 au 15/11

- Page 4 --> Planning 12, du 20/11 au 22/11

- Page 5 --> Planning 12, du 27/11 au 27/11

- Page 6 --> Planning 12, du 13/11 au 15/11

Etc...

J'aurais donc besoin d'explications complémentaires, ou mieux encore, un exemple avec des sauts de page que tu insérerais manuellement afin de mieux visualiser.

Dans cette attente.

Cordialement.
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof