Private Sub impressionFeuille() ' impression
Dim myWorksheet As Worksheet
Dim iCounter As Long
Dim myCmPointsBase As Single ' pour définir les marges et les tailles de l'image, s'il y a une image
Dim LastRow As Long
Set myWorksheet = Application.ThisWorkbook.Worksheets("Feuille1")
'Set myWorksheet = ActiveSheet
LastRow = myWorksheet.Cells(myWorksheet.Rows.Count, "A").End(xlUp).Row 'si la dernière ligne n'est pas dans la colonne A, changez la lettre de la colonne
Debug.Print LastRow
myCmPointsBase = Application.CentimetersToPoints(0.5) ' Application.CentimeterToPoints méthode convertit 0,5 centimètre en points (calcul des marges)
Debug.Print myCmPointsBase
With myWorksheet
.ResetAllPageBreaks ' réinitialiser toutes les pages "breaks"
'--------------------------------------------------------------------------
' faites attention aux lignes suivantes, changez la ligne de rupture si nécessaire, faites attention à l'orientation de la feuille
'--------------------------------------------------------------------------
For iCounter = LastRow To 1 Step 50 ' ajoute un page "break" toutes les 50 lignes de la ligne 1 à la dernière ligne définie (lastrow)
.HPageBreaks.Add .Cells(iCounter, 1)
Next iCounter
'--------------------------------------------------------------------------
With .PageSetup
.PrintArea = "A1:k" & LastRow ' zone d 'impression (changez la lettre de la dernière colonne si nécessaire)
.PaperSize = xlPaperA4 ' taille de papier
'--------------------------------------------------------------------------
' choisissez une option
'--------------------------------------------------------------------------
.Orientation = xlPortrait ' orientation de la feuille
' .Orientation = xlLandscape ' orientation de la feuille
'--------------------------------------------------------------------------
.Zoom = False ' (1/3)... si faux -> pour que la feuille soit dimensionnée en fonction des propriétés FitToPagesTall et FitToPagesWide
.FitToPagesTall = False ' (2/3)... si faux -> permet de déterminer la mise à l'échelle par une seule propriété: FitToPagesWide
.FitToPagesWide = 1 ' (3/3)... Échelle de la feuille à 1 page de large
.PrintGridlines = False ' si vrai (imprime les bordures de cellule) // si faux (ne s'imprime pas)
.PrintHeadings = False ' si vrai (les titres des lignes et des colonnes sont imprimés) // si faux (ne s'imprime pas)
.PrintTitleRows = myWorksheet.Rows(12).Address ' (row 12)... spécifie qu'une ligne est répétée comme ligne d'en-tête en haut de chaque page imprimée
'--------------------------------------------------------------------------
' faites attention à la ligne suivante ... dépend de chaque PC et imprimante, pour des raisons de sécurité, faites un test, si cela fonctionne, ok, sinon, laissez-le désactivé
'--------------------------------------------------------------------------
' .PrintQuality = -3 ' changer la valeur
'--------------------------------------------------------------------------
.FooterMargin = myCmPointsBase * 2 ' marge de pied de page
.HeaderMargin = myCmPointsBase * 2 ' Marge d'en-tête
.AlignMarginsHeaderFooter = True ' si vrai (Aligne les en-têtes et les pieds de page avec les marges droite et gauche) // si faux (ne s'aligne pas)
.TopMargin = myCmPointsBase * 5 ' Marge supérieure
.RightMargin = myCmPointsBase * 3 ' Marge droite
.BottomMargin = myCmPointsBase * 5 ' marge inférieure
.LeftMargin = myCmPointsBase * 3 ' Marge de gauche
.CenterHorizontally = True ' centre de la feuille horizontalement
.CenterVertically = False ' centrer la feuille verticalement
.CenterFooter = "&Imon texte ici" ' définit le pied de page central pour afficher le texte "Imprimé par ordinateur". Utilisez le code de formatage & B pour activer / désactiver l'impression en gras
.RightFooter = "Page &P de &N" ' définit le pied de page droit pour afficher le numéro de page à partir du nombre total de pages ... utiliser les codes & P et & N. & P imprime le numéro de page. & N imprime le nombre total de pages
'--------------------------------------------------------------------------
'* ligne suivante, les procédures pour l'image sont désactivées, il suffit de mettre ici pour la démonstration - step(1/3)
'--------------------------------------------------------------------------
' .CenterHeader = "&G" ' Définir l'en-tête central (Autoriser l'image)
'--------------------------------------------------------------------------
.CenterHeader = "&D" & " - " & "&T" ' Définir l'en-tête de texte central
'--------------------------------------------------------------------------
'* lignes suivantes, les procédures pour l'image sont désactivées, il suffit de mettre ici pour la démonstration - step(2/3)
'--------------------------------------------------------------------------
With .CenterHeaderPicture
' .FileName = "C:\...\image.jpg"
' .ColorType = msoPictureAutomatic
' .LockAspectRatio = msoTrue
' .Height = myCmPointsBase * 2
End With
'--------------------------------------------------------------------------
.OddAndEvenPagesHeaderFooter = True ' si vrai (l'en-tête et les pieds de page diffèrent entre les pages paires et impaires) // si faux (ne diffèrent pas)
With .EvenPage
.CenterFooter.Text = "&Bmon texte ici" ' définir le centre des pages paires
.RightFooter.Text = "mon texte ici &P de &N" ' définir le "pied de page" pour les pages paires
With .CenterHeader
' .Text = "&G"
.Text = "mon texte ici"
'--------------------------------------------------------------------------
'* lignes suivantes, les procédures pour l'image sont désactivées, il suffit de mettre ici pour la démonstration - step(3/3)
'--------------------------------------------------------------------------
With .Picture
' .FileName = "C:\...\image.jpg"
' .ColorType = msoPictureAutomatic
' .LockAspectRatio = msoTrue
' .Height = myCmPointsBase * 2
End With
'--------------------------------------------------------------------------
End With
.RightHeader.Text = "mon texte ici" ' texte qui n'apparaîtra que sur les pages paires
End With
End With
' Unload Me ' dans le cas des formulaires utilisateur, pour afficher l'aperçu avant impression
' .PrintPreview ' aperçu avant impression
.PrintOut ' imprimer
End With
If Not myWorksheet Is Nothing Then Set myWorksheet = Nothing
'-------------------------------------------------------------------------------------------------------
' INDICE
'-------------------------------------------------------------------------------------------------------
'Propriétés (LeftHeader, CenterHeader, RightHeader, LeftFooter, CenterFooter, and RightFooter)
'-------------------------------------------------------------------------------------------------------
'VBA code / La Description
'_______________/____________________________________________________________________________________
'&D Imprime la date actuelle.
'&T Imprime l 'heure actuelle.
'&F Imprime le nom du document.
'&A Imprime le nom de l'onglet du classeur.
'&P Imprime le numéro de page.
'&P+number Imprime le numéro de page plus le numéro spécifié.
'&P-number Imprime le numéro de page moins le numéro spécifié.
'&& Imprime une seule "ampersand".
'&N Imprime le nombre total de pages dans le document.
'&Z Imprime le chemin du fichier.
'&G Insère une image.
'Format code / La Description
'_______________/____________________________________________________________________________________
'&L Gauche aligne les caractères qui suivent.
'&C Centre les caractères qui suivent.
'&R Aligne à droite les caractères qui suivent.
'&E Active ou désactive l'impression à double soulignement.
'&X Active ou désactive l'impression en exposant.
'&Y Active ou désactive l'impression d'indices.
'&B Active ou désactive l'impression en gras.
'&I Active ou désactive l'impression en italique.
'&U Active ou désactive l'impression de soulignement.
'&S Active ou désactive l'impression barrée.
'&"fontname" Imprime les caractères qui suivent dans la police spécifiée. Assurez-vous d'inclure les guillemets doubles.
'&nn Imprime les caractères qui suivent dans la taille de police spécifiée. Utilisez un nombre à deux chiffres pour spécifier une taille en points.
'&color Imprime les caractères dans la couleur spécifiée. L'utilisateur fournit une valeur de couleur hexadécimale.
'&"+" Imprime les caractères qui suivent dans la police Heading du thème actuel. Veillez à inclure les guillemets doubles.
'&"-" Imprime les caractères qui suivent dans la police Corps du thème actuel. Assurez-vous d'inclure les guillemets doubles.
'&K xx. S nnn Imprime les caractères qui suivent dans la couleur spécifiée à partir du thème actuel,
' (xx) est un nombre à deux chiffres de 1 à 12 qui spécifie la couleur du thème à utiliser,
' (S) nnn spécifie la nuance (teinte) de cette couleur de thème. Spécifiez S comme + pour produire une teinte plus claire; spécifiez S comme - pour produire une teinte plus foncée,
' (nnn) est un nombre entier à trois chiffres qui spécifie un pourcentage compris entre 0 et 100.
' Si les valeurs qui spécifient la couleur ou la nuance du thème ne sont pas dans les limites décrites, Excel utilisera la valeur valide la plus proche.
'-------------------------------------------------------------------------------------------------------
' INDICE
'-------------------------------------------------------------------------------------------------------
End Sub