Problème fermeture de fichier excel en VB

Fermé
soyanlo Messages postés 14 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 18 janvier 2012 - 6 janv. 2012 à 15:29
-Shadow- Messages postés 2149 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 17 juin 2023 - 6 janv. 2012 à 18:51
Bonjour,

Je fait un programme qui copie/modifie/crée des fichers. Tous fonctionne parfaitement mais je doit tout le temps faire des Ctrl+Alt+Suppr puis gestionnaire de tache et killer le processus excel.

Voici le message d'erreur :

Le processus ne peut pas accéder au fichier 'D:\Partage\....xls', car il est en cours d'utilisation par un autre processus.


Et voici un bout de la fonction qui écrit/modifie le fichier :


Public Sub écrire()

Dim sheet As Object
Dim exldoc As Object
Dim exlapp As Object
Dim datedujour As String
datedujour = Format(Now, "dd-MM-yyyy")
exlapp = CreateObject("excel.application")
If Creer.txtmode.Text = 1 Then
exldoc = exlapp.workbooks.Open(INI_GetCle(Application.StartupPath & "\Declaration.ini", "fichier", "source") & "_" & datedujour & ".xls")
End If
If Creer.txtmode.Text = 2 Then
exldoc = exlapp.workbooks.Open(INI_GetCle(Application.StartupPath & "\Declaration.ini", "fichier", "Dossier") & Modifier.ListBox1.SelectedItem)
End If

sheet = exlapp.ActiveWorkbook.ActiveSheet


\\traitements


exldoc.close()
exlapp.quit()
exlapp = Nothing
exldoc = Nothing

End Sub



Je pensais régler le problème avec exldoc.close() mais ce n'est pas la cas


Voici la partie qui appelle la procédure :


If Dir(INI_GetCle(Application.StartupPath & "\Declaration.ini", "fichier", "source") & ".xls", vbHidden) <> "" Then
FileCopy(INI_GetCle(Application.StartupPath & "\Declaration.ini", "fichier", "source") & ".xls", INI_GetCle(Application.StartupPath & "\Declaration.ini", "fichier", "Dossier") & Modifier.ListBox1.SelectedItem)
écrire()
MsgBox("Déclaration enregistrée")
End If





Merci de votre aide

A voir également:

3 réponses

-Shadow- Messages postés 2149 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 17 juin 2023 269
6 janv. 2012 à 15:31
Salut,

théoriquement tu devrais essayer la procédure End pour arrêter le script.
Sinon en VBS c'est WScript.Quit() , à toi de voir :D
0
soyanlo Messages postés 14 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 18 janvier 2012
6 janv. 2012 à 15:51
Salut,

Le problème est que je veux que l"utilisateur puisse continuer d'utiliser le programme, End ferme tout.

Par exemple il créée le rapport mais décide de ne pas l'envoyer, il l'enregistre (donc création du fichier, modification du fichier) et décide de l'envoyer (retourne sur le fichier et envoi du fichier).

Si je met End ça deviens très énervant xD

Le problème a lieu lorsque la personne décide de retourner sur le fichier pour l'envoyer (vu que le processus est toujours la)


Merci
0
-Shadow- Messages postés 2149 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 17 juin 2023 269
6 janv. 2012 à 18:51
Oups, j'ai mal lu. Essaye alors :
xlsdoc.Dispose()

ça devrait théoriquement marcher.
0