Macro excel pour faire un impression automatique

cs_trr_labs Messages postés 1 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 12 janvier 2005 - 12 janv. 2005 à 11:42
mrdep1978 Messages postés 402 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 7 juin 2009 - 12 janv. 2005 à 14:26
Salut a tous!
Est-ce que quelqu'un peut m'aider a faire un programme macro avec excel. Il parait un peu simple mais je ne connait rien sur la programmation. Je vais vous expliquer un peu le but de mon programme:
Y a un tableau comportant 3 colonnes
+-----------------------------------+
Pcs/Ctn | From # | To # |
+-----------------------------------+
4 1 4
3 5 8
5 9 15


RESULTAT
+----------------------+
Ctn # | Pcs/Ctn
+----------------------+
1 4
2 4
3 4
4 4
5 3
6 3
7 3
8 3
9 5
10 5
11 5
12 5
13 5
14 5
15 5
A ce sujet, lorsqu'on clique sur le bouton le resultat va imprimer sur le papier

Merci a tous

1 réponse

mrdep1978 Messages postés 402 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 7 juin 2009 7
12 janv. 2005 à 14:26
Option Explicit


Public Sub gsub_Test()
Dim l_Selection As Range
Dim l_Sheet As Worksheet
Dim ll_Valeur As Long
Dim li_LigneArrivee As Integer
Dim li_cptLigne As Integer
Dim li_ValLigne As Integer
Dim li_Border As XlBordersIndex


'Définit la zone de travail
Set l_Selection = Range(Cells(2, 1), Cells(Worksheets("Feuil1").UsedRange.Rows.Count, 3))


'Crée une feuille temporaire
Set l_Sheet = ThisWorkbook.Worksheets.Add
'Masque la feuille temporaire
l_Sheet.Visible = xlSheetVeryHidden
'Ecrit les entetes
l_Sheet.Cells(1, 1).Value = "Ctn #"
l_Sheet.Cells(1, 2).Value = "Pcs/Ctn"
With l_Sheet.Range("A1:B1")
'Met les entetes en gras
.Font.Bold = True
'Encadre les cellules
For li_Border = 7 To 11
.Borders(li_Border).LineStyle = xlContinuous
.Borders(li_Border).Weight = xlThin
.Borders(li_Border).ColorIndex = xlAutomatic
Next li_Border
End With


'Remplit la feuille temporaire
li_LigneArrivee = 2
'Parcourt chaque ligne de la zone
For li_cptLigne = l_Selection.Row To l_Selection.Rows.Count + l_Selection.Row - 1
'Definit la valeur (=nb de pieces) à appliquer
ll_Valeur = l_Selection.Worksheet.Cells(li_cptLigne, 1)
'Parcourt le compteur de la colonne FROM à la colonne TO
For li_ValLigne = l_Selection.Worksheet.Cells(li_cptLigne, 2) To l_Selection.Worksheet.Cells(li_cptLigne, 3)
'Pour chaque élément, écrit la valeur du compteur et le nb de pieces associés
l_Sheet.Cells(li_LigneArrivee, 1) = li_ValLigne
l_Sheet.Cells(li_LigneArrivee, 2) = ll_Valeur
li_LigneArrivee = li_LigneArrivee + 1
Next li_ValLigne
Next li_cptLigne



With l_Sheet.PageSetup
'Répète la ligne de 1 (celles des entetes) sur chaque page à l'impression
.PrintTitleRows = "$1:$1"
'Définit la zone d'impression
.PrintArea = "A1:B" & (li_LigneArrivee - 1)
'Met en portrait
.Orientation = xlPortrait
End With
'Lance l'impression de la feuille sur l'imprimante par défaut
l_Sheet.PrintOut
'Empêche la demande confirmation de suppression de la feuille
Application.DisplayAlerts = False
'Supprime la feuille temporaire
l_Sheet.Delete
'Réautorise les demandes de confirmation
Application.DisplayAlerts = True
'Détruit l'objet l_Sheet
Set l_Sheet = Nothing


End Sub
0
Rejoignez-nous