Erreur 438 VBA sur une impression sous conditions

gaelick

XLDnaute Nouveau
Amical bonsoir à tous les excéliens, bonsoir le forum.
Veuillez trouver ci dessous le code en question qui me pose souçi. Je ne dois pas etre loin mais bon je ne sais plus quoi chercher, où actionner, que modifier ! C'est un code "bricolé" je ne suis pas programmeur (chuis viticulteur !)
Le message indique ="Erreur d'execution '438':propriété ou méthode non gérée par cet objet"
Euh l'objet cela veut dire quoi !? C'est un CommandButton non !? En tout cas le Click active un CommandButton.
Je ne peux pas joindre de pièce, elle est trop lourde elle fait 90 K zippée et en plus ce n'est qu'un copier/collé de la zone en question.
Windows XP SP2 et Excel 2000.
Moi de mon coté je vais continuer à trifouiller. Merci de vous interesser à mon problème et j'espère qu'un bon génie se penchera sur mon code.
D'avance merci !

Sub impressionfeuillesrepasetjournéesmoyensetgrands_Click()
Application.ScreenUpdating = False
With ActiveSheet.PageSetup
If ActiveSheet.Cell("J283").Value <> "" Then
ActiveSheet.PageSetup.PrintArea = "$J$278:$AF$312""$J$600:$AF$634"
End If
If ActiveSheet.Cell("J313").Value <> "" Then
ActiveSheet.PageSetup.PrintArea = "$J$313:$AF$342""$J$635:$AF$664"
End If
If ActiveSheet.Cell("J343").Value <> "" Then
ActiveSheet.PageSetup.PrintArea = "$J$343:$AF$372""$J$665:$AF$694"
End If
If ActiveSheet.Cell("J373").Value <> "" Then
ActiveSheet.PageSetup.PrintArea = "$J$373:$AF$402""$J$695:$AF$724"
End If
If ActiveSheet.Cell("J403").Value <> "" Then
ActiveSheet.PageSetup.PrintArea = "$J$403:$AF$432""$J$725:$AF$754"
End If
If ActiveSheet.Cell("J445").Value <> "" Then
ActiveSheet.PageSetup.PrintArea = "$J$440:$AF$474""$J$760:$AF$794"
End If
If ActiveSheet.Cell("J475").Value <> "" Then
ActiveSheet.PageSetup.PrintArea = "$J$475:$AF$504""$J$795:$AF$824"
End If
If ActiveSheet.Cell("J505").Value <> "" Then
ActiveSheet.PageSetup.PrintArea = "$J$505:$AF$534""$J$825:$AF$854"
End If
If ActiveSheet.Cell("J535").Value <> "" Then
ActiveSheet.PageSetup.PrintArea = "$J$535:$AF$564""$J$855:$AF$884"
End If
If ActiveSheet.Cell("J565").Value <> "" Then
ActiveSheet.PageSetup.PrintArea = "$J$565:$AF$594""$J$885:$AF$914"
End If

'Ci dessous permet de définir les indications pour l'impression mais on peut zapper et alléger le code en effaçant à partir d'ici !'
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.6)
.RightMargin = Application.InchesToPoints(0.6)
.TopMargin = Application.InchesToPoints(0.6)
.BottomMargin = Application.InchesToPoints(0.6)
.HeaderMargin = Application.InchesToPoints(0.6)
.FooterMargin = Application.InchesToPoints(0.6)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = True
.Zoom = 100


End With

ActiveSheet.PrintOut Copies:=1, Collate:=True
Application.ScreenUpdating = True


End Sub
 

Gael

XLDnaute Barbatruc
Re : Erreur 438 VBA sur une impression sous conditions

Bonsoir Gaelick,

Je ne suis pas très bon en VBA (pas encore, mais ça vient...) mais j'aurais simplement mis l'instruction With activesheet.pagesetup à la fin de la série de If.

Pour éviter la série de if, j'aurais essayé de la remplacer par une zone variable nommée dans la feuille Excel (avec décaler par exemple) à laquelle le pagesetup fera référence.

@+

Gael
 

gaelick

XLDnaute Nouveau
Re : Erreur 438 VBA sur une impression sous conditions

Bonsoir le forum, bonsoir XLD.
Merci Gael je vais essayer tes idées dés la fin du repas. En tous cas merci d'avoir réfléchi sur mon code. Respect comme disent les jeunes !
A toute à l'heure peut être.
 

gaelick

XLDnaute Nouveau
Re : Erreur 438 VBA sur une impression sous conditions

Bonjour XLD, bonjour le forum,
J'ai crée un bout de fichier .XLS pour montrer un peu la problématique.
Si la cellule en haut à gauche de la partie à imprimer(ici A4) contient un nom alors imprimer la partie à imprimer (en jaune), et passer à la cellule en haut à gauche de la 2° partie à imprimer(ici A37)...etc
Des que la cellule en haut à gauche est vide ,alors ne plus imprimer.
Euh moi je me comprends mais suis je clair ? J'espère que oui !
 

gaelick

XLDnaute Nouveau
Re : Erreur 438 VBA sur une impression sous conditions

Rebonjour le Forum !!
Oui je sais mon code il est pas terrible (c'est un euphémisme!)mais c'est parce que je comprends à peine ce que je trouve par çi par là et je mets tout ces bouts à la qeue leuleu et parfois ça marche !:) mais souvent non :(
 

gaelick

XLDnaute Nouveau
Re : Erreur 438 VBA sur une impression sous conditions

Rebonjour à toutes et à tous !
Oups je m'aperçois que dans le code les zones à imprimer ne correspondent pas à celles du fichier joint. Peu importe les gars c'est l'idée qui compte je me débrouillerai par la suite ! Merci
 
C

Compte Supprimé 979

Guest
Re : Erreur 438 VBA sur une impression sous conditions

Salut Gaelick,

A quoi corresponds ton code, que veux tu faire exactement ?

Qu'elle le lien avec le fichier joint ?

A+
 

gaelick

XLDnaute Nouveau
Re : Erreur 438 VBA sur une impression sous conditions

Rebonjour à tous, bonjour BrunoM45
On va partir de la pièce jointe sinon effectivement c'est le souk !
Dans mon fichier d'origine j'ai un command button qui déclenche l'impression de plusieurs plages (chaque plage correspond à une page format a4 en mode paysage).
Il y a 5 plages potentiellement à imprimer mais je ne veux pas consommer du papier et de l'encre inutilement, donc je cherche le code qui déclenche l'impression d'une plage (par ex sur l'exemple de la piece jointe ce serait "a1:u36"et"A37:U72" et donc le tout avec un seul command button.
Si des noms s'ajoutent en colonne AB alors le code en tiendras compte à partir du moment où la cellule A73 sera remplie par un nom.
Euh j'ai du mal à m'exprimer, tout s'embrouille et je sais que c'est facile à comprendre.
 

Cousinhub

XLDnaute Barbatruc
Re : Erreur 438 VBA sur une impression sous conditions

Bonjour,
tout d'abord, le plus simple est d'insérer des sauts de page, ainsi que la ligne des titres.
Ensuite, pour déterminer ta zone d'impression, tu appliques ce code :

Sub imprime()
For Each c In Array(Range("a109"), Range("a73"), Range("a37"), Range("a4"))
If c <> "" Then
Select Case c.Address
Case Is = "$A$109"
ActiveSheet.PageSetup.PrintArea = "$A$1:$U$144": Exit Sub
Case Is = "$A$73"
ActiveSheet.PageSetup.PrintArea = "$A$1:$U$108": Exit Sub
Case Is = "$A$37"
ActiveSheet.PageSetup.PrintArea = "$A$1:$U$72": Exit Sub
Case Is = "$A$4"
ActiveSheet.PageSetup.PrintArea = "$A$1:$U$36": Exit Sub
End Select
End If
Next
' Ici ton code pour imprimer
End Sub

Regarde le fichier joint, et reviens si tu as un souci.
Bon week-end
 

Pièces jointes

  • Gaelick1.xls
    45 KB · Affichages: 68
  • Gaelick1.xls
    45 KB · Affichages: 59
  • Gaelick1.xls
    45 KB · Affichages: 63

gaelick

XLDnaute Nouveau
Re : Erreur 438 VBA sur une impression sous conditions

Bonjour à tous,
Bonjour Bhbh,
Merci, merci beaucoup je vais cogiter cette idée qui semble correcte.
Mais il me faut du temps pour comprendre ce qui est ecrit mais j'y arriverai. Bon week end également, encore merci.
 

gaelick

XLDnaute Nouveau
Re : Erreur 438 VBA sur une impression sous conditions

Bonjour à tous et à chacun, Bonjour XLD
Non j'abandonne, plus j'avance plus je regresse je suis une trume et basta.
Quand on est un nullos faut savoir s'arreter !!
Tant pis j'imprimerai toutes les zones et puis c'est tout avec ce bout de code qui semble marcher =
Sub impressionfeuillesrepasetjournéesmoyensetgrands_Click()
Range("J278:AF432").Select
Selection.PrintOut Copies:=1, Collate:=True
Range("J270").Select
Range("J440:AF594").Select
Selection.PrintOut Copies:=1, Collate:=True
Range("J270").Select
Range("J600:AF754").Select
Selection.PrintOut Copies:=1, Collate:=True
Range("J270").Select
Range("J760:AF914").Select
Selection.PrintOut Copies:=1, Collate:=True
Range("J270").Select

End Sub
Voila le fil est terminé !

Par contre merci et chapeau a toutes les personnes de bonne volonté qui ont lu et réfléchi sur mon problème.
Je sais pas comment font les gens pour arriver à un tel niveau d'excellence et de professionalisme. Je suis sidéré par la qualité et le niveau de travail, compréhension, imagination, rigueur, intellligence des XLDnautes impliqués et autres !!
Longue vie à XLD;
Merci d'exister;
Merci d'être ce que vous êtes et comme vous etes !!!
Je reviendrai bien sûr quémander parce que moi par contre je ne suis qu'une m....!
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof