Zone d'impression avec un tableau formaté

Résolu/Fermé
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 - Modifié par ButteDuLac le 18/12/2015 à 16:06
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 - 23 déc. 2015 à 16:12
Bonjour,

J'ai une macro :
Sub ZoneImpAuto()
'
' ZoneImpAuto Macro
' Pour définir automatiquement la zone d'impression selon les données entrées en colonne B. Dernière colonne définie sur BX, à modifier au besoin.
'
Dim derline As Integer
derline = Range("B65536").End(xlUp).Row
ActiveSheet.PageSetup.PrintArea = "A1:BX" & derline
'
End Sub


Que j'utilisais sans problème dans un classeur personnel, non verrouillé.

Je crée un classeur que je dois verrouiller (plusieurs formules et utilisateur moins habitué avec Excel), donc mon premier problème c'est que cette personne ne pourra pas ajouter de lignes dans son tableau (enfin, je n'ai pas pu trouver comment), alors je dois lui créer un tableau avec un nombre suffisant de lignes pour une utilisation de quelques semaines. Mais dans ce cas, c'est comme s'il y avait toujours quelque chose d'inscrit dans la colonne B, même si je n'ai entré aucune valeur. Alors la zone d'impression va jusqu'au bas du tableau (trois pages), même s'il n'y a que 5 lignes remplies.

J'aurais voulu un code qui indique, par exemple, "si colonneA >= 1" (car en A, il y a une formule : =SI(ESTVIDE(B8);"";LIGNE(B8)-7) donc s'il y a un nombre supérieur à 1, cela signifie qu'il y a une valeur entrée en colonne B.
Oups! Sauf qu'il faut que les lignes 1 à 6 soient intégrées automatiquement, car elles doivent être imprimées (sur la page 1) mais elles ne font pas partie du tableau, ce sont des lignes de texte précédant le tableau, et ma ligne 7 est la ligne d'entête du tableau et est répétée sur chaque page.

Comment puis-je réécrire mon code, svp?

Merci à l'avance!


A voir également:

1 réponse

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
18 déc. 2015 à 16:57
Bonjour

essaies:
Option Explicit
'-------------------------------
Sub colb_vide()
Dim ligvid As Integer
With ActiveSheet
ligvid = .Columns("B").Find(what:="", after:=.Range("B7")).Row
.PageSetup.PrintArea = "A1:BX" & ligvid
End With
End Sub

Si ca ne marche pas
Mettre le classeur sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le raccourci proposé (clic droit) dans le message de réponse

Dans l’attente

0
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 40
18 déc. 2015 à 21:44
Ça marche nickel!
Merci!
Est-ce qu'il y a une raison pour laquelle la ligne tout de suite après est incluse? (Une ligne en-dessous de la dernière ligne avec valeur...)
Au pire, c'est un détail, mais j'aimerais, par curiosité personne, comprendre.

Merci encore!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303 > ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020
19 déc. 2015 à 09:08
bonjour

non, tu peux mettre un -1 à ligvid
0
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 40
23 déc. 2015 à 16:12
Super! Merci! Joyeuses Fêtes!
0