Zone d'impression avec un tableau formaté

Résolu
ButteDuLac Messages postés 534 Statut Membre -  
ButteDuLac Messages postés 534 Statut Membre -
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

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. ButteDuLac Messages postés 534 Statut Membre 41
       
      Ç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
      1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > ButteDuLac Messages postés 534 Statut Membre
         
        bonjour

        non, tu peux mettre un -1 à ligvid
        0
    2. ButteDuLac Messages postés 534 Statut Membre 41
       
      Super! Merci! Joyeuses Fêtes!
      0