VBA zone d'impression multiple et variable [RESOLU]

Mathar

XLDnaute Nouveau
Bonjour à tous,

Je suis face à un problème que je n'arrive pas à résoudre.

Je souhaite définir une zone d'impression variable en longueur et en largeur.
Pour la longueur, aucun problème, par contre je ne trouve pas de formule satisfaisante pour la largeur. Ma feuille comporte plusieurs tableaux (nombre variable) avec lignes variables et colonnes allant de 8 à 15. De plus, le tableau peut contenir des cases vides ou des images (aléatoire). Dans le même temps, à partir de la colonne 17 les cellules peuvent ne pas être vide.

Voilà le code avec les deux lignes qui posent problème.

Code:
Sub ZoneImpression()

Dim Y As Integer
With ActiveSheet
Y = Range("A65536").End(xlUp).Row
End With
    
Dim X As Integer
With ActiveSheet
X = Range("O3").End(xlToLeft).Column [B]je voudrais calculer le nbre de colonnes de chaque ligne et sélectionner le max[/B]
End With

ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(Y, X)) [B]Ne fonctionne pas, j'aimerai donner la colonne en nombre[/B]

End Sub

Je cherche donc un moyen de calculer la dernière colonne utilisée dans une plage de données (pour ne pas prendre en compte les colonnes >= 17 n'entrant pas dans l'impression) et dans un deuxième temps, utilisé cette valeur pour définir la zone d'impression.

Le fichier joint est un exemple de tableaux à imprimer.

Merci pour vos réponses
 

Pièces jointes

  • ZoneImpression.xlsm
    17.3 KB · Affichages: 55
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : VBA zone d'impression multiple et variable

Bonjour Mathar,

Peut-être en modifiant ton code comme ceci:

Code:
Sub ZoneImpression()

'
Dim X As Integer, Y As Integer
With ActiveSheet
  Y = .Range("A65536").End(xlUp).Row
  'La boucle suivante recherche la dernière colonne remplie dans la zone A:P
  For X = 1 To 16
    If .Cells(Rows.Count, X).End(xlUp).Row = 1 Then
      X = X - 1
      Exit For
    End If
  Next
  .PageSetup.PrintArea = Range(Cells(1, 1), Cells(Y, X)).Address
End With
End Sub

Cordialement.
 

Mathar

XLDnaute Nouveau
Re : VBA zone d'impression multiple et variable

Bonjour Papou-net,

Merci beaucoup, c'est parfait.
Par contre, peux-tu m'expliquer le fonctionnement de ces deux lignes:

Code:
If .Cells(Rows.Count, X).End(xlUp).Row = 1 Then
      X = X - 1

J'essaye de comprendre la logique pour ne pas avoir à reposer bêtement une question similaire plus tard.

Encore Merci!
 

Papou-net

XLDnaute Barbatruc
Re : VBA zone d'impression multiple et variable

RE:

Cette partie de la boucle recherche la dernière ligne remplie dans la colonne en cours de lecture. Si cette colonne est vide, la valeur renvoyée par End(xlUp) vaut 1. Il suffit alors de retrancher 1 à la valeur X pour définir la dernière colonne renseignée et sortir de la boucle.

Cordialement.
 

Papou-net

XLDnaute Barbatruc
Re : VBA zone d'impression multiple et variable

Ce n'est pas le lieu idéal, mais je viens vous remercier pour vos messages Modeste et 00,

Votre soutien me fait chaud au coeur dans mon redémarrage sur le site.

A bientôt de vous croiser.

Amitiés.
 

Membres actuellement en ligne

Statistiques des forums

Discussions
287 536
Messages
1 884 452
Membres
163 314
dernier inscrit
cedric.remacle
Haut Bas