IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Ferméture d'un classeur


Sujet :

Access

  1. #1
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 155
    Points : 111
    Points
    111
    Par défaut Ferméture d'un classeur
    Salut à tous,

    j ai un problème qui perdure déjà depuis un moment.

    en fait je fais une importation d'une feuille excel sous access pour divers traitements (gestion des données). jusque là, tout va bien. mais lorsque l'exécution de mon application est terminée, il y a toujours le message suivant qui s'affiche "Fichier désormais disponible. Le fichier kujhgfsig.xls est à present disponible pour modification. Ouvrer le fichier en lecture-ecriture"; et ce malgré touts les systèmes de sauvegarde et de libération de la mémoire que j'ai faite.

    je ne sais pas si l'un de vous a déjà rencontré ce type de problème?

    Merci

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonsoir,

    J'ai déjà vu quelque chose de similaire.
    Dans le gestionnaire de tâches, est-ce qu'il n'y a pas plusieurs EXCEL.EXE ?
    Quelques fois des objets Excel.Application créés en VBA restent en mémoire.

    A+

  3. #3
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 155
    Points : 111
    Points
    111
    Par défaut
    Salut,

    je te remercie pour ta réponse, mais j'ai pas trouvé les points excel.exe. jne sais vraiment pas comment gerer ce problème.

    si quelqu'un a une autre idée?

    Merci d'avance

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonjour,

    Peux-tu montrer la partie de ton code qui ouvre Excel et celle qui le ferme ?
    Ce genre de message apparait quand un classeur est ouvert par plusieurs instances d'Excel (ou par plusieurs personnes).
    Tu peux aussi essayer de l'ouvrir en lecture seule.

    A+

  5. #5
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 155
    Points : 111
    Points
    111
    Par défaut
    merci encore pour ton aide:

    ok! je t'apporte plus de descriptif. donc:

    1/ j'importe mon fichier excel sous access, voici le bout de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set Xlapp = CreateObject("Excel.Application")
    Set XlBook = Xlapp.Workbooks.Open(Chemin_E) 'chemin_E est le chemin du fichier
    Set XlSheet = XlBook.Worksheets(1)
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, Tab_Etat, Chemin_E, True
    2/ je le traite: j'extrait un certains nombre de données par les des requêtes

    3/le resultat de ma requête est ensuite exporter vers excel pour être exploité:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "ZINSTALNF", Chemin_Etat & Val_I & ".xls", False
    4/je ferme mon application:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Set DB_Etat = Nothing
    Xlapp.ActiveWorkbook.Save
    Xlapp.ActiveWorkbook.Close True
     
    'Désallocation de la mémoire
    Xlapp.Quit
    Set XlSheet = Nothing
    Set XlBook = Nothing
    Set Xlapp = Nothing
    End Sub
    donc voilà en gros la procédure que je suis

  6. #6
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonsoir,

    J'ai testé ton code, et sur mon PC (XP+Office2000) l'objet Excel.Application reste en mémoire.
    Si je l'exécute sans les DoCmd.TransferSpreadSheet, pas de problème.

    A priori, je pense que tu n'as pas besoin de créer les objets Excel.Application, Excel.WorkBook et Excel.WorkSheet.
    Les DoCmd.TransferSpreadSheet doivent suffire.
    A moins que tu ne les utilises dans une autre partie du code.

    Pour résumer :
    - Si tu ne les utilises pas ailleur, n'utilise pas les objets Excel.
    - Si tu les utilises ailleurs.
    Essaie de faire le DoCmd.TransferSpreadSheet qui importe avant de créer Xlapp. Comme ça pas d'interférence.
    Pour le DoCmd.TransferSpreadSheet qui exporte, je le ferai après la fermeture de Xlapp et la libération des objets.

    Je n'ai pas d'explications, mais je crois qu'il y a plus ou moins un bug dans la fermeture d'objets comme Excel.Application et Word.Application.

    J'espère que tu pourra t'en sortir.
    A+

  7. #7
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 155
    Points : 111
    Points
    111
    Par défaut
    Salut,

    Merci encore pour ton aide!

    j'ai trouvé un moyen d'avoir accès aux données excels sans ouvrir le fichier, et pour l'instant ça a l'air de marcher. voici la syntaxe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Fs                         As FileSystemObject
    Dim F                          As File
    Set Fs = CreateObject("Scripting.fileSystemObject")
    Set F = Fs.GetFile(Chemin_E)
    sinon je vais également essayer ta méthode.
    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ouverture classeur excel en VBSCRIPT
    Par coeur74 dans le forum ASP
    Réponses: 2
    Dernier message: 20/01/2005, 09h11
  2. [VBA]Detection de l'annulation de la fermeture d'un classeur
    Par LitteulKevin dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 18/01/2005, 15h36
  3. [VBA-Excel,VB6,Fichier texte]enregistrer un classeur excel..
    Par Tarul dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/01/2005, 13h09
  4. [Excel] Commentavoir si un classeur est déjà ouvert ?
    Par Henkyl dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 14/05/2004, 11h27
  5. Classeur/tableur d'Openoffice et les virgules
    Par Michaël dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 30/04/2004, 14h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo