VBA problème de bordures lors d'une deuxième impression

bisous57 - 17 oct. 2012 à 15:49
MJPMJPMJP Messages postés 18 Date d'inscription jeudi 12 février 2009 Statut Membre Dernière intervention 15 février 2013 - 24 oct. 2012 à 15:52
Bonjour,

J'ai un petit souci mais qui me prend grandement la tête... pouvez vous m'aider?

J'ai créé un tableau sur excel (avc des bordures). Puis j'ai créé une macro qui me permet de mettre en forme la page (en tete....)et d'imprimer le tableau selon certaines conditions. J'ai ensuite créé un bouton pour utiliser cette macro.
Lorsque j'ouvre mon fichier je clique une première fois sur mon bouton : tout fonctionne correctement, je clique une deuxième fois sur mon bouton et les bordures ne s'affichent plus correctement (les lignes pointillées deviennent pleines, certaines s'effacent...).

Avez vous une idée d'où peut provenir ce problème?? j'ai du mal à croire que le pb vienne de ma macro puisque le premier coup ça marche. J'ai essayé sur un autre pc (et une autre imprimante) mais ça ne change rien.

Voici mon code (on ne sait jamais ^^) :

Sub Macro5()
'
' Macro5 "Impression des plannings S2"
'

'mise en forme de l'en tête

With Worksheets("Plannings").PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = "$B:$C"
End With
Worksheets("Plannings").PageSetup.PrintArea = "$D$2:$E$10"
With Worksheets("Plannings").PageSetup
.LeftHeader = "&G"
.CenterHeader = _
"&""Arial,Gras""&24Planning" & Chr(10) & Worksheets("Plannings").Cells(102, 1) & Chr(10) & Worksheets("Plannings").Cells(103, 1) & Chr(10) & "Sous réserve de modification"
.RightHeader = "&""Arial,Gras""&12ATT DARTY" & Chr(10) & "Alsace Lorraine"
.LeftFooter = _
"Sauf mention contraire," & Chr(10) & "ligne non complétée" & Chr(10) & "=erreur à signaler impérativement" & Chr(10) & "" & Chr(10) & "" & Chr(10) & "" & Chr(10) & "" & Chr(10) & "" & Chr(10) & "" & Chr(10) & "" & Chr(10) & "" & Chr(10) & ""
.CenterFooter = _
"&13édité le :" & Chr(10) & "&D" & Chr(10) & "sous réserve de modification" & Chr(10) & "" & Chr(10) & "&""Arial,Gras""&16L'intéressé :" & Chr(10) & "" & Chr(10) & "" & Chr(10) & "" & Chr(10) & "" & Chr(10) & "" & Chr(10) & ""
.RightFooter = "" & Chr(10) & "" & Chr(10) & "" & Chr(10) & "" & Chr(10) & "&11" & Chr(10) & "&""Arial,Gras""&16Le responsable :" & Chr(10) & "&G"
.LeftMargin = Application.InchesToPoints(1.37795275590551)
.RightMargin = Application.InchesToPoints(0.511811023622047)
.TopMargin = Application.InchesToPoints(2.24409448818898)
.BottomMargin = Application.InchesToPoints(1.96850393700787)
.HeaderMargin = Application.InchesToPoints(0.708661417322835)
.FooterMargin = Application.InchesToPoints(0.31496062992126)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintSheetEnd
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 70
.PrintErrors = xlPrintErrorsDisplayed
End With


Dim colonne As Integer

Application.ScreenUpdating = False

colonne = 4
Worksheets("plannings").Select
While Worksheets("plannings").Cells(102, colonne) <> 0

Range(Cells(102, colonne), Cells(119, colonne + 1)).Select 'selection de la zone d'impression
ActiveSheet.PageSetup.PrintArea = Selection.Address ' application de la zone d'impression
ActiveWindow.SelectedSheets.PrintOut Copies:=1 ' impression
colonne = colonne + 2

Wend
Application.ScreenUpdating = True
End Sub

Donc si vous avez une idée...

Claire

9 réponses

MJPMJPMJP Messages postés 18 Date d'inscription jeudi 12 février 2009 Statut Membre Dernière intervention 15 février 2013
20 oct. 2012 à 23:20
bonjour
est ce que
Application.ScreenUpdating = True 
peut y etre pour quelque chose ?

ActiveSheet.PageSetup.PrintArea = Selection.Address ' application de la zone d'impression
Application.ScreenUpdating = True
ActiveWindow.SelectedSheets.PrintOut Copies:=1 ' impression 
Application.ScreenUpdating = False
colonne = colonne + 2


@+JP
0
Merci beaucoup mais cela ne change rien au problème :(
La seconde impression est toujours mauvaise...

Claire
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 oct. 2012 à 13:02
Bonjour,
je lis mal (torticolis) un code non indenté et non mis en forme (entre balises code - 3ème icône en partant de la droite).
Ma réaction, après lecture en diagonale :
Pourquoi TOUT recommencer pour la seconde (ou suivante) impression ?
Il suffirait d'une valable booléenne (à utiliser en expression conditionnelle) pour ne pas TOUT relancer et se contenter de reprendre uniquement à partir de l'impression à proprement parler (telle que déjà arrêtée) , non ?


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Oui pardon je n'avais pas fait attention...
j'avoue être novice en VBA et ne pas visualiser ce que vous me conseiller...
j'ai réussi à cibler le problème : se sont mes images (de l'en-tête et pied de page) qui créent le problème, bon je ne sais pas encore pk ni comment résoudre le problème... dc si vous avez une idée...
Merci

Claire
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 oct. 2012 à 10:27
Une idée ? Il me semble bien te l'avoir donnée ! Non ?
Ne pas réexécuter la totalité, mais la seule impression !
Une variable booléenne, mise à true lors de la première impression.
Si true, ne répéter que l'impression à proprement parler, sans toucher au reste.
Une simple expression conditionnelle, quoi !
Si ce que je dis là est pour toi du chinois, je ne peux plus rien pour toi !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Je ne visualisais pas ce que vous me conseillé et c'est pas en répétant la même chose en me rabaissant que je comprends mieux.

Je pense que vous me conseillé de faire qq chose du style :

if "truc" = true then
j'imprime
else
je fais ma mise en forme et j'imprime
end if

Ce que je ne sais pas c'est à quoi correspond "truc"...

Merci tout de même pour votre aide.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 oct. 2012 à 11:46
Ce ne serait pas "truc" (une chaîne de caractères) mais une variable booléenne truc
Je ne veux pas te "rabaisser", mais te forcer à apprendre les bases (sans lesquelles tu ne saurais aller loin) ... hein ...
Mais je devine qu'il vaut mieux que je me retire de cette discussion, compte tenu de l'orientation que tu es en train de lui donner.
Bonne chance.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Bonjour!
Je suis debutant en vb6access.Je suis en cour de faire un stage avec comme sujet gestion de stock d'une magasin en vb6 et access2003.c'est mon premier projet sur vb6.j'ai besoin d'aide pour faciliter mon stage.
Je veu telecharger un logiciel deja existe avec fichier zip pour que je l'utilise comme model mais ca ne marche pas.Que dois je faire?.Merci

twonax
0
MJPMJPMJP Messages postés 18 Date d'inscription jeudi 12 février 2009 Statut Membre Dernière intervention 15 février 2013
24 oct. 2012 à 15:52
bonjour
ha.ha..ha....
je suis mort de rire
COURAGE ucfoutu...
@+JP
0
Rejoignez-nous