Zone d'impression avec un tableau formaté

Résolu/Fermé
Signaler
Messages postés
492
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
-
Messages postés
492
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
-
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!


1 réponse

Messages postés
16538
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
6 décembre 2021
3 252
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

Messages postés
492
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
30
Ç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!
Messages postés
16538
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
6 décembre 2021
3 252 >
Messages postés
492
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020

bonjour

non, tu peux mettre un -1 à ligvid
Messages postés
492
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
30
Super! Merci! Joyeuses Fêtes!