Pb d'impression VBA

stephx06 Messages postés 11 Date d'inscription jeudi 6 septembre 2007 Statut Membre Dernière intervention 28 février 2009 - 6 sept. 2007 à 23:19
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 - 7 sept. 2007 à 09:55
Bonjour
J'ai un pb pour la création d'une macro sous Excel. Je crée un petit programme permettant la création de facture. Mais voilà une foi les factures réalisée(à l'aide de macro) je souhaite les imprimer. Seulement les facture diffèrent en nom (feuill) et en nombre tous les mois.
Pour simplifier l'écriture du code sachant que je suis un néophyte, j'ai choisi de les imprimer i par 1 lorsque je les clotures.
J'ai donc rédigé un code, mais ca marche pas. Ce que je ne comprends pas c'est que ca bud pas...

Sub Impression()
If ActiveSheet.Cells(14, 8) = "DATE" Then
ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(56, 14)).Address
Else: ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(56, 7)).Address
End If
End Sub

si quelqu'un à une idée...
Cordialement steph
Configuration: Windows XP

8 réponses

chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
6 sept. 2007 à 23:47
Salut,


 étonnant les deux points devant le Else ?


Sub Impression()
If ActiveSheet.Cells(14, 8) = "DATE" Then
   ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(56, 14)).Address
Else
   ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(56, 7)).Address
End If
End Sub


serait plus conventionnelle !   


Ps: t' as l' air d' insister mais t' auras autant de chance d' avoir des réponses
avec un post qu' avec deux.
c' est pas comme au Loto !


<hr />

I LIKE TO BE HERE WHEN I CAN


<hr />
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
7 sept. 2007 à 00:23
Bon !
hormis cette question de lisibilité de code, c' est quoi "DATE" ?

<hr />I LIKE TO BE HERE WHEN I CAN
<hr />
0
stephx06 Messages postés 11 Date d'inscription jeudi 6 septembre 2007 Statut Membre Dernière intervention 28 février 2009
7 sept. 2007 à 00:24
Ok chaiba05 c'est vrai j'avais mis ma questions sur 2 forums car je pensais avoir plus de réponse. Semblerait-il que ça ne serve à rien.Cela dit à l'instar de mon idée ton code sert à rien<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /??><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype>. Je te dis ça sans animosité, mais ça fait exactement la même chose qu'avec le mien. C’est à dire ça définit une zone d'impression, mais ça n'imprime pas. tjs pas de bug détecté par VBA.
Si t'as une autre idée je suis preneur


Les deux points après le Else(:) sont facultatifs, ils ne servent pas à grand chose.


 
0
stephx06 Messages postés 11 Date d'inscription jeudi 6 septembre 2007 Statut Membre Dernière intervention 28 février 2009
7 sept. 2007 à 00:28
Bon je pense que t'as compris j'suis un néophyte donc je bidouille grave. Alors si dans la cellule (14, 8) est écrit "date" alors il y deux factures. Donc la zone d'impression est plus grande. C’est le truck le plus simple que j'ai trouvé... il y à bcp mieux... je peux changer si tu veux, si tu pense que c'est ça!!!!(Je tenais tt de même à te dire merci pour ton aide)<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
7 sept. 2007 à 00:59
Ça peut dépendre du mot "date" inscrit...
mais tu ne dis pas grand chose sur ce qui ne va pas (?)
est-ce que ça imprime mais jamais en grand format ? est-ce que ça n'imprime rien ?

essaie ceci
If UCase(ActiveSheet.Cells(14, 8)) = "DATE" Then
au cas où DATE serait plutôt écrit Date, ce qui est différent

MPi
0
stephx06 Messages postés 11 Date d'inscription jeudi 6 septembre 2007 Statut Membre Dernière intervention 28 février 2009
7 sept. 2007 à 01:05
C’est bon j’ai résolu mon problème si ça vous intéresse :

Sub Impression()
If ActiveSheet.Cells(14, 8) = "DATE" Then
      ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(56, 14)).Address
Else: ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(56, 7)).Address
End If
ActiveWindow.SelectedSheets.PrintOut Copies:=2, Collate:=True
End Sub

pour imprimer 2 feuilles
merci de l'attention porté à ma question et à bientôt peut être<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
7 sept. 2007 à 01:35
sûr que ça nous interesse !
d' autant plus qu' on été loin de la solution :-)

PS: Excuses la remarque sur les deux points.
C' est vrai que j' ai eu un moment de flottement surtout après une rude journée.

Bonne soirée et bonne continuation.

<hr />I LIKE TO BE HERE WHEN I CAN
<hr />
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
7 sept. 2007 à 09:55
Concernant les : après le Else, je ne dirais pas qu'il sont facultatifs dans la mesure ou ils sont mis automatiquement par VBA lorsque l'action du Else est mise sur la même ligne que celui ci
J'explique : Les 2 synthaxes ci-dessous ont le même effet

Sub Impression()
  If ActiveSheet.Cells(14, 8) = "DATE" Then
    ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(56, 14)).Address
  Else: ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(56, 7)).Address
  End If
End Sub

Sub Impression()
If ActiveSheet.Cells(14, 8) = "DATE" Then
  ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(56, 14)).Address
Else
  ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(56, 7)).Address
End If
End Sub

JML
 Partageons notre savoir et nos acquis
0
Rejoignez-nous