Variables dans PrintArea

Bonjour à tous, je souhaiterais inclure plus plusieurs variables dans une PrintArea.

Je possède une CheckBox C1 et C2 dans un formulaire. Si C1 est cochée alors la variable V1 prend une valeur donnée :

 If C1 = True Then
      V1 = Worksheets(1).Range("H2: AO37")
        Else: V1 = ""
    End If

Il en va de même pour V2 sur une autre feuille.

Comment définir la PrintArea telle qu'elle prenne en considération les zones en question ? (Genre ActiveSheet.PageSetup.PrintArea = V1, V2)

Merci !

Quelqu'un aurait une idée ?

Bonsoir

Dans PrintArea il faut une chaine de caractère

Il faut définir tes variables V1 et V2 en String

V1 = Worksheets(1).Range("H2: AO37").Address

Ensuite

ActiveSheet.PageSetup.PrintArea = V1 & "," & V2

Mais sans fichier pour tester pas sur

Si pas ça

Voici le fichier, je suis circonspect vu toutes les combinaisons essayées dont la tienne

Bonsoir

Le problème c'est que tu veux imprimer 2 pages en utilisant juste ActiveSheet

On peut imprimer plusieurs morceaux d'une même page en plusieurs pages, mais on ne peut pas imprimer plusieurs morceaux de feuilles différentes (du moins pas comme cela - sinon je serai curieux de le voir)

Quand tu marques

Dash = ThisWorkbook.Worksheets("Flash").Range("H2: AO37").Address

, le nom du classeur et de la page est sans importance, il y a juste la zone à imprimer qui à de la valeur

Ce qui équivaut à marquer

Dash = Range("H2: AO37").Address

ou en simplifiant

Dash = "$H$2:$AO$37"

Si tu as besoin d'imprimer tes 2 zones il faut le faire en 2 fois

Voilà ce que pourrais donner ton code

Private Sub CommandButton1_Click()

  Application.ScreenUpdating = False

  DaMa.Hide

  'Dashboard
  If CheckBox1 = True Then
    With ThisWorkbook.Worksheets("Flash")
      With .PageSetup
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .Orientation = xlLandscape
        .PrintArea = "$H$2:$AO$37"
      End With
      .PrintPreview
    End With
  End If

  'Fin Rep
  If CheckBox2 = True Then
    With ThisWorkbook.Worksheets("Conso - GM")
      With .PageSetup
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .Orientation = xlLandscape
        .PrintArea = "$H$2:$AO$127"
      End With
      .PrintPreview
    End With
  End If

  Application.ScreenUpdating = True

End Sub

Merci beaucoup,

Pourtant il est possible à la main d'imprimer les zones d'impression de différentes feuilles en sélectionant tous les onglets impliqués et en lançant une impression des feuilles actives ?

Mais je n'arrive pas à faire ça en VBA ça me perturbe !!

Bonsoir

Comme ça

Sub Imprime()
  Sheets("Feuil1").PageSetup.PrintArea = "$A$1:$F$11"
  Sheets("Feuil2").PageSetup.PrintArea = "$L$7:$S$26"
  Sheets(Array("Feuil1", "Feuil2")).PrintPreview
End Sub

Super, je suis bon avec ça, merci !

Une dernière tout de même : si les noms de page p et k sont dans des variables que l'on utilise pas forcément, comment faire fonctionner Sheets(Array(p, k)).PrintPreview en toutes circonstance ?

Excel me met out of range dans tous mes essais.

Bonjour

Comme cela pas facile à voir

Le minimum c'est d'avoir le code complet, le plus du plus c'est d'avoir le fichier en cause

Aurel59 a écrit :

si les noms de page p et k sont dans des variables que l'on utilise pas forcément

Tu veux dire quoi avec "des variables que l'on utilise pas forcément" ?

Ce code fonctionne

Sub Imprime()
Dim P As String, K As String

  P = "Feuil1": K = "Feuil2"
  Sheets(P).PageSetup.PrintArea = "$A$1:$F$11"
  Sheets(K).PageSetup.PrintArea = "$L$7:$S$26"
  Sheets(Array(P, K)).PrintPreview
End Sub

J'imagine par là que p et k soient associés aux Checkbox 1 et 2, et que l'utilisateur a le choix de faire la preview de l'un, l'autre, ou les 2, désolé si je n'étais pas assez précis

Bonjour

A tester

Private Sub CommandButton1_Click()
Dim P As String, K As String
Dim Tablo, Indice

  DaMa.Hide

  Application.ScreenUpdating = False
  P = "Flash"
  K = "Conso - GM"
  ReDim Tablo(0)

  If CheckBox1 = True Then
    Sheets(P).PageSetup.PrintArea = "$H$2:$AO$37"
    Tablo(0) = P
    Indice = Indice + 1
  Else
    Sheets(P).PageSetup.PrintArea = ""
  End If

  'Fin Rep
  If CheckBox2 = True Then
    Sheets(K).PageSetup.PrintArea = "$H$2:$AO$127"
    ReDim Preserve Tablo(Indice)
    Tablo(Indice) = K
  Else
    Sheets(K).PageSetup.PrintArea = ""
  End If
  If Tablo(0) <> "" Then
    Sheets(Tablo).PrintPreview
  End If

  Application.ScreenUpdating = True
  DaMa.Show 0
End Sub

Tu m'as fait découvrir une super nouvelle fonction là, et ça marche

Merci pour ton aide précieuse !

Rechercher des sujets similaires à "variables printarea"