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

Macros et VBA Excel Discussion :

Erreur execution '-2147417848 (800101108)': Erreur Automation-L'objet invoqué s'est déconnecté de ses clients.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur autodidacte
    Inscrit en
    Janvier 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur autodidacte
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2019
    Messages : 3
    Par défaut Erreur execution '-2147417848 (800101108)': Erreur Automation-L'objet invoqué s'est déconnecté de ses clients.
    Bonsoir,

    j'ai un problème qui dépasse mes compétences actuelles : je suis confronté à un plantage qui n'est pas systématique, le programme pouvant fonctionner pendant plusieurs heures avant de planter, ou planter immédiatement, ou marcher quelques minutes puis planter, ou planter pendant plusieurs redémarrages avant de remarcher, ... La plupart du temps, le plantage fait également planter Excel qu'il faut alors que je ferme avec le gestionnaire des tâches.
    J'ai fait plusieurs recherches sur cette erreur sans trouver de réponses transposables à mon cas (ou peut être sans les comprendre). Désolé si ce sujet a déjà été traité et merci d'avance de me réorienter si tel est le cas.

    Une feuille de mon fichier Excel est connectée à une base de données Access et l'affiche sous forme de tableau. Je trie le tableau par ordre alphabétique selon la colonne souhaitée, puis j'affiche cette colonne dans une ListBox contenue dans un formulaire. Cette ListBox est configurée pour autoriser la MultiSelection : 1-fmMultiSelectMulti. Mon formulaire contient également une TextBox permettant de filtrer les noms affichés dans la ListBox en fonction des caractères indiqués dans la TextBox.

    Pas de soucis pour l'affichage du formulaire, pour remplir la ListBox, pour l'utilisation de la TextBox. Tout s'affiche correctement, systématiquement. En revanche, lorsque je clique sur un Item de la ListBox, il peut arriver que le programme plante avec le message d'erreur suivant : Erreur execution '-2147417848 (800101108)': Erreur Automation-L'objet invoqué s'est déconnecté de ses clients. et que tout plante. J'ai remarqué qu'en rentrant du texte dans la TextBox avant de cliquer sur un Item de la ListBox, l'erreur n'a pas lieu, cependant un Item de la ListBox sur lequel je n'ai pas cliqué se sélectionne quand je clique sur un autre Item.

    Le code d'initialisation du formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub UserForm_initialize()
     
        Application.ScreenUpdating = False
     
        ListBoxAvecMesItems.Clear
        Tri   'Tri le tableau contenant les Items à afficher dans la ListBox
        RemplissageListBox 'Affiche les Items dans la ListBox
     
    End Sub
    Le code de tri du tableau connecté à la base de données Access :

    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
    Public Sub Tri()
        Dim tri_tblName As String
     
        tri_tblName = ActiveWorkbook.Worksheets("maFeuille").ListObjects(1).Name
        ActiveWorkbook.Worksheets("maFeuille").ListObjects( _
            tri_tblName).Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("maFeuille").ListObjects( _
            tri_tblName).Sort.SortFields.Add Key:=Range( _
            tri_tblName & "[[#All],[MaColonneQueJeTrie]]"), SortOn:= _
            xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("maFeuille").ListObjects( _
            tri_tblName).Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End Sub
    Le code de remplissage de la ListBox :

    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
    Private Sub RemplissageListBox()
        Dim i as Integer
     
        i = 2
        Do While ActiveWorkbook.Worksheets("maFeuille").Cells(i, 2) <> ""
            ListBoxAvecMesItems.AddItem ActiveWorkbook.Worksheets("maFeuille").Cells(i, 2)
            i = i + 1
        Loop
     
        'Dé-sélectionne les Items éventuellement sélectionnés par défaut
        For i = 0 To ListBoxAvecMesItems.ListCount - 1
            If ListBoxAvecMesItems.Selected(i) = True Then
                ListBoxAvecMesItems.Selected(i) = False
            End If
        Next i
     
        ListBoxAvecMesItems.ListIndex = -1
     
    End Sub
    Et le code pour filtrer les Items affichés dans la ListBox en fonction des caractères entrés dans la TextBox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub TextBoxFiltre_Change()
        Dim i As Integer
     
        ListBoxAvecMesItems.Clear
     
        i = 2
        Do While ActiveWorkbook.Worksheets("maFeuille").Cells(i, 2) <> ""
            If ActiveWorkbook.Worksheets("maFeuille").Cells(i, 2) Like "*" & UCase(TextBoxFiltre) & "*" Then
                ListBoxAvecMesItems.AddItem ActiveWorkbook.Worksheets("maFeuille").Cells(i, 2)
            End If
            i = i + 1
        Loop
     
    End Sub
    Si quelqu'un a une piste, je suis plus que preneur.

    Cordialement.

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    En clair, disons, que le lien entre Excel et Access se rompt pour une raison ou une autre. Puisque OLE bouffe de la mémoire et que Office n'est pas un premier classe dans la gestion de la mémoire; essaie de voir si au moment du plantage, il n'y a pas un Belzébuth automatique de Windows qui a décollé ou s'il n'y a pas beaucoup de processus actifs en mémoire, ou du moins la mémoire vive disponible.

    Également, la faiblesse majeure d'Excel est qu'il a constamment besoin de tous les classeurs ou8verts, et au complet. en mémoire vive pour fonctionner.

    Si ce n'est vraiment pas à cause d'un manque de mémoire, il va falloir creuser. Mais là, vite fait, je suis en manque d'inspiration...

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur autodidacte
    Inscrit en
    Janvier 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur autodidacte
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2019
    Messages : 3
    Par défaut
    Bonjour, merci pour cette piste !

    Je n'aurais pas pensé que le lien Excel <-> Access puisse être en cause étant donné que la macro fait appel au tableau Excel lié à Access uniquement pour le remplissage de la ListBox et que ce remplissage se fait, que le bug survienne par la suite ou non.

    Je vais faire plusieurs tests du programme avec un tableau non connecté et surveiller l'utilisation de la mémoire vive lors de son exécution et je te fais un retour.

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur autodidacte
    Inscrit en
    Janvier 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur autodidacte
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2019
    Messages : 3
    Par défaut
    Citation Envoyé par clementmarcotte Voir le message
    Bonjour,

    En clair, disons, que le lien entre Excel et Access se rompt pour une raison ou une autre. Puisque OLE bouffe de la mémoire et que Office n'est pas un premier classe dans la gestion de la mémoire; essaie de voir si au moment du plantage, il n'y a pas un Belzébuth automatique de Windows qui a décollé ou s'il n'y a pas beaucoup de processus actifs en mémoire, ou du moins la mémoire vive disponible.

    Également, la faiblesse majeure d'Excel est qu'il a constamment besoin de tous les classeurs ou8verts, et au complet. en mémoire vive pour fonctionner.

    Si ce n'est vraiment pas à cause d'un manque de mémoire, il va falloir creuser. Mais là, vite fait, je suis en manque d'inspiration...

    Bonjour,

    j'ai mis un peu de temps pour le retour, mais effectivement il semblerait qu'il y ait bien un problème de mémoire, qui survient... des fois...

    J'ai vu sur le forum qu'il est possible de désallouer des espaces mémoires en mettant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set maVariable = Nothing
    Est il effectivement conseillé de faire cela de manière systématique ? Il me semblait que lorsqu'une l’exécution d' une private sub se terminait, les variables étaient automatiquement détruites et les espaces mémoire libérés. Je me trompe ?

    Je suis également tombé sur un code pour vider le cache :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell "RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255
    Faut il l'utiliser ? Comment s'en servir ?

    Dernière question, est-il possible, via le code VBA de se connecter à une base de données Access, d'actualiser les tableaux Excel, puis de se déconnecter ?

    D'avance merci.

Discussions similaires

  1. [XL-2007] Erreur Automation : L'objet invoqué s'est déconnecté de ses clients
    Par nanousik dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 06/11/2019, 14h22
  2. Réponses: 2
    Dernier message: 18/08/2017, 11h22
  3. [XL-2007] erreur d'automation : l'objet invoqué s'est déconnecté de ses clients - sur variable date
    Par chrisaccess dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/02/2016, 01h35
  4. [XL-2010] Erreur Automation L'objet invoqué s'est déconnecté de ses clients
    Par forum2015 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 11/08/2014, 22h12
  5. Erreur Automation:l'Objet invoqué s'est déconnecté de ses clients
    Par alfadz dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 09/12/2011, 16h17

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