VB et EXCEL

Signaler
Messages postés
2
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
19 août 2009
-
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
-
Salut,
j'ai un problème avec excel,
je veux dans le même programme imprimer une facture (fichier .xls) et un bon de livraison
(fichier .xls).
pour cela j'ai besoin de deux commades (Facture et Bon de livraison) dont les code ci après

Private Sub facture_Click()
Dim x1 As EXCEL.Application
Set x1 = CreateObject("Excel.application")
x1.Workbooks.Open App.Path & "\facture.xls"


Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\stock.mdb;"


Set rs = New ADODB.Recordset
rs.Open "select * from sortiec ", cn, 1, 2


j = 16
rs.MoveFirst
Do While Not rs.EOF


If j > 38 Then
x1.Range("a" & j & "").EntireRow.Insert
End If
Sheets("Feuil1").Range("a" & j & "").Select
ActiveCell.FormulaR1C1 = rs!code
Sheets("Feuil1").Range("b" & j & "").Select
ActiveCell.FormulaR1C1 = rs!designation
Sheets("Feuil1").Range("e" & j & "").Select
ActiveCell.FormulaR1C1 = rs!unite
Sheets("Feuil1").Range("f" & j & "").Select
ActiveCell.FormulaR1C1 = rs!quantite
Sheets("Feuil1").Range("g" & j & "").Select
ActiveCell.FormulaR1C1 = rs!prix_vente
Sheets("Feuil1").Range("h" & j & "").Select
ActiveCell.FormulaR1C1 = rs!tva
Sheets("Feuil1").Range("i" & j & "").Select
ActiveCell.FormulaR1C1 = rs!remise
Sheets("Feuil1").Range("j" & j & "").Select
ActiveCell.FormulaR1C1 = rs!totalht


rs.MoveNext
j = j + 1
Loop
rs.MoveFirst


Sheets("Feuil1").Range("c13") = rs!num
Sheets("Feuil1").Range("i13") = rs!Date


If j > 39 Then
Sheets("Feuil1").Range("c" & j + 8 & "") = rs!Date
Else
Sheets("Feuil1").Range("c47") = rs!Date
End If




Set rs3 = New ADODB.Recordset
Set rs4 = New ADODB.Recordset
Set rs5 = New ADODB.Recordset
Set rs6 = New ADODB.Recordset
rs3.Open "select * from sumht ", cn, 1, 2
rs4.Open "select * from sumremise ", cn, 1, 2
rs5.Open "select * from sumtva ", cn, 1, 2
rs6.Open "select * from sumfodec ", cn, 1, 2


If j > 39 Then
Sheets("Feuil1").Range("j" & j + 2 & "") = rs3!somme
Sheets("Feuil1").Range("j" & j + 3 & "") = rs4!somme
Sheets("Feuil1").Range("j" & j + 4 & "") = rs3!somme - rs4!somme
'Range("j" & j + 5 & "") = rs6!somme
'Range("j" & j + 6 & "") = rs5!somme
Else
Sheets("Feuil1").Range("j41") = rs3!somme
Sheets("Feuil1").Range("j42") = rs4!somme
Sheets("Feuil1").Range("j43") = rs3!somme - rs4!somme
'Range("j44") = rs6!somme
'Range("j45") = rs5!somme
End If
Set rs1 = New ADODB.Recordset
rs1.Open "select * from client where Client like '" & DataCombo1.Text & "'", cn, 1, 2
Sheets("Feuil1").Range("f4") = rs1!client
Sheets("Feuil1").Range("f5") = rs1!adresse
Sheets("Feuil1").Range("h6") = rs1!fax
'-----------------------------------------------------
'IMPRESSION
x1.Visible = True
msg = MsgBox("Voulez-vous imprimer le Bon de Livraison?", vbYesNo + vbQuestion)
If msg = vbYes Then
ActiveWindow.SelectedSheets.PrintOut Copies:=1, collate:=True
x1.ActiveWindow.Close False
x1.Quit
Else
MsgBox "Impression annulée"
x1.ActiveWindow.Close False
x1.Quit
End If
Set x1 = Nothing
End Sub

et le même code pour le bon de livraison sauf que le fichier à ourvrir est nommé "blivraison.xls"
lorsque j'imprime que ce soit la facture ou le BL cà marche, mais si je veux imprimer une autre fois cà marche pas.

1 réponse

Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
5
Salut,

Fais attention à la catégorie dans laquelle tu postes, il y a une section spécifique pour la programmation vba..
Et sinon ferme tes recordset après l'impression.