Zone d'impression définie par code VBA

Bonjour,

J'aurais voulu transformé ce code afin que la zone d'impression soit définie non seulement par le nombre de lignes, mais également par le nombre de colonnes, selon la variable DerCol. Pourriez-vous m'y aider ?

Sub Macro1()

Dim DerLig As Integer, DerCol As Integer

DerLig = Range("C" & Rows.Count).End(xlUp).Row
DerCol = Cells(3, 16384).End(xlToLeft).Column

ActiveSheet.PageSetup.PrintArea = "$A$1:$F$" & DerLig

End Sub

Bonne journée

Bonjour,

La plage concernée à imprimer est toujours celle de toute ta feuille ou uniquement ce que tu définis suivant les critères Dercol et derlig ??

En gros tu pourrais par exemple avoir des données en colonnes A à G mais ne vouloir imprimer que les colonnes B à G.

A te relire

Edit Dan : essaie comme ceci

Sub tes()
Dim DerLig As Integer, DerCol As Integer
With ActiveSheet
DerLig = .Range("C" & Rows.Count).End(xlUp).Row
DerCol = .Cells(3, Columns.Count).End(xlToLeft).Column
ActiveSheet.PageSetup.PrintArea = .Range(Cells(1, 1).Address & ":" & Cells(DerLig, DerCol).Address)
End With
End Sub

En fonction de ta réponse sur ma question avant, le code peut être beaucoup plus simple.

A te relire

Salut Dan, merci pour ta réponse,

J'aurais vraiment voulu définir une zone d'impression selon le nombre de lignes concernées de la colonne C et le nombre de colonnes de la ligne 3. Il peut y avoir des valeurs dans les autres colonnes et lignes qui ne devraient pas influencer l'impression.

J'ai fait un premier essai avec le code proposé. Malheureusement ça bloque sur la ligne

ActiveSheet.PageSetup.PrintArea = .Range(Cells(1, 1).Address & ":" & Cells(DerLig, DerCol).Address)

A te relire.

re,

Bizarre je n'ai pas de souci.

Au moment du blocage dans ton code que vaut "Derlig" et "Dercol" ??

A te relire

Bonsoir,

Bonsoir, Dan

Je pense que le souci vient du point que tu as devant .Range (Tu ne fais pas de référence à aucune Feuille...)

Essaie ainsi :

With ActiveSheet
    .PageSetup.PrintArea = .Range(.Cells(1, 1).Address & ":" & .Cells(DerLig, DerCol).Address)
End With

Bonne soirée

re,

Si Cousinhub dans le code plus haut que j'ai proposé nous sommes dans un With Activesheet.

Chez moi pas de soucis, cela fonctionne.

PAr contre on peut comme tu l'as fait, supprimer l'instruction Activesheet et mettre les . devant Cells.

Attendons voir....

Bonjour Dan et Cousinhub,

J'ai encore fait des essais avec une deuxième feuille et les résultats sont différents mais toujours pas concluants (!).

Sur la feuille "Zone d'impression", la macro bloque ; sur la "Feuil1", apparament rien ne se passe en final.

Dans les deux cas, les variables prennent les bonnes valeurs à un certain moment.

A vous relire.

Re-,

@ Dan, effectivement, scuse, je n'avais point lu ton code....

@ Yvouille, il te manque,d'une part, les "." (points), comme je te l'avais indiqué, mais pour déterminer une plage d'impression, il faut mettre l'adresse voulue

Essaie ainsi :

Sub tes()
Dim DerLig As Integer, DerCol As Integer
With ActiveSheet
    DerLig = .Range("C" & Rows.Count).End(xlUp).Row
    DerCol = .Cells(3, Columns.Count).End(xlToLeft).Column
    .PageSetup.PrintArea = .Range(.Cells(1, 1).Address & ":" & .Cells(DerLig, DerCol).Address).Address
End With
End Sub

Bonne soirée

Superbe, comme ça, ça foncionne parfaitement.

Merci beaucoup à tous deux pour votre précieuse aide.

Bonnes salutations.

Rechercher des sujets similaires à "zone impression definie code vba"