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 :

Terminer un processus en sauvant


Sujet :

Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 117
    Points : 44
    Points
    44
    Par défaut Terminer un processus en sauvant
    Bonjour,

    en fait voile j'aimerais trouver une fonction qui me ferme certains processus en enregistrant si possible.C'est pr le cas de EXCEL.EXE qui tourne souvent dans le vide malgré une fermeture correcte dans le VBA.
    Merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 117
    Points : 44
    Points
    44
    Par défaut
    Je précise que j'ai déjà une fonction qui termine les processus mais sans sauver et j'aimerais vraiment sauver le travail en cours.
    Merci

  3. #3
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    bjr,

    Citation Envoyé par tedparker
    C'est pr le cas de EXCEL.EXE qui tourne souvent dans le vide malgré une fermeture correcte dans le VBA.
    Désolé de te contredire mais la fermeture de excel n'est manifestement pas correcte.
    Terminer un processus n'est pas recommandé, et il n'est certainement pas possible de sauvegarder comme ça.
    Il faut revoir ton code VBA...

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 117
    Points : 44
    Points
    44
    Par défaut
    Voila mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    Dim XlApp As Excel.Application
    Dim XlWorkSource As Excel.Workbook
    Dim XlWorkSortie As Excel.Workbook
    Dim XlSheetSource As Excel.Worksheet
    Dim XlSheetSortie As Excel.Worksheet
     
    Set XlApp = New Excel.Application
    XlApp.Visible = False
    Set XlWorkSortie = XlApp.Workbooks.add
    XlWorkSortie.SaveAs fic_sortie
    XlWorkSortie.Close
    Set XlWorkSortie = Nothing
    'ici jvoulais juste créer le fichier 
     
    'plus tard je l'ouvre
    Set XlWorkSortie = XlApp.Workbooks.Open(fic_sortie)
    Set XlSheetSortie = XlWorkSortie.Worksheets(1)
    'et je le sauve en fin de traitement
    XlWorkSortie.Save
    XlWorkSortie.Close
    Set XlWorkSortie = Nothing
     
    'je recommence plusieurs fois cette ouverture (+traitement) et fermeture
     
    'ensuite j'appelle une fonction et je passe XlApp ByRef
     
    'j'ouvre mes fichiers à nouveau dans cette fonction
    Set XlWorkSortie = XlApp.Workbooks.Open(fic_sortie)
    Set XlSheetSortie = XlWorkSortie.Worksheets(num_sheet_sortie)
     
    Set XlWorkSource = XlApp.Workbooks.Open(fic_source)
    Set XlSheetSource = XlWorkSource.Worksheets(num_sheet_source)
     
    'je ferme ensuite et cela termine la procédure
    XlWorkSortie.Save
    XlWorkSortie.Close
     
    'jre reviens à ma procédure d'appel
     
    Set XlSheetSource = Nothing
    Set XlSheetSortie = Nothing
    'Xlapp.Quit ' si je mets cette ligne j'ai erreur du type Variable ou objet de bloc With non définie
    Set XlWorkSortie = Nothing
    Set XlWorkSource = Nothing
    Set XlApp = Nothing
    Dc voila si tu peux m'aider c super
    Merci

  5. #5
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    C'est le XlApp.Quit qu'il faut laisser.
    Il faut trouver la cause de l'erreur.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 117
    Points : 44
    Points
    44
    Par défaut
    Jsuis d'accord que le XlApp.Quit est logiquement la mais ca plante sur cette ligne si jle mets. Ca veut donc dire que le bug est sur cette variable et jvois vraiment pas ou ?

  7. #7
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Et si tu le mets avant l'appel de tes proc, ça plante aussi sur le Quit ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 117
    Points : 44
    Points
    44
    Par défaut
    C'est bon finalement fallait juste inverser le nothing et le quit.
    J'ai un autre souci du même style.
    Jdois faire une ouverture de fichier Excel (modifiable par l'utilisateur) et sur fermeture j'importe ce fichier dans une table ACCESS.
    Quand j'importe il me dit que le fichier est déjà ouvert alors que si j'enlève l'import, on voit bien que le processus EXCEL.EXE n'existe plus.
    Jsuis donc quasiment sur que c'est un pb de synchro. Excel doit pas être encore fermé quand il fait l'import (seulement 2 lignes de code après).
    Comment faire pour faire patienter le programme 2-3 secondes ou attendre la fin d'Excel ?

  9. #9
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub Attendre(pStr_Secondes As Integer)
    ' Cette procédure temporise pendant le nombre de secondes qu'on lui transmet en argument
    Dim iLng_Debut As Long
    Dim iLng_Fin As Long
     
        iLng_Debut = Timer
        iLng_Fin = iLng_Debut + pStr_Secondes
        Do Until Timer >= iLng_Fin
            DoEvents
        Loop
    End Sub

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 117
    Points : 44
    Points
    44
    Par défaut
    Ca marche pas non plus.
    J'ai l'impression que ca interrompt aussi la fermeture d'Excel c bizarre.
    Parce que ca bugge tjs sur la ligne d'import et quand le message d'erreur arrive, on voit bien que Excel est tjs ouvert. Et dès que je clique sur "Débugage", jvais voir ds les process et Excel est fermé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    oExcelApp.Quit
    Set oExcelWorkBook = Nothing
    Set oExcelApp = Nothing
    Attendre (2)
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "MaTable", MonFichier, True
    ca bugge sur l'import

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 117
    Points : 44
    Points
    44
    Par défaut
    J'ai peut être une idée sur la cause du bug mais jvois pas trop comment le résoudre.
    Ce code est ds une procédure BeforeClose du Workbook.Ca peut donc paraitre logique qu'il ne ferme lui même le classeur qu'à la fin de la procédure et dc qu'il se fiche de ma fermeture par le code.
    Il faudrait donc que je puisse avoir accès à la procédure AfterClose et que j'arrive à récupérer le nom de fichier.
    Ca semble logique ou pas ?
    C'est faisable ?

  12. #12
    Membre éprouvé Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 962
    Points : 1 151
    Points
    1 151
    Par défaut
    Salut!

    Tu as essayé un "DoEvents" ? (entre la fermeture et l'import)

Discussions similaires

  1. terminer un processus
    Par pinocchio dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/12/2007, 12h09
  2. terminer un processus
    Par cool dans le forum WinDev
    Réponses: 1
    Dernier message: 22/08/2007, 22h22
  3. D7/terminer le processus sous XP
    Par jer64 dans le forum Delphi
    Réponses: 4
    Dernier message: 15/09/2006, 22h05
  4. D7/terminer le processus
    Par jer64 dans le forum Bases de données
    Réponses: 2
    Dernier message: 12/09/2006, 22h31
  5. Réponses: 18
    Dernier message: 16/03/2005, 17h22

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