Imprimer plusieurs feuille avec condition

bonjour a tous

je suis debutante et j essaie de creer un logiciel pour un ami qui est aveugle donc tout doit etre automatise.

Comment faire en code vba pour imprimer la feuille 2 si la cellule B53 par exemple contient des donnees?

ou alors selectionner et imprimer de la ligne 1 jusqu a une cellule nommee?

merci d avance pour votre aide

lindette

lindette a écrit :

bonjour a tous

je suis debutante et j essaie de creer un logiciel pour un ami qui est aveugle donc tout doit etre automatise.

Comment faire en code vba pour imprimer la feuille 2 si la cellule B53 par exemple contient des donnees?

ou alors selectionner et imprimer de la ligne 1 jusqu a une cellule nommee?

merci d avance pour votre aide

lindette

Salut

Si tu es débutante, et que tu veux pouvoir adapter la macro qu'on va te faire, il faut être précise :

If Not (IsEmpty(Sheets("feuille 2").Range("B53"))) Then _
                               Sheets("feuille 2").PrintOut

imprimera "feuille 2" si la cellule B53 de celle-ci n'est pas vide

Range([A1], Range("nom de la cellule")).PrintOut

imprimera la plage de A1 à cellule "nom de cellule"

A+

bonjour Gorfael

merci pour ta reponse mais je me rend compte que j aurais du mieux m expliquer.

dans mon classeur j ai une feuille nommee "devis" ou donc on tape les informations du devis et une autre "piedpage' ou il y a le total, la remise, le montant total.

quand on a fini de remplir le devis dont la longueur est variable en faisant controle=f , cela cherche la dernier ligne du devis et cela va coller la feuille'piedpage' dessus et ensuite cela l enregistre automatiquement sous le nom du client et le numero du devis et ouvre une userform avec les boutons : IMPRIMER - ENVOYER PAR MAIL - MODIFIER DEVIS

'

Sub finalisation()

'

' finalisation Macro

' Macro enregistrée le 05/10/2007 par saint martin alu

'

' Touche de raccourci du clavier: Ctrl+f

'

'on recherche la dernière ligne de la colonne A de la feuille DEVIS

derli = Sheets("DEVIS").Columns(1).Find("*", , , , , xlPrevious).Row

'on cherche le multiple de 46

derli = Application.Ceiling(derli, 46)

'on colle

Sheets("piedpage").Select

Range("A1:F9").Select

Selection.Copy

Sheets("DEVIS").Select

Range("A" & derli).Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _

SkipBlanks:=False, Transpose:=False

Columns("a:a").Select

Selection.EntireColumn.Hidden = True

ActiveSheet.SaveAs Filename:=("C:\Documents and settings\SM ALU\Mes documents\clients\" & Range("D11").Value & Range("B23").Value)

UserForm1.Show

End Sub

'

mon probleme c est de pouvoir selectionner sur cette feuille devis de la premiere cellule a la derniere cellule rempli car si je fais juste imprimer et bien apres le montant total il reste le tracage des bordures des colonnes et cela m imprime 15 feuilles....

voila mon probleme c est pour cela que je cherche une solution pour limiter la zone d impression.

j ai essayer de faire avec cellule nommee, mais le probleme c est que la cellule nomme est sur la feuille'piedpage' et comme on la colle ensuite sur devis cela ne fonctionne pas.

j espere que je me suis un peu mieux expliquer

je veux bien vous envoyer mon classeur si necessaire

merci beaucoup pour votre aide

lindette

salut lindette et le forum

Sub finalisation()
derli = Sheets("DEVIS").Columns(1).Find("*", , , , , xlPrevious).Row
'on cherche le multiple de 46
derli = Application.Ceiling(derli, 46)
'on colle
Sheets("piedpage").Select
Range("A1:F9").Copy
Sheets("DEVIS").Select
    With Range("A" & derli)
        .PasteSpecial Paste:=xlPasteValues
        .PasteSpecial Paste:=xlPasteFormats
        .EntireColumn.Hidden = True
    End With
PageSetup.PrintArea = "$A$1:$F$" & derli + 8 '*******
ActiveSheet.SaveAs Filename:=("C:\Documents and settings\SM ALU\Mes documents\clients\" & _
            .Range("D11") & .Range("B23"))

UserForm1.Show
End Sub

Ton code un peu remanié, mais ce que tu cherches, si j'ai bien compris se fait à la ligne de code avec les étoiles. comme j'ai pas testé, le principe : redéfinir la zone d'impression, en fonction de derlin + hauteur du pied de page

Je ne trouve pas l'instruction Celling : c'est une instruction d'une version supérieure à 2003, ou une function ?

A+

Salut Gorfael

merci pour ta reponse mais malheureusement cela ne fontionne pas. j ai essaye beaucoup de choses mais rien a faire... il me manque juste ca pour que le logiciel soit operationnel pour mon collaborateur qui je le repete est aveugle.

Je veux bien envoye le classeur si quelqu un aurait le temps de regarder ce qui cloche cela serait vraiment sympa car cela nest vraiment pas facile a expliquer.

concernant l instruction Celling je ne peux pas te repondre car c est quelqu un qui m a aide pour le code, desolee

lindette

Salut le forum

Gorfael et Lindette, Ceiling c'est la fonction Plafond en formule.

Lindette regarde du côté de CurrentRegion ou CurrentArray

Mytå

lindette a écrit :

Salut Gorfael

merci pour ta reponse mais malheureusement cela ne fontionne pas. j ai essaye beaucoup de choses mais rien a faire... il me manque juste ca pour que le logiciel soit operationnel pour mon collaborateur qui je le repete est aveugle.

Je veux bien envoye le classeur si quelqu un aurait le temps de regarder ce qui cloche cela serait vraiment sympa car cela nest vraiment pas facile a expliquer.

concernant l instruction Celling je ne peux pas te repondre car c est quelqu un qui m a aide pour le code, desolee

lindette

Salut Lindette, myrta et le forum

Laisse tombé ma macro (je ne l'ai pas testée, donc on va supposer qu'elle est bourrée d'erreurs )

Dans ta macro, en final :

tu mets ton pied de page (9 lignes dont la 4 correspond à derli ) => donc, il faut que tu définisses une zone d'impression de A1 à F(derli+8 lignes)

Sheets("DEVIS").PageSetup.PrintArea = "$A$1:$F$" & derli + 8

tu peux vérifier la justesse de l'instruction en passant en affichage "Aperçu des sauts de pages"

il faut mettre cette ligne juste avant la ligne de sauvegarde, pour que derli soit à la bonne valeur et que la zone d'impression soit enregistrée dans le fichier

A+

Bonjour Gorfael, bonjour à tous

merci Gorfael pour ta réponse mais cela ne fonctionne ceci j'ai trouvé !!!!

voici le code que j utilise directement sur la commande de mon bouton imprimer

'

Private Sub CommandButton1_Click()

With Range("A:E")

Worksheets("DEVIS").Activate

ActiveSheet.PageSetup.PrintArea = Range("A1:E" & .Find("TOTAL US", .Item(1), , , , xlPrevious).Row).Address

End With

ActiveWindow.SelectedSheets.PrintOut , Copies:=2, ActivePrinter:="hp color LaserJet 2550 PS", Collate:=True

End Sub

'

et cela fonctionne oufffff

merci encore pour tout

Lindette

Rechercher des sujets similaires à "imprimer feuille condition"