Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Macro d'impression

alexpoupp

XLDnaute Junior
Bonjour à tous,

Je développe aujourd'hui un fichier excel pour mon entreprise qui permet d'imprimer un bon de livraison ainsi que des fiches palettes une fois un formulaire rempli. Cependant lorsque l'on clique sur le bouton impression (feuill1 case "Option d'impression BL") j'aimerai que cela imprime le nombres de feuille en fonction du nombre de palettes données (feuille: fiche palette ligne h42), j'ai déjà crée la macro d'impression mais je n'arrive pas à ajouter le fonction demandé. En plus de cela lorsque cela imprime les fiches, en bas de la feuille on voit écrit (palette 1/16 etc), j'aimerai que lorsque la feuille 2 s'imprime il soit écrit sur la feuille (2/16) et ainsi suite...

EDIT: Pour ce qu'il s'agit du nombre de feuille à imprimer j'ai trouvé!!

J'espère avoir était claire, merci à tout ceux qui prennent le temps de répondre, réfléchir et lire ma problématique.

Bonne journée à tous!!

Alex
 

Pièces jointes

  • Logiciel HP Brochage.xlsm
    453.9 KB · Affichages: 6
  • Logiciel HP Brochage.xlsm
    453.9 KB · Affichages: 6
Dernière édition:

Lolote83

XLDnaute Barbatruc
Salut ALEXPOUPP,
VB:
Sub Imprime()
    With Sheets("Fiche palette ")
        xNbFiche = .[H42]
        For F = 1 To xNbFiche
            .[G42] = F & "/"
            .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
        Next F
    End With
End Sub
Ce code imprime la fiche palette en fonction du nombre d'exemplaire donné en H42.
Par contre, pour le bon déroulement du code, il faudrait que la cellule G42 ne soit pas protégé, car la macro inscrit 1, puis 2, puis 3 ....
@+ Lolote83
 

alexpoupp

XLDnaute Junior
Bonjour Lolote83,

Merci de ta réponse, cependant je suis débutant sur excel et je ne sais pas ou insérer exactement cette ligne de code.
Pouvez-vous m'indiquer exactement ou la mettre, ou le faire directement dans mon fichier.

Merci d'avance.

PS: j'ai joint le fichier excel sans la protection

Alex
 

Pièces jointes

  • Logiciel HP Brochage.xlsm
    453.9 KB · Affichages: 6

Lolote83

XLDnaute Barbatruc
Re salut,
Tu copie ce code dans un module (comme pour les autres modules que tu as)
Tu affectes ensuite cette macro à ton bouton imprimante
RAPPEL !!!! Il faut que la cellule G42 ne soit pas protégée sinon cela ne fonctionnera pas ....
@+ Lolote83
 

alexpoupp

XLDnaute Junior
(Re)Bonjour,

Voici le code que j'avais déjà :
VB:
Sub impFP()
'
' impFP Macro
'

'
    Sheets("Fiche palette ").Select
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    Application.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = "$A$1:$H$49"
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.25)
        .RightMargin = Application.InchesToPoints(0.25)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .HeaderMargin = Application.InchesToPoints(0.3)
        .FooterMargin = Application.InchesToPoints(0.3)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = True
        .CenterVertically = True
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 100
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
    Application.PrintCommunication = True
    ActiveWindow.SelectedSheets.PrintOut Copies:=Range("H42").Value, Collate:=True, _
        IgnorePrintAreas:=False
    Sheets("Fiche palette solde").Select
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    Application.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = "$A$1:$H$49"
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.25)
        .RightMargin = Application.InchesToPoints(0.25)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .HeaderMargin = Application.InchesToPoints(0.3)
        .FooterMargin = Application.InchesToPoints(0.3)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = True
        .CenterVertically = True
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 100
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
    Application.PrintCommunication = True
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
End Sub

A quel niveau j'insère les lignes de code?
Je m'excuse de mon manque de compréhension

Merci

Alex
 

Lolote83

XLDnaute Barbatruc
Re bonjour,
Derniere chose, j'aimerai remettre ensuite le numéro de page à 1.
Inutile car lors de la prochaine impression, celle-ci recommencera normalement à 1, mais si tu y tiens.

VB:
Sub Imprime()
    With Sheets("Fiche palette ")
        xNbFiche = .[H42]
        For F = 1 To xNbFiche
            .[G42] = F & "/"
            .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
        Next F
    End With
    .[G42]=1 & "/"
End Sub
@+ Lolote83
 

alexpoupp

XLDnaute Junior
Bonjour à tous,

Encore un dernier problème, je souhaite lorsque sur la page "fiche palette solde" s'il y écrit en A50 "1" que cela imprime cette feuille, et s'il y écrit "aucune" que cela imprime rien quand je lance la macro.

Merci d'avance

Alex

VB:
Sub Imprime()
    With Sheets("Fiche palette ")
        xNbFiche = .[A50]
        For F = 1 To xNbFiche
            .[G42] = F & "/"
            .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
        Next F
    End With
    With Sheets("Fiche palette solde ")
        xNbFiche = .[A50]
        For F = 1 To xNbFiche
            .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
        Next F
    End With
End Sub
 

Lolote83

XLDnaute Barbatruc
Re salut,
Peut être comme ça
VB:
Sub Imprime()
    With Sheets("Fiche palette ")
        xNbFiche = .[A50]
        For F = 1 To xNbFiche
            .[G42] = F & "/"
            .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
        Next F
    End With
    With Sheets("Fiche palette solde ")
        xNbFiche = .[A50]
        if xNbFiche="Aucune" then Exit Sub
        For F = 1 To xNbFiche
            .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
        Next F
    End With
End Sub
@+ Lolote83
 

alexpoupp

XLDnaute Junior
Re Bonjour,



Cela m'affiche une erreur
 
Dernière édition:

Lolote83

XLDnaute Barbatruc
Re salut,
Peut être comme ça, il faut faire attention à la façon dont sont nommés les onglets
VB:
Sub Imprime()
    With Sheets("Fiche palette ")
        xNbFiche = .[A50]
        For F = 1 To xNbFiche
            .[G42] = F & "/"
            .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
        Next F
    End With
    With Sheets("Fiche palette solde")
        xNbFiche = .[A50]
        If UCase(xNbFiche) = "AUCUNE" Then Exit Sub
        For F = 1 To xNbFiche
            .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
        Next F
    End With
End Sub
Pour info, l'onglet Fiche palette à un espace à la fin, l'onglet Fiche palette solde non d’où peut être l'erreur dans le précédent code
Par contre, rien n'indique en A50 une valeur numérique et/ou "aucune" ?????
@+ Lolote83
 

Lolote83

XLDnaute Barbatruc
Re bonjour,
Pourquoi changer le code quand il est inscrit : If UCase(xNbFiche) = "AUCUNE" Then Exit Sub
et tu le transcris comme çà If UCase(xNbFiche) = "Aucune" Then Exit Sub (voir copie écran ci-dessus la tienne alors que j'avais bien inscrit au post#13)
@+ Lolote83
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…