Impression dernière page d'une zone d'impression définie

Brigitte

XLDnaute Barbatruc
Bonjour,

Lorsque l'on définit une zone d'impression (plusieurs pages), peut on faire une macro qui n'imprimera que la DERNIERE page de cette zone d'impression.

En clair : zone d'impression de 10 pages... mais un bouton dans la feuille qui permette de n'imprimer que la dernière page (car cette dernière page, donc la 10 provisoirement a seule été modifiée).

Sachant que la zone d'impression sera redéfinie parfois si le tableau s'allonge.

Vous allez me dire : redéfinis ta zone d'impression chaque fois... non ca ne me va pas pour plusieurs raisons : pas tjs le temps, plus facile d'appuyer sur un bouton (qui serait flottant, alors là le pied), il faut compter le nombre de lignes à mettre (en l'occurence environ 13), bref, plus facile de redéfinir la zone totale par moments et de n'imprimer que la dernière (qui peut donc être la page 10 aujourd'hui, puis 11 demain... selon l'avancée du tableau).

Merci à vous.
 

noviceAG

XLDnaute Impliqué
Re : Impression dernière page d'une zone d'impression définie

Bonjour Brigitte,
Une simple idée comme ca, n'y aurait-il pas dans ta dernière page une constante qui te permettrait de l'utiliser à la façon : Atteindre et lancer l'impression
Amicalement
 

Pierrot93

XLDnaute Barbatruc
Re : Impression dernière page d'une zone d'impression définie

Bonjour Brigitte, Novice

pas sûr que cela réponde précisément à ta question, mais regarde dans le classeur joint, un bouton qui suit la selection, qui prévisualise l'impression de la plage visible à l'écran, j'ai mis en commentaire le code à appliquer en lieu et place, pour une impression réelle...

bonne journée
@+
 

Pièces jointes

  • classeur2.xls
    29.5 KB · Affichages: 76
  • classeur2.xls
    29.5 KB · Affichages: 87
  • classeur2.xls
    29.5 KB · Affichages: 85

Brigitte

XLDnaute Barbatruc
Re : Impression dernière page d'une zone d'impression définie

Bonjour,

Pour l'instant je n'ai testé que la solution de Pierrot (mon sauveur es "impression" dirait-on, tu te souviens, Pierrot ?).

Et ca marche pas trop mal, mais j'ai bien sûr qq questions :

Code:
Option Explicit
Sub ImpressionDerniere()
Dim zi As String
With Sheets("Arrêtés 2009").PageSetup
    zi = .PrintArea
    .PrintArea = ActiveWindow.VisibleRange.Address
    'prévisualisation de l'impression
    'Sheets("Arrêtés 2009").PrintPreview
    'impression
    Sheets("Arrêtés 2009").PrintOut
    .PrintArea = zi
End With
End Sub

1. Option explicit, c'est nécessaire (juste pour ma culture) ??

2. Pourrait on mettre activesheet au lieu de feuille "machin" car chaque année, ca changera ?

3. cela fait une impression écran (tout à gauche) au lieu de respecter l'impression habituelle avec marges... est ce changeable ?

4. le bouton que je vais mettre en affectant cette macro, puis le faire "flotter" qu'il soit toujours visible à l'écran (si pas trop dur bien sûr pour toi, Pierrot) ?

Merci encore.
 

Pierrot93

XLDnaute Barbatruc
Re : Impression dernière page d'une zone d'impression définie

Re

oui je me souviens d'avoir déjà "commis" une macro pour toi... lol

pour te répondre :

1 - option explicite oblige à la déclaration de toutes les variables, cela évite bien souvent des erreurs...

2 - oui tu peux remplacer le nom de la feuille par "ActiveSheet" comme ci dessous :

Code:
Option Explicit
Sub test()
Dim zi As String
With ActiveSheet.PageSetup
    zi = .PrintArea
    .PrintArea = ActiveWindow.VisibleRange.Address
    'prévisualisation de l'impression
    ActiveSheet.PrintPreview
    'impression
    'ActiveSheet.PrintOut
    .PrintArea = zi
End With
End Sub

3 - pour la mise en page, en principe ce code n'affecte pas la mise en page existante et doit donc reprendre les marges existantes, enfin c'est ce qu'il fait chez moi...

4 - dans le fichier joint, le bouton doit se déplacer en fonction de la selection, regarde dans le module de la feuille, tu trouveras le code ci-dessous qui le re-positionne systèmatiquement à chaque changement de selection...

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With CommandButton1
    .Top = Target.Offset(2, 0).Top
    .Left = Target.Left
End With
End Sub

@+
 

Brigitte

XLDnaute Barbatruc
Re : Impression dernière page d'une zone d'impression définie

Re,

Super Pierrot, je me suis un peu emmêlée les pinceaux pour mettre tout ca dans mon classeur, mais ca roule, petites questions (encore) :

1. Peut on placer ce bouton ailleurs, je suppose que oui en bougeant ici :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With CommandButton1
.Top = Target.Offset(2, 0).Top
.Left = Target.Left
End With
End Sub

Je l'aimerais plus à droite.

2. Pour ma culture, j'avais mis les instructions d'impression (macro "test" que j'ai rebaptisée "impressionderniere") dans la feuille : est ce faisable, j'avais un bug... mais sinon est ce que par principe une macro à utiliser dans toute feuille potentielle, est à mettre plutot dans un module et le commandbutton dans la feuille concernée ? j'ai su afficher la boite à outils pour faire le bouton... suis contente en tout cas.

3. Ca imprime le bouton, peut on le cacher à l'impression (propriétés ?)

4. ca imprime toujours à gauche, sans respect des marges (qui centrent mon tableau, mais bon, pas bien grave).

Mille mercis à toi pour tout
 

Brigitte

XLDnaute Barbatruc
Re : Impression dernière page d'une zone d'impression définie

Bonjour,

En fait, je vais garder ce qu'a fait Pierrot car j'ai eu des soucis avec ton fichier :

1. le code est bien trop compliqué à adapter pour moi, il s'agit de macros complètes... je ne sais même pas voir où est le bout qui m'intéresse, vu mon niveau

2. en ouvrant ton fichier, une partie grisée est apparue à gauche, et du coup sur tous les autres fichiers ouverts, que je ne pouvais enlever... Heureusement en fermant excel, tout est redevenu normal après nouvelle ouverture.. Faut pas que j'aie des frayeurs comme ca, moi...

Merci tout de même mais considère le problème comme résolu sauf les questions posées à Pierrot s'il passe par là.

A bientôt et bon app.
 

Pierrot93

XLDnaute Barbatruc
Re : Impression dernière page d'une zone d'impression définie

Re

Oui tu peux placer le bouton dans n'importe quelle feuille, il te suffit ensuite de copier le code ci-dessous dans le module de la feuille où se trouve le bouton. (click droit sur l'onglet => visualiser le code et tu colles le code) :

Code:
Option Explicit
Private Sub CommandButton1_Click()
test
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With CommandButton1
    .Top = Target.Offset(2, 0).Top
     ' le 2 indique position du bouton, 2 cellules plus bas que celle sélectionnée  
    .Left = Target.Offset(0, 1).Left 'le 1 indique la position du bouton à 1 colonne de la cellule selectionnée.
End With
End Sub

j ai modifié le code pour que le bouton se place à 1 colonne, plus à droite après, fonction où ti cliques le bouton risque de ne plus être visible...

Pour ne pas imprimer le bouton, en mode création (click sur l'equerre de la barre d'outil visual basic), click droit sur le bouton => format de controle => onglet "propriété" tu décoches "imprimer l'objet".

oui, si tu veux utiliser cette macro sur plusieurs feuilles, il est préférable de la laisser dans un module standard.

Pour ton problème de marge, comprends pas trop, en principe respecte les options de mise en page, est ce que toutes les cellules de la plage visible à l'écran étaient bien renseignée ? Après dépend sans doute aussi de la taille de l'écran....

j'espère ne rien avoir oublié, si ce n'était pas le cas n'hésite pas à revenir...

bon après midi
@+
 

Pierrot93

XLDnaute Barbatruc
Re : Impression dernière page d'une zone d'impression définie

Re

aarf, je savais bien que j'avais oublié quelque chose, si tu veux renommer la macro, il faut également change son appel dans le code du bouton :

Code:
Private Sub CommandButton1_Click()
NomDeTaMacro' en lieu et place de test
End Sub

@+
 

Brigitte

XLDnaute Barbatruc
Re : Impression dernière page d'une zone d'impression définie

Re,

Tout de suite pour ton dernier post, oui c'était fait, j'avais pensé à mettre le nom de la macro changé dans le "commandbutton1 click" ; suis contente, j'ai qq réflexes, hein que tout est pas perdu ?

Sinon merci pour tes explications sur la position du bouton, je vais pouvoir adapter à l'endroit voulu ainsi (je sentais que ct par là... mais de là à savoir comment ca s'incrémentait)... et aussi pour la non impression.

Tu es mon "Monsieur Impression" number one.... Je sais que tu fais pas que ca, mais pour moi tu me sauves chaque fois.

Merci encore et des bises pour la peine.
 

Brigitte

XLDnaute Barbatruc
Re : Impression dernière page d'une zone d'impression définie

Re,

Voilà, j'ai désactivé l'impression (Print = false), c'est ca ?

Sinon voici ma capture écran... en effet, des colonnes vides à droite de la ZI qui elle s'arrête à la colonne K... donc à l'impression j'ai du blanc à droite de la colonne K alors que quand j'imprime tout, le doc se centre bien au milieu. Bizarre, mais pas gênant.

Capture arrêtés.jpg

En fait, je t'explique, il s'agit d'un tableau/listing de tous les arrêtés pris par l'Etablissement. C'est moi qui tiens ce tableau et donne donc les numéros aux demandeurs. Mais quand je suis absente, comme les "remplaçantes" n'ont pas accès en écriture à ce fichier (dans un répertoire très sensible), je laisse la dernière page sur mon bureau (donc je l'imprime quand je rajoute un arrêté pris) et elles viennent voir quel numéro est dispo dessus (et elles le rajoutent manuscritement, je mets à jour en revenant) pour éviter de donner le même numéro deux fois (c'est arrivé).

Ainsi j'imprime grâce à ton bouton flottant la dernière page, très aisément et tu comprends mieux que la page imprimée n'a pas besoin d'être belle et centrée... On comprend juste pas... mais c'est pas grave.
 

Pierrot93

XLDnaute Barbatruc
Re : Impression dernière page d'une zone d'impression définie

Re

aarf Brigitte, vois pas trop où tu as mis le "print = false" et pourquoi ?
Voilà, j'ai désactivé l'impression (Print = false), c'est ca ?

d'après ta photo(du fichier lol), la macro imprimera la plage A99:O110? Dans ce cas ne tient pas compte de la partie figée par le volet...

Si tu veux imprimer les 2 première lignes, tu peux le préciser dans la partie "lignes à répéter en haut" de la mise en page. On peut également le rajouter dans la macro...


@+
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87