Zone d'impression

Bonjour à toutes et tous,

Dans le fichier ci-joint, une zone d'impression est défini englobant le premier tableau ["LES_SCHTROUMPFS"].

J'aimerais que lorsque je me sert de l'Userform1 qui me permet de de copier/coller cette zone, le nouveau tableau soit rajouter comme une seconde zone d'impression et ainsi de suite.

Le but est qu'à l'impression, tous les tableaux ayant été créés soient automatiquement dimensionné sur une feuille chacun en oubliant les deux petits tableaux ["Tab_Totaux"] & ["Tab_joueurs"].

Merci d'avance ;)

Salut Sotin,

Normalement, le complément de macro placé dans le fichier ci-joint dans le code de la feuille "Worksheet_SelectionChange" devrait correspondre à ton attente ; si tu ajoutes ou enlève des tableaux dans la partie supérieure de ta feuille, les zones d'impression s'actualisent automatiquement.

Cordialement.

Re,

Merci beaucoup, c'est exactement ce que je souhaitais !

J'ai essayé de comprendre le code, mais je n'ai pas trouvé ce que tu as modifié. Pourrais tu me l'indiqué ?

Bonne journée

Salut,

Dans le code de la feuille "Worksheet_SelectionChange", j'ai ajouté ce passage :

' Actualisation de la zone d'impression
    DerCol = Rows("1:28").Find("*", , , , xlByColumns, xlPrevious).Column
    Zone = Range(Cells(1, 1), Cells(28, 9)).Address
    If DerCol > 9 Then
        For i = 11 To DerCol Step 10
            Zone = Zone & "," & Range(Cells(1, i), Cells(28, i + 8)).Address
        Next i
    End If
    ActiveSheet.PageSetup.PrintArea = Zone

Le code recherche quelle est la dernière colonne utilisée (DerCol = ......), place une première zone d'impression fixe, pour le premier tableau (Zone = Range(Cells(1,1), cells(28, 9)).Address) puis ajoute autant de nouvelles zones d'impression que nécessaire par la boucle ''For/Next". Tout à la fin, les nouvelles zones d'impression additionnées dans la variable ''Zone'' sont mises en place sur la feuille par la dernière instruction du code ci-dessus.

A ta disposition si tu as besoin de plus d'explications.

Amicalement.

Re,

Effectivement, je n'ai pas pensé à aller voir dans le "Worksheet_SelectionChange" ! Merci pour ces explications parfaitement claires.

Au plaisir

Je l'avais pourtant mentionné dans mon premier message

C'est exact ... Autant pour moi ;)

bonjour Sotin, salut Yvouille,

si vous mentionnez ces tableaux, c'est peut-être plus malin des les utiliser pour savoir leur vrai position.

Sub Imprimer()
     Dim UN    As Range, LO
     With Sheets("Nouveau")
          For Each LO In .ListObjects        'boucler les tableaux
               If LO.Range.Row < 30 Then     'commence avant la ligne 30
                    With LO.Range
                         Set c = .Offset(1 - .Row).Resize(.Row + .Rows.Count - 1)     'plage à partir de la première ligne
                    End With
                    Set UN = Union(IIf(UN Is Nothing, c, UN), c)     'fusionner
               End If
          Next

          If Not UN Is Nothing Then          'UN n'est pas vide
               .PageSetup.PrintArea = UN.Address(0, 0)     'votre zone ...
               .PrintPreview                 'capture d'écran
               '.PrintOut     'imprimer
          End If
     End With
End Sub

Bonjour,

Merci pour cette deuxième solution ! 👍🏻

Bonne journée

re,

il faut savoir que l'adresse de ce "printarea" est limitée à 255 charactères, disons 15 à 20 plages (tableaux) individuelles. Donc si vous dépassez cette limite, il faut le faire en 2 fois. Vous aurez combien de tableaux ?

Re,

Le nombre est aléatoire, mais il est possible qu'il dépasse la vingtaine.

alors, on sait le faire aussi avec une plage et un nombre de pagebreaks verticaux ..., un moment

le dernier ajustement sera pour demain

re,

vous verrez, macro "Imprimer" fonctionne bien jusqu'à 20 tableaux, "Imprimer2" n'a plus ce problème.

Re,

Et bien merci beaucoup pour votre implication dans mon projet ! ☺️

Au plaisir 👍🏻

Rechercher des sujets similaires à "zone impression"