jex0519
Messages postés10Date d'inscriptionjeudi 27 septembre 2007StatutMembreDernière intervention 9 décembre 2008
-
26 nov. 2008 à 18:41
jex0519
Messages postés10Date d'inscriptionjeudi 27 septembre 2007StatutMembreDernière intervention 9 décembre 2008
-
1 déc. 2008 à 17:25
Bonjour à tous!
Voilà je vous présente mon problème:
Je suis débutant en VB et je développe un logiciel de réservation...
J'aimerai pouvoir faire appel à Excel via VB pour pouvoir créer de jolie facture...
En gros j'aimerai via VB ouvrir un fichier Excel qui existera déjà et qui contiendra une jolie mise en page pour la facture... Et ensuite pouvoir completer ce fichier sans détruire la mise en page, les couleurs, etc... Et ensuite sauvegarder ce fichier sous un autre nom afin que le modèle de départ puisse servir encore et encore... Donc en gros a chaque fois j'ouvre le modèle je le complète et j'enregistre sous un autre nom afin de conserver toute les facture sous des fichiers différents...
Le problème est que je commence à me débrouiller en VB mais que je ne sais pas du tout comment piloter Excel afin de faire tout cela...
Const sSourcePathXls As String = "C:\modele.xls"
Const sDestPathXls As String = "C:\sauvegarde.xls"
' déclare et
crée l'instance excel
Dim oAppExcel As New Excel.Application
'
visible, pas de message, et attache le modèle
With oAppExcel
.Visible = True
.DisplayAlerts = False
.Workbooks.Open FileName:=sSourcePathXls, Editable:=False
End With
' sélection feuille
1, on va remplir la date (C6) et la ville (C7), par exemple
With oAppExcel
.Worksheets("Feuil1").Select
.Cells(6, 3) = CStr(Date)
.Range("C7").Value = "Paris"
End With
'
sélection feuille 2, on va colorer une ligne sur 2 (pourquoi
pas...)
oAppExcel.Worksheets("Feuil2").Select
Dim i As Integer
For i = 1 To 30
If (i And 1) = 0 Then
oAppExcel.Rows(i).Select
With oAppExcel.Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
Next i
' on sélectionne la première
cellule du premier classeur
oAppExcel.Worksheets("Feuil1").Select
oAppExcel.Range("A1").Select
' on enregistre une copie
du modèle modifié
oAppExcel.ActiveWorkbook.SaveAs sDestPathXls
' ferme excel et nettoie l'instance
oAppExcel.Application.Quit
Set oAppExcel = Nothing
End Sub
jex0519
Messages postés10Date d'inscriptionjeudi 27 septembre 2007StatutMembreDernière intervention 9 décembre 2008 1 déc. 2008 à 17:25
Merci beaucoup!
Grace a tout ça j'ai bien avancé...
mais j'ai encore un petit problème... le process EXCEL.EXE reste en mémoire après la création d'une facture, alors à la création de la facture suivante ça plante...
Voici mon code si ça peut aider:
il est composer d'un sub facture qui va créer le fichier excel et le compléter des info de la database et d'un autre sub création qui est enfait une macro enregistrée sur excel qui fait juste une mise en page de la facture...
Sub facturer()
On Error GoTo 10
MkDir "C:\facturier"
10:
'facturation avec création de la facture en fichier excel
Set facture = New excel.Application 'ouvre excel
facture.Visible = False
facture.Workbooks.Add 'ouvre un nouveau classeur
creation
'envoi des info client dans la facture
adors4.Open "select * from client where [num] = " & DataCombo1.BoundText, db, adOpenDynamic, adLockPessimistic
nom = adors4.Fields("nom")
prénom = adors4.Fields("prénom")
adresse = adors4.Fields("adresse")
code = adors4.Fields("code postal")
ville = adors4.Fields("ville")
adors4.Close
facture.Range("D7").Value = nom
facture.Range("E7").Value = prénom
facture.Range("D8").Value = adresse
facture.Range("D9").Value = code
facture.Range("E9").Value = ville
facture.Range("A16").Value = Now
adors4.Open "select * from Réservation where num=(select max(num) from réservation)", db, adOpenDynamic, adLockPessimistic
num = adors4.Fields("num")
dateDeb = adors4.Fields("dateDeb")
dateFin = adors4.Fields("dateFin")
numEmplacement = adors4.Fields("numEmplacement")
parking = adors4.Fields("parking")
elec = adors4.Fields("elec")
adors4.Close
facture.Range("B16").Value = num
facture.Range("A20").Value = dateDeb
facture.Range("B20").Value = dateFin
If parking = 1 Then
facture.Range("D20").Value = "20,00€"
Else
facture.Range("D20").Value = "0,00€"
End If
If elec = 1 Then
facture.Range("E20").Value = "50,00€"
Else
facture.Range("E20").Value = "0,00€"
End If