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 Automation L'objet invoqué s'est déconnecté de ses clients [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2014
    Messages : 58
    Points : 35
    Points
    35
    Par défaut Erreur Automation L'objet invoqué s'est déconnecté de ses clients
    Bonjour tout le monde,

    Je viens de finir de mettre en place le système de protection d'un classeur comprenant une vingtaine de pages. En temps normal, seul la lecture des feuilles sont autorisées. Pour pouvoir les modifier, une identification est nécessaire (mot de pass et pseudo). Tout ceci marche très bien, j'ai pu faire des tests, il n'y a pas de souci.
    Mais voila, juste après, j'ai terminé mon système en protégeant (partiellement) les macros VBA. Pour ce faire, j'ai tout simplement fait la chose suivante :
    Dans VBA, cliquer sur "outils" puis sur "Propriétés de VBA project" puis cliquer sur "Verrouiller le projet pour l'affichage" et renseigner un mot de pass.

    Ce système de protection de macro (protection partielle j'en ai bien conscience) marche bien. Mais depuis que j'ai mis en place ce système, il m'est impossible de fermer le classeur. Si je tente de fermer le classeur, excel me demande d'abord si je souhaite enregistrer. Que je réponde positivement ou non, le classeur plante juste après c'est à dire que sur la feuille donnée du classeur, je ne peux rien faire. Je ne peux pas modifier de cellulles, changer de pages, cliquer sur un onglet etc... Je peux aller sur internet ou ouvrir d'autre applis, meme aller sur VBA s'il n'est pas fermé, mais mon classeur excel reste lui figé. Je suis obligé d'insister en appuyant sur l'onglet fichier ou en utilisant le gestionnaire de taches pour forcer le système à quitter excel (et encore avec le gestionnaire de taches, l'onglet traditionnel "applications" ne suffit pas, je dois passer par l'onglet "processus" ce qui est encore plus radical).

    Par ailleurs, je ne peux plus modifier mon code VBA c'est à dire que je ne peux pas l'enregistrer ou supprimer des modules/userform sans qu'il plante.

    J'ai pensé en premier lieu que le bug vient du mot de pass de sécurisation des macros VBA mais j'ai pu enlever cette sécurité sans problème et le fichier plante toujours.

    Quand j'utilise d'autre fichiers excel, ceux-ci marchent parfaitement. Je ne sais vraiment pas quelle est l'erreur mais la c'est dramatique. Sa fait plus d'un mois que je code du VBA sur ce fichier (mon code a été sauvegardé heureusement) et je doit absolument trouver une solution.

    J'espère que vous pourrez m'aider.

    EDIT : titre modifié

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    La protection du code ne devrait pas causer cette erreur.
    Il doit y avoir quelque chose d'autre qui bogue à quelque part, dans le code possiblement.
    Est-ce que tu as du code dans Workbooks_Deactivate, _BeforeSave, _BeforeClose ou autre de ce genre ?
    MPi²

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2014
    Messages : 58
    Points : 35
    Points
    35
    Par défaut
    En jouant sur les Application.DisplayAlerts = False/True j'ai pu récupérer l'erreur. Il s'agit (jamais vu) :
    Erreur d'execution '-2147417848 (80010108)':

    Erreur Automation
    L'objet invoqué s'est déconnecté de ses clients
    Je vais tout de suite me renseigner sur cette erreur mais si sa vous dit qq chose, n'hésitez pas !

  4. #4
    Inactif  

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

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    En gros, c'est parce qu'une application de pilotage à distance par "Create Object" ou new "machin.application", ou une opération quelconque dépendant d'une liaison s'est mal terminée ou a été interrompue en chemin par la fermeture prématurée de l'autre application.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2014
    Messages : 58
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par parmi Voir le message
    La protection du code ne devrait pas causer cette erreur.
    Il doit y avoir quelque chose d'autre qui bogue à quelque part, dans le code possiblement.
    Est-ce que tu as du code dans Workbooks_Deactivate, _BeforeSave, _BeforeClose ou autre de ce genre ?
    Effectivement, j'ai cela comme code (je ne pense pas que l'erreur vienne de là, cf mon explication en dessous) :

    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
    Private Sub Workbook_Open()
     
    With Worksheets("Nuevos informaciones")
     
        .Unprotect Password:="titi"
        .Range("A1").Locked = False
        .Protect Password:="titi"
        .EnableSelection = xlUnlockedCells
     
        'makes invisible the buttons "update all" and "Protec the files" annd makes visible the button "Unprotect the files"
        .Shapes("Bouton 13").Visible = True
        .Shapes("Bouton 14").Visible = False
        .Shapes("Bouton 15").Visible = False
     
    End With
     
    Dim i As Integer
     
    For i = 1 To 16
        With ThisWorkbook.Worksheets(i)
            .Protect Contents:=True, UserInterfaceOnly:=True, Password:="titi"
            .EnableSelection = xlNoRestrictions
        End With
    Next i
     
    Application.DisplayAlerts = False
     
    End Sub
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
     
    Dim i As Integer
     
    For i = 1 To 16
        Worksheets(i).Protect Password:="titi"
    Next i
     
    End Sub

    Je pense avoir réussi à isoler mon erreur (pas évident car excel plante souvent).

    J'ai donc un UserForm dans lequel l'individu indique d'une première part un mot de pass pour déverrouiller le classeur qui est en lecture seule puis dans un second temps, il indique un nouveau mot de pass (en l'occurrence c'est le même) et son nom d'utilisateur pour lancer le programme confirmation.

    Donc voici le code qui s'applique lorsqu'il clique sur "Validate" du second UserForm, avant le lancement de confirmation() :
    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
    Private Sub CommandButton1_Click()
     
    Application.DisplayAlerts = True
     
    'textbox1 correspond au champ ou il écrit son nom d'utilisateur
    'textbox2 correspond au champ ou il écrit son mot de pass
     
    If TextBox2.text = "titi" Then       'pour le moment on peut se connecter avec (barthe, titi) ou (daniel, lol) cf plus bas
        If TextBox1.text = "barthe" Then    
            Unload identificationUserForm
            TextBox1.text = ""
            TextBox2.text = ""
            Call confirmation(UCase("barthe"))      'on lance la procedure confirmation avec le nom d'utilisateur en majuscule
        Else
            Unload identificationUserForm
            TextBox1.text = ""
            TextBox2.text = ""
            MsgBox ("Incorrect user !")
        End If
     
    ElseIf TextBox2.text = "lol" Then
        If TextBox1.text = "daniel" Then
            Unload identificationUserForm
            TextBox1.text = ""
            TextBox2.text = ""
            Call confirmation(UCase("daniel"))
        Else
            Unload identificationUserForm
            TextBox1.text = ""
            TextBox2.text = ""
            MsgBox ("Incorrect user !")
        End If
     
    'etc a répéter autant que de comptes
     
    Else
        Unload identificationUserForm
        TextBox1.text = ""
        TextBox2.text = ""
        MsgBox ("Incorrect password !")
     
    End If
     
    End Sub
    Voici le code de confirmation :
    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
    Dim name As String
     
    'request of confirmation before beginning the updating
    Sub confirmation(ByVal text As String)    'text va correspondre au nom en maj de l'utilisateur
     
    Application.DisplayAlerts = True
     
    MsgBox text
     
    name = text
     
    MsgBox name
     
    'MsgBox "prêt"
        If MsgBox("Are you sur you want to update the database ?", vbYesNo, "Request for confirmation") = vbYes Then
            updatefeasible  'le reste du code, qui compile très bien (1500 lignes environ, tout dans le même module, le problème vient pas de là)
            'MsgBox "YEAH"
        Else
        MsgBox "The database was not updated !"
        End If
     
    'name = ""       'on réinitialise la variable
     
    End Sub
    Selon moi, tout le problème tourne autour de la variable name. Les raisons :
    -MsgBox test renvoit bien le bon nom d'utilisateur en majuscule
    -name = test renvoit le message d'erreur cité en début de post et arrête la compilation
    -j'ai changé le début de confirmation en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim name As String
     
    'request of confirmation before beginning the updating
    Sub confirmation(ByVal text As String)    'text va correspondre au nom en maj de l'utilisateur
     
    Application.DisplayAlerts = True
     
    MsgBox name
    et il plante sur le MsgBox

    -dès que je touche à la variable name en haut du classeur (suppression, mise en commentaire), mon fichier excel plante totalement...

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2014
    Messages : 58
    Points : 35
    Points
    35
    Par défaut
    Pour vous aider, voici le fichier en question (format xls). J'ai juste supprimé les données des feuilles excel car ce sont des données confidentiels. Mais imaginez que chaque page contient environ 600 lignes et 55 colonnes (base de données).

    J'ai laissé l'intégralité du code mais la suite du bug ne compilera pas bien étant donné qu'il n'y a plus de données dans les feuilles. Néanmoins, le bug persiste, notamment je vous invite à tout simplement fermer le fichier excel après son ouverture ^^

    Rq :
    code pour déverrouiler les pages : "titi"
    code pour lancer update all : (barthe, titi) ou (daniel, lol)

    fichierbugg.xlsx

    Edit: comment faire pour vous transmettre le fichier en xlsm et non seulement en xls ? Car a la limite, je peux vous passer le code ici mais pour les UserForm...

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Pour joindre un XLSM, tu dois le "zipper", autrement, il te faut mettre un XLS ou un XLSX (sans macro) ...
    MPi²

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2014
    Messages : 58
    Points : 35
    Points
    35
    Par défaut
    Voila le fichier avec la macro (module 1, les autres modules ne servent pas), les UserForms et les feuilles (vides de données).

    De nouveau, je vous invite à ouvrir le fichier puis simplement à essayer de le fermer, il devrait planter
    J'espère que vous pourrez m'aider. Merci bc

    fichierbug.zipfichierbug.zip

  9. #9
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Je n'ai pas regardé le fichier, mais je vois que tu mets DisplayAlert = False à la fin de Workbook_Open()
    Y a-t-il une raison ?

    Évite aussi d'utiliser des mots qui pourraient être réservés comme text
    Même name est utilisé dans une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name NomFichier As AutreNom
    MPi²

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2014
    Messages : 58
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par parmi Voir le message
    Je n'ai pas regardé le fichier, mais je vois que tu mets DisplayAlert = False à la fin de Workbook_Open()
    Y a-t-il une raison ?
    Pour DisplayAlert, en fait je voulais empecher l'apparition d'un message d'erreur qui apparait lorsqu'on tente de modifier une feuille protégée mais sa n'a pas marché. Et je n'ai pas eu l'occasion de le retirer depuis car mon fichier excel a commencé à planter peu après. Mais c'est qq chose qui ne sert à rien pour moi, c'est même un problème en cas d'erreur.

    Évite aussi d'utiliser des mots qui pourraient être réservés comme text
    Même name est utilisé dans une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name NomFichier As AutreNom
    Effectivement, je ne savais pas dans quelle mesure cela pouvait poser problème. Je ferais attention à l'avenir. Le problème est que je ne peux pas corriger cette erreur : dès que je touche à la variable name lors de sa déclaration, si je tente de la supprimer, de la renommer ou de la mettre en commentaire, le code plante et je suis obligé de forcer la fermeture d'excel...

  11. #11
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    J'ouvre et je ferme avec ou sans sauvegarde et je ne vois pas de problème... (?)
    Y a-t-il quelque chose que je dois tenter avant de le fermer ?

    Edit: Quelle version d'Excel tu utilises ?
    MPi²

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2014
    Messages : 58
    Points : 35
    Points
    35
    Par défaut
    J'utilise Excel 2010 !

    Je serais absent jusqu'à dimanche soir mais dès que possible, je viendrais consulter les éventuelles réponses.

    J'espère que vous trouverez le problème. Merci en tout cas d'essayer !

    Merci aussi à toi Parmi

  13. #13
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    J'arrive même à changer les noms des variables comme Name...
    Aucun problème en vue Houston !
    MPi²

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

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour à tous,

    Je te rassure (quoique), ça plante chez moi aussi (excel 2010).
    Et ça se passe mieux après avoir remplacé name par name2

    eric

    Le fichier modifié si ça peut t'aider à récupérer tes macros.
    J'ai essayé d'être attentif lors du remplacement mais...
    Fichiers attachés Fichiers attachés

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2014
    Messages : 58
    Points : 35
    Points
    35
    Par défaut
    Ouf, je ne suis donc pas fou eriic :p

    Merci à tous pour vos remarques. j'ai fini par recommencer un classeur en refaisant les UserForm et en copiant les codes (en faisant bien attention à la variable "name" à l'origine de tous le problème). Après avoir tout testé, tout marche correctement. Merci à tous

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

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. [AC-2003] erreur l'objet invoqué s'est déconnecté de ses clients
    Par crauwels dans le forum IHM
    Réponses: 0
    Dernier message: 30/08/2014, 12h05
  3. Réponses: 8
    Dernier message: 07/03/2014, 11h58
  4. 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
  5. [XL-2002] erreur automation. L'objet évoqué s'est déconnecté de ses clients
    Par marcelisa2 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/01/2011, 10h04

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