Adapter une zone d'impression

Bonjour à tous

malgré mes recherches, je n'arrive pas à faire que la zone d'impression de mes 2 derniers onglets s'adapte pour n'imprimer que les colonnes et les lignes non vides(pour info je suis sous Office 2010 Mac).

Si quelqu'un voulait aussi mettre de la convivialité dans les tris de date (fenêtre de cases à cocher?), ce serait encore mieux.

Pour info, je joins le fichier dont je parle

Merci de votre aide et de vos explications.

Bonsoir,

Une petite idée :

ActiveSheet.PageSetup.PrintArea = "A1:R9"

la réf A1:R9 correspond à votre fichier exemple en téléchargement.

Il vous suffit de chercher la dernière colonne pleine de la ligne 1, afin de remplacer le R par cette valeur :

Variable_der_colonne = Cells(1,Cells.Columns.Count).End(xltoLeft).Column

Et faire de même avec les lignes :

Variable_der_ligne = Range("A" & Rows.Count).End(xlUp).Row

Ce qui pourrait donner un truc comme ça :

ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(Variable_der_ligne , Variable_der_colonne )).Address

Je n'ai pas essayé, en espérant que cela vous convienne .-)

@ bientôt

Loureed

Bonjour

merci de cette réponse mais j'ai un problème: je suis tellement novice en programmation que je ne sais pas quoi en faire.

pourriez-vous me guider encore un peu?

bien cordialement

Bonjour le Forum

grâce à Loureed, je progresse à grands pas puisque j'ai même réussi à comprendre ce qu'il fallait faire du code qu'il m'a proposé.

J'ai fait encore mieux: je l'ai adapté à mes colonnes et lignes.

Mais, car il y a un "MAIS", cette macro ne fonctionne pas sur mon dernier onglet (je rappelle que je cherche à adapter la zone d'impression aux lignes et colonnes non vides). Je pense que c'est parce que finalement les cellules ne sont pas vides puisqu'elles ont chacune une référence à une formule.

Quelqu'un aurait-il une idée?

je mets le nouveau fichier ainsi retravaillé

merci à tous

Bonsoir,

J'aime bien les MAIS, heu ? le maïs...

Ci-joint le fichier modifié, en version Ultime !

Quelques précisions :

La position de la macro - j'ai mis la macro dans la feuille "Chrono par artiste" en faisant un clic droit sur l'onglet de la feuille et choisi dans le menu "visualiser le code".

Dans VBA on peut alors choisir "Worksheet" puis "Activate", ce qui a pour effet de lancer les instructions à l'activation de la feuille.

Un clic sur l'onglet, et hop la macro se lance et la zone d'impression se règle.

La réponse aux problèmes de cellules vides mais pleines - Au vu de mon niveau de VBA j'ai contourné le problème par des tests :

pour les lignes : les formules revoient "0" si la cellule source est vide, donc mise en place d'un test "si différent de 0" alors on est sur la dernière ligne avec une info d'inscrite.

pour les colonnes : un peu plus compliqué - il y a des cellules avec des formules qui renvoient "0" si la cellule source est vide, et des formules "MAJUSCULE" qui ne renvoient rien mis à par la formule elle même... Pour ces cellules, on test la longueur de la chaine de caractère de la cellule => longueur de la chaine de caractère de rien, même en majuscule, est égal à "0".

On s'aperçois que s'il y a "majuscule" alors il y a forcément "formule, formule", donc on décrémentera directement de 3 colonnes lors des test.

Donc la solution finale, qui est la mienne mais peut-être pas la meilleur au niveau programmation, est la suivante :

on recherche la dernière colonne utilisée (cellule à valeur nulle mais qui contient une formule)

on rentre dans une boucle "infinie" (non définie).

on remonte vers la colonne A en décrémentant de 3 tant que cette dernière colonne utilisée à une longueur de chaine de caractère égale à 0, ainsi de suite jusqu'à la colonne dont la chaine de caractère sera supérieur à 0, donc il y a un nom.

Précision : je fais le test sur la ligne 1, mais la zone d'impression est à partir de la ligne 2, vu votre fichier exemple. Mais ceci vous savez déjà le modifier...

on recherche la dernière ligne utilisée.

On rentre dans une boucle infinie.

on remonte vers la ligne 1 en décrémentant de 1 tant que cette dernière ligne utilisée à une valeur égal à 0, ainsi de suite jusqu'à la ligne dont la valeur sera différente de 0.

Avec ces valeurs il ne nous reste plus qu'à définir la zone d'impression.

Je me suis permis de mettre en "commentaire" l'embryon de code que vous aviez fait.

@ bientôt

Loureed

Bonjour Loureed

merci pour tout ce travail très "pédagogique" pour moi.

je vais examiner tout ça....

bonne journée

C'est tout bon, j'ai réussi à adapter

encore merci à Loureed.

Mais de rien !

Bonne programmation à vous et @ bientôt

LouReeD

Rechercher des sujets similaires à "adapter zone impression"