Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro impression avec si

VINCEGR

XLDnaute Occasionnel
Bonjour le forum,

me revoila pour un nouveau blocage

j'utilise la macro suivante pour imprimer

Sub IMPRIME()
'
ActiveWindow.SelectedSheets.PrintOut Copies:=1
ActiveWindow.SelectedSheets.PrintOut From:=8, To:=8, Copies:=2


End Sub


je souhaite incorporer à la macro une condition si possible.

"= si(x410=vrai;alors impression page 9;"")"
"=si(x456=vrai;alors impression page 10;"")"

merci pour votre aide
 

noviceAG

XLDnaute Impliqué
Re : Macro impression avec si

Bonjour VINCEGR, le Forum,
A adapter selon tes besoins

If Target.Address(0, 0) = "vrai" Then
MsgBox "Impression de la page numéro 9"
End If

Sous réserve, n'étant pas un spécialiste des codes
 

JNP

XLDnaute Barbatruc
Re : Macro impression avec si

Bonjour le fil ,
Pas sûr d'avoir compris
Code:
Sub IMPRIME()
'
ActiveWindow.SelectedSheets.PrintOut Copies:=1
ActiveWindow.SelectedSheets.PrintOut From:=8, To:=8, Copies:=2
If Range("X410") <> "" Then ActiveWindow.SelectedSheets.PrintOut From:=9, To:=9, Copies:=2
If Range("X456") <> "" Then ActiveWindow.SelectedSheets.PrintOut From:=10, To:=10, Copies:=2
End Sub
mais ta première ligne imprime déjà toutes les cellules utilisées ...
Une meilleure solution serait d'établir une zone d'impression variable suivant tes conditions avec
Code:
ActiveSheet.PageSetup.PrintArea = "$E$8:$K$30"
Bon courage
 

VINCEGR

XLDnaute Occasionnel
Re : Macro impression avec si

re,

je viens d'adapter le code à mon fichier dont détail ci-dessous et mon seul souci est sur la ligne 2 , je demande 2 impressions et le résultat est 1 seule impression

pourquoi ?

ActiveWindow.SelectedSheets.PrintOut From:=1, to:=7, Copies:=1
ActiveWindow.SelectedSheets.PrintOut From:=8, to:=8, Copies:=2
If Range("X410") <> "" Then ActiveWindow.SelectedSheets.PrintOut From:=9, to:=9, Copies:=1
If Range("X455") <> "" Then ActiveWindow.SelectedSheets.PrintOut From:=10, to:=10, Copies:=1
ActiveWindow.SelectedSheets.PrintOut From:=11, to:=11, Copies:=1


et j'aimerais apprendre le code avec ton conseil JNP

ActiveSheet.PageSetup.PrintArea = "$E$8:$K$30"
mais comment l'adapter,

merci d'avance
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Macro impression avec si

Re ,
Pour la double copie qui n'en produit qu'une seule, j'ai déjà eu le problème mais je n'ai pas trouvé d'où ça venait (probablement un problème de driver d'imprimante ou une mauvaise gestion avec l'option Assembler qui envoie 2 fichiers pour l'impression) .
La solution "bourrin" , c'est
Code:
[COLOR=#0000ff]ActiveWindow.SelectedSheets.PrintOut From:=1, to:=7, Copies:=1[/COLOR]
[COLOR=red]ActiveWindow.SelectedSheets.PrintOut From:=8, to:=8, Copies:=1[/COLOR]
[COLOR=#0000ff][COLOR=#ff0000]ActiveWindow.SelectedSheets.PrintOut From:=8, to:=8, Copies:=1[/COLOR]
If Range("X410") <> "" Then ActiveWindow.SelectedSheets.PrintOut From:=9, to:=9, Copies:=1
If Range("X455") <> "" Then ActiveWindow.SelectedSheets.PrintOut From:=10, to:=10, Copies:=1
ActiveWindow.SelectedSheets.PrintOut From:=11, to:=11, Copies:=1[/COLOR]
pour la zone d'impression, ce serait par exemple
Code:
[COLOR=#0000ff]If Range("X410") <> "" Then ActiveSheet.PageSetup.PrintArea = "$A$410:$X$454"[/COLOR]
où si tu as des variables I = 410 et J = 454, tu peux écrire
Code:
[COLOR=#0000ff]If Range("X410") <> "" Then ActiveSheet.PageSetup.PrintArea = "$A$" & I & ":$X$" & J[/COLOR]
et du coup
Code:
[COLOR=#0000ff]ActiveSheet.PrintOut[/COLOR]
suffit.
Bonne journée
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Macro impression avec si

Bonjour à tous

Un exemple avec Switch

(à adapter et tester)


Code:
Sub a()
ActiveSheet.PageSetup.PrintArea = _
Switch(IsEmpty([A1]), "B1:B10", IsEmpty([B1]), "A1:A10")
ActiveSheet.PrintPreview
End Sub
 

VINCEGR

XLDnaute Occasionnel
Re : Macro impression avec si

re JNP et staple1600,

je viens de tester le code ci-dessous et je viens de comprendre c'est génial top formidable
Code:
Sub a()
ActiveSheet.PageSetup.PrintArea = _
Switch(IsEmpty([A1]), "B1:B10", IsEmpty([B1]), "A1:A10")
ActiveSheet.PrintPreview
End Sub

j'ai aussi testé le Code:


et idem je viens d'apprendre une macro que je vais réutiliser dans d'autre programme.
merci pour vos conseils
et longue vie au forum
bonne journée
 

Discussions similaires

Réponses
1
Affichages
549
Réponses
16
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…