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

VBA Access Discussion :

Erreur Automation '_2147023170(800706be)'


Sujet :

VBA Access

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 887
    Par défaut Erreur Automation '_2147023170(800706be)'
    Bonjour,
    J'ai un problème très particulier d'Automation sur une Application Access 2010 faisant appel à des fichiers Excel que je déclare en visual basic. Le programme ouvre un fichier Excel et lit toutes ses lignes pour les importer dans mes tables Access, voici les déclarations des variables et objets :
    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
     
       'MOUVEMENT DES PALETTES
       Dim oApp As Excel.Application
       Dim oWkb As Excel.Workbook
       Dim oWSht As Excel.Worksheet
       Dim fDlg As Office.FileDialog
       Dim strFichier As String
       Dim csql As String
       Dim cSQL22 As String
       Dim csql2 As String
       Dim requ0 As String
       Dim requ1 As String
       Dim requ2 As String
       Dim requ3 As String
       Dim requ4 As String
       Dim requ5 As String
       Dim requ6 As String
       Dim requ7 As String
       Dim requ8 As String
       Dim requ9 As String
       Dim req0 As String
       Dim req1 As String
       Dim req2 As String
       Dim req3 As String
       Dim req4 As String
       Dim csql4 As String
       Dim i As Integer
        ' Ouverture du fichier Excel
        Set oApp = CreateObject("excel.application")
        Set oWkb = oApp.Workbooks.Open(DLookup("[CHEMIN_FICHIER_IMPORT]", "TAB_PARAMETRE") & DLookup("[NOM_FICHIER_IMPORT]", "TAB_PARAMETRE"))
        Set oWSht = oWkb.Worksheets(DLookup("[ONGLET_FICHIER_IMPORT]", "TAB_PARAMETRE"))  ' le nom de la feuille qui contient les données à importer
    Le problème n'est jamais arrivé alors que le programme tourne sur mon lieu de travail tous les jours et que cette application est utilisée depuis environ 6-7 ans...
    Subitement sur un fichier exel en importation le problème est survenu.
    Voici ou le problème survient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       Set oWSht = Nothing  ' feuille
    
       oWkb.Close 'classeur  
       Set oWkb = Nothing  'classeur
       oApp.Quit 'Appli Excel
    C'est le "Close" qui déclenche un plantage du programme en moulinant sans arret, la seule solution pour l'utilisateur et le CTRL ALT SUPPR pour fermer le processus Excel.
    J'ai remédié au problème de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    FinErrImport2:
      Exit Sub
    ErrImport2:
    If err.Number = -2147023170 Then
     MsgBox err.Description
     Exit Sub
    Else
      MsgBox err.Description
      Exit Sub
    End If
     Resume Next
    qui permet de ne pas bloquer le programme mais le problème est que l'utilisateur est obligé de fermer le processus Excel avec le gestionnaire des taches Windows.
    Ma question est donc de savoir comment faire dans ce cas là quand il y a plantage pour en informer l'utilisateur sans qu'il soit obliger de faire CTRL ALT SUPPR ?
    Si vous voulez la procédure complète dites le moi.
    Si quelqu'un a une idée Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 110
    Par défaut
    BOnjour,

    Tu n'es pas un cas isolé.
    J'ai le même problème sur un poste (parmi une dizaine) qui utilise l'automation sous Word et qui freeze sur un Close.
    Un devnaute a signalé le même problème.

    A ce jour je n'ai pas trouvé une solution propre, il est difficile de debugueur un poste à distance. La solution que j'ai trouvé, puisque le job est arrivé à terme (le fichier Word est généré, sauvé mais Word ne rend pas la main) c'est de killer le process Word en VBA.

    C'est sale mais efficace.

    Le n° d'erreur que tu interceptes indique simplement que l'application en Automation est fermée, rien à voir avec l'erreur que tu (nous) rencontres (rencontrons)…. puisque tu as réellement fermer Excel.

    Ce qu'il faudrait c'est voir dans le système ce qu'il fait pendant le close. (la dll qui freeze). Dans ton malheur tu as la chance incroyable d'avoir le problème à porté de main. N'hésite pas à nous faire part de ce que tu constate.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    Insérer avant la commande "close" la ligne et débogguer; ou plus simplement
    écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if oWkb.Name <> "" Then oWkb.Close: Set oWkb = Nothing

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 887
    Par défaut
    Citation Envoyé par loufab Voir le message

    Le n° d'erreur que tu interceptes indique simplement que l'application en Automation est fermée, rien à voir avec l'erreur que tu (nous) rencontres (rencontrons)…. puisque tu as réellement fermer Excel.

    Ce qu'il faudrait c'est voir dans le système ce qu'il fait pendant le close. (la dll qui freeze). Dans ton malheur tu as la chance incroyable d'avoir le problème à porté de main. N'hésite pas à nous faire part de ce que tu constate.

    Cordialement,
    Merci pour ta réponse, non Excel ne se ferme pas car il plante sur le "close", d'autre part niveau système en utilisant le gestionnaire des taches Windows je supprime le processus Excel toujours ouvert, en faisant CTRL ALT SUPPR et récupère l'erreur ne bloquant pas comme cela le programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    FinErrImport2:
      Exit Sub
    ErrImport2:
    If err.Number = -2147023170 Then
     
     MsgBox err.Description
     Exit Sub
    voilà ce que je pouvais rajouter et Merci

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 887
    Par défaut
    Citation Envoyé par Zekraoui_Jakani Voir le message
    Insérer avant la commande "close" la ligne et débogguer; ou plus simplement
    écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if oWkb.Name <> "" Then oWkb.Close: Set oWkb = Nothing
    ***************************************************************


    Merci pour ta réponse mais je pense que de connaitre le nom du processus avant le close ne change pas grand chose au problème, de toute façon le nom est automatiquement différent de "rien" (je l'ai testé).
    Merci en tous les cas si tu as d'autres idées n'hésite pas

  6. #6
    Expert confirmé
    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
    Par défaut
    Bonjour,

    "Subitement" ?

    Installation d'un complément ?
    Voir dans les compléments (macros complémentaires et compléments COM).
    A verifier dans Excel vu que c'est excel qui bloque.

    C'est rare d'Excel ne se ferme pas correctement si c'est bien codé, ce qui est apparemment le cas vu que ça a fonctionné plusieurs années.
    La cause est peut-être externe à Excel, un complément qui est mal libéré peut en être la raison.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 887
    Par défaut
    Citation Envoyé par Arkham46 Voir le message
    Bonjour,

    "Subitement" ?
    Non seulement sur un fichier Excel les autres pas de problèmes... curieux non ?

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 110
    Par défaut
    Bonjour,

    Merci pour ta réponse, non Excel ne se ferme pas car il plante sur le "close", d'autre part niveau système en utilisant le gestionnaire des taches Windows je supprime le processus Excel toujours ouvert, en faisant CTRL ALT SUPPR et récupère l'erreur ne bloquant pas comme cela le programme :
    Il me semble que j'ai bien compris le problème.
    Le close est gelé mais ne déclenche pas d'erreur puisque le process est gelé.
    Lorsque tu supprime le process Excel, la méthode close est libérée et rend la main au programme mais il répond par une erreur (celle que tu indiques) qui veut simplement dire que le process Excel n'existe plus pour terminer correctement la méthode Close.

    Considérer que l'erreur que tu interceptes (le N° fourni) est le bon N° d'erreur du problème de freeze est faux.

    En effet le code de Zekraoui_Jakani n'apporte rien.

    Par contre ce qui est intéressant c'est ce que tu indiques "le problème ne se produit que pour ce fichier Excel et par pour un autre". Tu me confirmes que c'est bien ce que tu veux dire ?

    Arkham46 :
    Pour mon problème identique sous Word, cela s'est également produit "subitement" n'ayant accès à cette machine que ponctuellement, à distance, pendant un temps trop court et avec une connexion déplorable, je n'ai pas eu le loisir de vérifier en profondeur ce qu'il s'y passe. Pour tout ce qui a changé, c'est une machine utilisateur libre de toute contrainte donc…

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  9. #9
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 029
    Par défaut
    une idée à tester :
    peut être qu'au moment de faire le .close, Excel demande s'il faut sauvegarder le classeur (nouvelle version d'Office ?)

    et dans ce cas essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     oWkb.Close SaveChanges:=False
    CDLT

  10. #10
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 110
    Par défaut
    Pour moi déjà tenté.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  11. #11
    Expert confirmé
    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
    Par défaut
    Citation Envoyé par loufab Voir le message
    Pur tout ce qui a changé, c'est une machine utilisateur libre de toute contrainte donc...
    Disons que si l'utilisateur installe des compléments foireux cela devient sa faute...
    J'ai vu un cas récemment mais je ne retrouve plus.
    En tout cas les compléments me semble de bons candidats aux bugs.
    D'autant qu'on cherche une cause Office standard alors que la vérité est ailleurs.

  12. #12
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 110
    Par défaut
    D'autant qu'on cherche une cause Office standard alors que la vérité est ailleurs.
    Absolument !
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 887
    Par défaut
    Citation Envoyé par loufab Voir le message
    Bonjour,
    Il me semble que j'ai bien compris le problème.
    Le close est gelé mais ne déclenche pas d'erreur puisque le process est gelé.
    Lorsque tu supprime le process Excel, la méthode close est libérée et rend la main au programme mais il répond par une erreur (celle que tu indiques) qui veut simplement dire que le process Excel n'existe plus pour terminer correctement la méthode Close.

    Considérer que l'erreur que tu interceptes (le N° fourni) est le bon N° d'erreur du problème de freeze est faux.
    Oui en effet tu as surement raison, mais alors comment faire puisqu'on ne "voit" pas ce qu'il se passe niveau système.
    Par contre ce qui est intéressant c'est ce que tu indiques "le problème ne se produit que pour ce fichier Excel et par pour un autre". Tu me confirmes que c'est bien ce que tu veux dire ?
    Oui je confirme.

    Merci à +

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 887
    Par défaut
    Citation Envoyé par Arkham46 Voir le message
    Bonjour,

    "Subitement" ?

    Installation d'un complément ?
    Voir dans les compléments (macros complémentaires et compléments COM).
    A verifier dans Excel vu que c'est excel qui bloque.

    C'est rare d'Excel ne se ferme pas correctement si c'est bien codé, ce qui est apparemment le cas vu que ça a fonctionné plusieurs années.
    La cause est peut-être externe à Excel, un complément qui est mal libéré peut en être la raison.
    Merci pour ta contribution je viens de regarder dans l'aide Excel beaucoup de compléments existent dans le choix automatisation lequel choisir pour ce problème ? si tu as des idées MERCI

  15. #15
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 110
    Par défaut
    Les compléments : Procède par dichotomie.

    Si cela ne se produit que sur une feuille, qu'a-t-elle de différent par rapport à une autre ?
    niveau complément
    code,
    composant,
    format...

    Pour mon problème sous Word c'est tous les documents.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 887
    Par défaut
    Après un dernier test sur ce fichier Excel une seule ligne posait problème je m'en suis apercu en les testant une par une heureusement c'était la 4ème en partant du début... sur un total de 45 lignes, en la supprimant le "close" ne plante plus, du coup je ferai en sorte dans la prochaine version du programme de prévoir ce problème comme je l'avais indiqué plus haut, au niveau des compléments je vois pas en tout cas, pas pour l'instant, je reste ouvert pour d'autres idées ou infos.
    Merci à tous

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 887
    Par défaut Problème résolu !!!
    Bonjour à loufab, micniv, Arkham46 et merci pour vos contributions.
    Après un dernier test et comme j'avais la chance d'avoir le fichier récalcitrant en main j'ai compris ce qu'il se passait : en fait une cellule contenait deux guillemets qui quand je faisais l'export avec une reguête SQL m'obligeait à modifier cette cellule et donc enpechait la bonne fermeture du fichier tout ceci aussi grâce à un autre sujet posté içi :

    https://www.developpez.net/forums/d1...-excel-access/

    et à l'intervention de tee_grandbois
    en attendant de voir pourquoi tes répertoires sont en lecture seule (c'est un autre problème), tu peux résoudre le problème actuel en passant par une variable


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	If InStr(oWSht.Cells(i, 20), """") <> 0 Then
              oWSht.Cells(i, 20) = Replace(oWSht.Cells(i, 20), """", " ")
              csql = csql & ", " & Chr(34) & oWSht.Cells(i, 20) & Chr(34)  'Commentaires
              Else
              csql = csql & ", " & Chr(34) & oWSht.Cells(i, 20) & Chr(34)  'Commentaires
            End If
    à remplacer par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim strCellModifiee As String
     
             strCellModifiee = oWSht.Cells(i, 20)
     
            csql = csql & ", " & Chr(34) & Replace(strCellModifiee, """", " ") & Chr(34)  'Commentaires
    à mettre à chaque endroit où tu utilises Replace (sauf la déclaration de variable, à mettre au début)
    chose que je n'avais pas fais partout dans l'application et qui donc empêchait la fermeture du fichier Excel.
    Donc effectivement loufab avait raison :
    Il me semble que j'ai bien compris le problème.
    Le close est gelé mais ne déclenche pas d'erreur puisque le process est gelé.
    Lorsque tu supprime le process Excel, la méthode close est libérée et rend la main au programme mais il répond par une erreur (celle que tu indiques) qui veut simplement dire que le process Excel n'existe plus pour terminer correctement la méthode Close.

    Considérer que l'erreur que tu interceptes (le N° fourni) est le bon N° d'erreur du problème de freeze est faux.
    Merci encore à tous
    A+

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

Discussions similaires

  1. [VBA-E]erreur automation
    Par bernard38 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 02/08/2023, 15h48
  2. erreur automation : l'objet..
    Par nath-0-0 dans le forum Access
    Réponses: 3
    Dernier message: 08/09/2006, 16h51
  3. [VBA-E]Erreur automation
    Par bernard38 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/04/2006, 09h22
  4. [VBA-E] Erreur automation
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 32
    Dernier message: 07/04/2006, 15h02
  5. [VBA-E]Erreur Automation en faisant du multicasting
    Par GnarlyYoyo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/04/2006, 13h29

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