Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' Dim appExcel As New Excel.Application ' Dim i As Integer, j As Integer ' Dim Resultat As String = "C:\Users\Alexandre\Desktop\Micro vb\resultats.xls" Dim donneesExcel As String = "C:\Users\Alexandre\Desktop\Micro vb\donnees.xls" Dim mortaliteExcel As String = "C:\Users\Alexandre\Desktop\Micro vb\Tauxmortalité.xls" ' Dim donneesWB As Excel.Workbook = appExcel.Workbooks.Open(donneesExcel) Dim mortaliteWB As Excel.Workbook = appExcel.Workbooks.Open(mortaliteExcel) ' Dim d As Integer = CInt(TextBox3.Text) ' For i = 1 To d ' Dim Premierelignevide As Integer = donneesWB.Worksheets("Feuil1").Columns(1).find("").row ' For j = 2 To Premierelignevide - 1 ' Dim age As Integer = donneesWB.ActiveSheet.Cells(j, 3).Value Dim sexe As String = CStr(donneesWB.ActiveSheet.Cells(j, 2).Value) Dim agereel As Double = donneesWB.ActiveSheet.Cells(j, 2).Value If sexe = "F" Then Randomize() If Rnd() < mortaliteWB.ActiveSheet.Cells(age + 3, 5).Value + 0.25 Then donneesWB.ActiveSheet.Cells(j, 2).Value = agereel + 1 donneesWB.ActiveSheet.Rows(j + 1).delete() Else donneesWB.ActiveSheet.Cells(j, 2).Value = agereel + 1 End If Else Randomize() If Rnd() < mortaliteWB.ActiveSheet.Cells(age + 3, 4).Value + 0.25 Then donneesWB.ActiveSheet.Cells(j, 2).Value = agereel + 1 donneesWB.ActiveSheet.Rows(j + 1).delete() Else donneesWB.ActiveSheet.Cells(j, 2).Value = agereel + 1 End If End If Next j ' Next i ' donneesWB.SaveAs(Resultat) donneesWB.Close() mortaliteWB.Close() ' appExcel.Quit() ' End Sub
Je fais tourner VB 2008 (avec visual studio) en travaillant sur des fichiers de sorties et d'entrées Excel.
Je kill le processus excel a chaqque fin de bouclage du programme.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionImports Microsoft.Office.Interop
'Création d'une instance d'application Dim ExcelApp As New Excel.Application 'Chemin des classeurs excel Dim xlsSource As String = "C:\Users\Alexandre\Desktop\Micro vb\resultats.xls" Dim xlsCible As String = "C:\Users\Alexandre\Desktop\Micro vb\resultats2.xls""" 'Ouverture du classeur dans l'application Dim MyWorkbook = ExcelApp.Workbooks.Open(xlsSource) 'Ici tu peux modifier ton classeur 'Comme tu utilise l'Interop, ton objet MyWorkbook bénéficie de l'intellisense 'et tu peux donc voir toutes les méthodes et propriétés de celui-ci 'Enregistre le classeur sous un autre fichier MyWorkbook.SaveAs(xlsCible) 'Ferme "proprement" le classeur MyWorkbook.Close() 'Ferme "proprement" le processus de l'application ExcelApp.Quit()
Imports Microsoft.Office.Interop Imports System.MissingMemberException Public Class Form1 'Cette fonction permet de killer le processus Excel car processus reste ouvert même avec .close()' Sub killprocessus(ByVal Nomprocessus As String) Dim p() As Process Dim r As Process p = Process.GetProcessesByName(Nomprocessus) For Each r In p r.CloseMainWindow() r.Kill() Next End Sub Public Function Premierelignevide(ByVal Colonne As Integer) As Integer 'Compte le nombre de fois que doit boucler le programme (sur le nombre de personne pour éviter les messages d'erreurs d'attribution de valeur nulle (notemment pour l'âge' Dim appExcel As New Excel.Application Dim i As Integer Dim projExcel As String = "C:\Users\Alexandre\Desktop\Micro vb\resultats" & i & ".xls" Dim Myworkbook = appExcel.Workbooks.Open(projExcel) Premierelignevide = appExcel.ActiveWorkbook.Worksheets("Feuil1").Columns(Colonne).find("").row End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim appExcel As New Excel.Application Dim donneesExcel As String Dim Monfichier, MonfichierExcel As Object Dim mortaliteExcel As Object Dim d As Integer Dim i, j As Integer Dim age As Integer Dim sexe As String Dim agereel As Double Monfichier = "C:\Users\Alexandre\Desktop\Micro vb\resultats.xls" donneesExcel = "C:\Users\Alexandre\Desktop\Micro vb\donnees.xls" mortaliteExcel = "C:\Users\Alexandre\Desktop\Micro vb\Tauxmortalité.xls" Dim myworkbook = appExcel.Workbooks.Open(donneesExcel) d = TextBox3.Text myworkbook.saveas("C:\Users\Alexandre\Desktop\Micro vb\resultats" & 0 & ".xls") myworkbook.close() MonfichierExcel = appExcel.Workbooks.Open("C:\Users\Alexandre\Desktop\Micro vb\resultats" & i & ".xls") mortaliteExcel = appExcel.Workbooks.Open("C:\Users\Alexandre\Desktop\Micro vb\Tauxmortalité") For i = 1 To d 'La propriété Cells(n°ligne,n°colonne) permet de sélectionner une seule cellule For j = 2 To Premierelignevide(1) - 1 sexe = MonfichierExcel.activesheet.Cells(j, 3).Value age = Int(MonfichierExcel.activesheet.Cells(j, 2).Value) agereel = MonfichierExcel.activesheet.Cells(j, 2).Value If sexe = "F" Then Randomize() If Rnd() < mortaliteExcel.Activesheet.Cells(age + 3, 5).Value + 0.25 Then MonfichierExcel.activesheet.Cells(j, 2).Value = agereel + 1 MonfichierExcel.activesheet.Rows(j + 1).delete() Else : MonfichierExcel.activesheet.Cells(j, 2).Value = agereel + 1 End If Else Randomize() If Rnd() < mortaliteExcel.Activesheet.Cells(age + 3, 4).Value + 0.25 Then MonfichierExcel.activesheet.Cells(j, 2).Value = agereel + 1 MonfichierExcel.activesheet.Rows(j + 1).delete() Else : MonfichierExcel.activesheet.Cells(j, 2).Value = agereel + 1 End If End If Next j MonfichierExcel.saveas("C:\Users\Alexandre\Desktop\Micro vb\resultats" & i & ".xls") Next i mortaliteExcel.close() MonfichierExcel.close() appExcel.Quit() End Sub