stephx06
Messages postés11Date d'inscriptionjeudi 6 septembre 2007StatutMembreDernière intervention28 février 2009
-
6 sept. 2007 à 23:19
JM247L
Messages postés443Date d'inscriptionmardi 27 mars 2007StatutMembreDerniè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
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 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 !
stephx06
Messages postés11Date d'inscriptionjeudi 6 septembre 2007StatutMembreDernière intervention28 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.
stephx06
Messages postés11Date d'inscriptionjeudi 6 septembre 2007StatutMembreDernière intervention28 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" /??>
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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
stephx06
Messages postés11Date d'inscriptionjeudi 6 septembre 2007StatutMembreDernière intervention28 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" /??>
JM247L
Messages postés443Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 1 mars 20112 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