Macro pour definir une zone d impression

Résolu/Fermé
Signaler
Messages postés
42
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
4 novembre 2014
-
Messages postés
42
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
4 novembre 2014
-
bonjour

j ai un tableau de données de 16 colonnes et de x lignes.
les 12 premiers lignes sont des infos générales du tableau .les donnees commencent donc à partir de la ligne 13 jusquà x.

je souhaiterais par un bouton faire une mise en page ou j aurai au max 15 lignes de donnees sur une page ,si plus de 15 lignes impression sur une autre page etc.

si il y a impression d autres pages je souhaiterai que les lignes n°5 à 12 sont imprimes également en haut de chaque feuille.

es ce possible?

merci

29 réponses

Messages postés
10616
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
28 novembre 2021
1 239
Bonjour,
Pourquoi ne pas utiliser directement l'outil [ZoneImpr] dans l'onglet [Mise en page].... !

Messages postés
42
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
4 novembre 2014

bsr
pour eviter les manip et pour que ce fichier soit utiliser par plusieurs personnes
Messages postés
10616
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
28 novembre 2021
1 239
Bonjour,
Ce n'est pas une macro qui va éviter des manipulations par un autre utilisateur (que faite vous s'il modifie les colonnes .... ?).
Vous pouvez fixer la zone d'impression comme je l'ai proposé et le tour est joué il n'y a rien à faire par les utilisateurs si ce n'est d'imprimer la feuille.

Messages postés
42
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
4 novembre 2014

bonjour

le nombre de colonne ne changera pas c est juste le nombre de lignes qui varie de disons 20 à x.

avec votre methode il faut definir la zone d impression à chaque fois avec des manips un peu compliqués pour un utilisateur fragile.

il ne faut pas que sur l impression il y ai un tableau avec des lignes vides d ou l idee de la macro zone impression.

bonne journee
Messages postés
10616
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
28 novembre 2021
1 239
Bonjour,
Je mal compris votre problème. Vous pouvez le résoudre en fixant les marges de la feuille, voir exemple : https://www.cjoint.com/?3Jyv33102Hz

Messages postés
42
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
4 novembre 2014

bonjour je ré explique:
bonjour

mon tableau possede 16 colonnes et de x de lignes.
les 12 premiers lignes sont des infos générales du tableau .les donnees commencent à partir de la ligne 13 jusquà x lignes.

je souhaiterais par un bouton pacé à coté du tableau faire une mise en page ou j aurai :
- sur la 1er page les 12 premiers lignes (infos générales ) + 15 lignes de données.
- sur la page 2 les lignes d infos de 5 à 12 + les lignes de données restantes.
- ....
si il y a impression d autres pages je souhaiterai que les lignes n°5 à 12 sont imprimes également en haut de chaque feuille.

possible?

merci
Messages postés
10616
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
28 novembre 2021
1 239
Bonjour,
L'exemple que j'ai proposé fait exactement ce que vous désiré sans macro, il faut juste adapter selon votre format de données.

Messages postés
42
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
4 novembre 2014

bonsoir

je ne comprends votre fichier excel

cdt
Messages postés
10616
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
28 novembre 2021
1 239
Bonjour,
Avez-vous essayé de faire un aperçu avant impression ou imprimer la page et aussi en supprimant des lignes de données .... ?

Messages postés
42
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
4 novembre 2014

bonjour

en supprimant les lignes cela fonctionne mais je ne veux pas que les personnes utilisant ce tableau supprime ou ajoute des lignes car certaines cellules contiennent des formules, des mises en forme conditionnelles ...

donc je souhaiterai qu une action simple fasse une mise en page et définisse une zone d impression , c est pour cela que je pensais à une macro mais peut etre qu il il y plus simple mais la je ne sais comment faire

merci de votre aide
Messages postés
10616
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
28 novembre 2021
1 239
Bonjour,
Eh bien dans ce cas, qu'elle est la structure de votre feuille et à quel endroit les utilisateurs sont autorisés à entrer des données.... ?

Bonjour

Voila une macro pour le format Ligne & Colonne

Sub Macro2()
With ActiveSheet.PageSetup
.PrintTitleRows = "$5:$12" ' Choix Lignes
.PrintArea = "$B:$G" ' Choix Colonnes
End With
End Sub

A+
Maurice
Messages postés
42
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
4 novembre 2014

bonsoir

comme je l ai dit les utiliseurs peuvent rentrer des donnees dans les lignes du tableau , ce nombre de lignes est tres variable d un jour à l autre il peut passer de 15 lignes à plus de 100

ce tableau est déjà dessiné et les cellules ont deja des formules

comprenez bien que je veux pas imprime un tableau avec des lignes vierges c est pour cela que la zone d impression doit etre defini à chaque fois
Messages postés
10616
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
28 novembre 2021
1 239
Bonjour,
Eh bien là c'est plus clair, donc il faut prendre en compte uniquement les lignes que l'utilisateur aura entrées. J'imagine que la première colonne contient une formule .... Qu'elle est cette formule ... ?
Le format de la feuille : paysage ou portrait ?

Salutations.
Le Pingou
Messages postés
10616
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
28 novembre 2021
1 239
Bonjour,
Admis colonne 2 [B] est remplie par l'utilisateur et sert de référence pour la procédure ci après :
Sub DefinirZoneImpr()
' recherhe dernière ligne colonne [B]
With ActiveSheet.PageSetup
.PrintTitleRows = "$5:$12"
.PrintArea = ("$A$1:$S$" & Cells(Rows.Count, 2).End(xlUp).Row)
End With
End Sub

Messages postés
42
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
4 novembre 2014

re

en mode paysage
la colonne 16 contient les calculs les donnees sont rentrees sur une ligne de la colonne 1 à 15
Messages postés
10616
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
28 novembre 2021
1 239
Bonjour,
Merci pour l'information. On utilise la colonne [A] pour détecter la plage à imprimer.
Voici la procédure à insérer dans un module :
Sub DefinirZoneImpr()
' recherhe dernière ligne colonne [A:A]
With ActiveSheet.PageSetup
.PrintTitleRows = "$5:$12"
.PrintArea = ("$A$1:$S$" & Cells(Rows.Count, 1).End(xlUp).Row)
End With
End Sub
Pour la déclencher mettre un bouton de commande sur la feuille et lui données la référence de la procédure.
L'ordre d'impression n'est pas compris dans le code.

Messages postés
42
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
4 novembre 2014

bonjour

pour synthetiser que dois je ecrir dans la macro complete que je suis l esssayer

encore merci de votre aide

cordialement
Messages postés
10616
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
28 novembre 2021
1 239
Bonjour,
Simplement l'instruction
ActiveSheet.PrintOut

Insérer entre [End With] et [End Sub]


Salutations.
Le Pingou
Messages postés
42
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
4 novembre 2014

bsr

en resume je met cela?

Sub DefinirZoneImpr()
' recherhe dernière ligne colonne [B]
With ActiveSheet.PageSetup
.PrintTitleRows = "$5:$12"
.PrintArea = ("$A$1:$S$" & Cells(Rows.Count, 2).End(xlUp).Row)
End With
ActiveSheet.PrintOut

End Sub