Problème fermeture de fichier excel en VB

soyanlo Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
-Shadow- Messages postés 2152 Date d'inscription   Statut Membre Dernière intervention   -
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 2152 Date d'inscription   Statut Membre Dernière intervention   270
 
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   Statut Membre Dernière intervention  
 
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 2152 Date d'inscription   Statut Membre Dernière intervention   270
 
Oups, j'ai mal lu. Essaye alors :
xlsdoc.Dispose()

ça devrait théoriquement marcher.
0