VBA zone d'impression multiple et variable [RESOLU]

  • Initiateur de la discussion Initiateur de la discussion Mathar
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

Dernière édition:
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.
 
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!
 
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.
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
107
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
252
Réponses
4
Affichages
530
Réponses
2
Affichages
409
Retour