Pb d'impression VBA

Signaler
Messages postés
11
Date d'inscription
jeudi 6 septembre 2007
Statut
Membre
Dernière intervention
28 février 2009
-
Messages postés
443
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
1 mars 2011
-
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

Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
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 />
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Bon !
hormis cette question de lisibilité de code, c' est quoi "DATE" ?

<hr />I LIKE TO BE HERE WHEN I CAN
<hr />
Messages postés
11
Date d'inscription
jeudi 6 septembre 2007
Statut
Membre
Dernière intervention
28 février 2009

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.


 
Messages postés
11
Date d'inscription
jeudi 6 septembre 2007
Statut
Membre
Dernière intervention
28 février 2009

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" /??>
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Ç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
Messages postés
11
Date d'inscription
jeudi 6 septembre 2007
Statut
Membre
Dernière intervention
28 février 2009

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" /??>
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
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 />
Messages postés
443
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
1 mars 2011
2
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