Thomeux
Messages postés58Date d'inscriptionmercredi 15 mars 2006StatutMembreDernière intervention14 janvier 2010
-
10 nov. 2006 à 11:25
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 2008
-
13 nov. 2006 à 16:35
Bonjour,
J'ai une appli sous visual basic express 2005 qui utilise excel.
Lorsque je ferme excel, le processus excel demeure toujours dans le gestionnaire de tache de windows. Comment fermer définitivement excel en sortant de ma fonction.
Merci d'avance
Voici mon code
Function search_values(ByVal tol As String, ByVal dia As Double, ByVal fichier As String) As ma_variable
Dim tol_cherche As String
Dim dia_cherche As Double
Dim i, j As Integer
Dim ClasseurXLS As Microsoft.Office.Interop.Excel.Application
tol_cherche = 0
dia_cherche = 0
i = 2
j = 1
ClasseurXLS = New Microsoft.Office.Interop.Excel.Application
ClasseurXLS.Workbooks.Open(Application.StartupPath & "\Tolerances.xls")
ClasseurXLS.Workbooks(1).Worksheets(fichier).Activate()
Do While Not tol_cherche = tol
i = i + 1
tol_cherche = ClasseurXLS.Cells(i, 1).Value
Loop
Do While Not dia_cherche > dia
j = j + 1
dia_cherche = ClasseurXLS.Cells(2, j).Value
Loop
search_values.sup = ClasseurXLS.Cells(i, j).value
search_values.inf = ClasseurXLS.Cells(i + 1, j).value
ClasseurXLS.Application.Quit()
End Function
Thomeux
Messages postés58Date d'inscriptionmercredi 15 mars 2006StatutMembreDernière intervention14 janvier 2010 10 nov. 2006 à 11:32
j'ai essayé classeurxls=nothing, mais ca ne ferme l'appli qu'en sortant du programme et pas de la fonction or si j'appelle plusieur fois la fonction, il m'ouvre plusieur processus excel.
Vous n’avez pas trouvé la réponse que vous recherchez ?
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 10 nov. 2006 à 11:36
Function search_values(ByVal tol As String, ByVal dia As Double, ByVal fichier As String) As ma_variable
Dim tol_cherche As String
Dim dia_cherche As Double
Dim i, j As Integer
Dim ClasseurXLS As Microsoft.Office.Interop.Excel.Application
tol_cherche = 0
dia_cherche = 0
i = 2
j = 1
ClasseurXLS = New Microsoft.Office.Interop.Excel.Application
ClasseurXLS.Workbooks.Open(Application.StartupPath & "\Tolerances.xls")
ClasseurXLS.Workbooks(1).Worksheets(fichier).Activate()
Do While Not tol_cherche = tol
i = i + 1
tol_cherche = ClasseurXLS.Cells(i, 1).Value
Loop
Do While Not dia_cherche > dia
j = j + 1
dia_cherche = ClasseurXLS.Cells(2, j).Value
Loop
search_values.sup = ClasseurXLS.Cells(i, j).value
search_values.inf = ClasseurXLS.Cells(i + 1, j).value
ClasseurXLS.Quit()
ClasseurXLS =Nothing
End Function
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 10 nov. 2006 à 11:50
Function search_values(ByVal tol As String, ByVal dia As Double, ByVal fichier As String) As ma_variable
Dim tol_cherche As String
Dim dia_cherche As Double
Dim i, j As Integer
Dim ClasseurXLS As Microsoft.Office.Interop.Excel.Application
tol_cherche = 0
dia_cherche = 0
i = 2
j = 1
ClasseurXLS = New Microsoft.Office.Interop.Excel.Application
ClasseurXLS.Workbooks.Open(Application.StartupPath & "\Tolerances.xls")
ClasseurXLS.Workbooks(1).Worksheets(fichier).Activate()
Do While Not tol_cherche = tol
i = i + 1
tol_cherche = ClasseurXLS.Cells(i, 1).Value
Loop
Do While Not dia_cherche > dia
j = j + 1
dia_cherche = ClasseurXLS.Cells(2, j).Value
Loop
search_values.sup = ClasseurXLS.Cells(i, j).value
search_values.inf = ClasseurXLS.Cells(i + 1, j).value
ClasseurXLS.ActiveWorkbook.close(True)
ClasseurXLS.Quit()
ClasseurXLS =Nothing
End Function
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 10 nov. 2006 à 13:25
Si tu mets ce code à la fin de ta fonction cela supprimant ton tes processus excel, le seul inconvénient c'est que si tu as une application excel qui tourne en meme temps que ton prog elle sera fermé également! Mais au moins cette méthode fonctionne c'est sur!
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 10 nov. 2006 à 23:39
Salut,
voleur d'avatar !! lol
T'aurais pu prendre Karadoc, ça aurait été trop bon.
Sinon, en dernière ligne de ta function, met ceci :
CloseApplicationByCaption("le caption de ton document excel")
puis colle cette procédure dans le même module que ta function :
Public Sub CloseApplicationByCaption(ByVal caption As String)
For Each p As Process In Process.GetProcesses()
If (p.MainWindowTitle.Equals(caption)) Then
p.Close()
End If
Next
End Sub
Thomeux
Messages postés58Date d'inscriptionmercredi 15 mars 2006StatutMembreDernière intervention14 janvier 2010 13 nov. 2006 à 10:08
Il doit y avoir un probleme quelque part car tout ce que vous m'avez dit ne fonctionne pas.
après je me trompe peut etre dans l'appel. Le nom du process dans mon cas c'est Excel ou ClasseurXls??
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 13 nov. 2006 à 10:14
T'es bien en VB au moins? lol! Non je plaisante! La méthode que je t'ai donné précédement fonctionne bien! Je l'ai testé!
Dans le gestionnaire des taches excel > EXCEL; alors essaie avec les majuscules!
Dimp()
AsProcess
Dimr
AsProcess
p = Process.GetProcessesByName(
"EXCEL")
'on fournit le nom du process en parametre
For
Eachr
Inp
'puis on les kill tous r.CloseMainWindow()
Thomeux
Messages postés58Date d'inscriptionmercredi 15 mars 2006StatutMembreDernière intervention14 janvier 2010 13 nov. 2006 à 16:25
Ca y est enfin ca marche.
Merci pour votre aide
sinon je me disais que pour eviter d'ouvrir plusieur excel différents, il faudrait pouvoir tester si un processus excel est dejà en cours avant d'en créer un autre!!
Vous savez comment faire ca??