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


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 116
    Points : 64
    Points
    64
    Par défaut Erreur Automation : L'objet invoqué s'est déconnecté de ses clients
    Bonjour à tous,

    Je fais appel à vos lumières car je rencontre une erreur VBA sur un code qui précédemment fonctionnait sous Windows Vista et ne fonctionne plus sous Windows 7.

    La macro a pour objectif de "piloter" Internet Explorer.

    Le 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
    Sub traitement_t()
    Dim ie As New InternetExplorer
    Dim x As Integer
    Set Monclasseur = ActiveWorkbook
    Set Mafeuille = Monclasseur.Worksheets(5)
    cheminXl = Monclasseur.Path
    'tri la feuille par pdl (permet de traiter tous les pdl d'un centre)
    Lignefin = Mafeuille.Range("B:B").End(xlDown).Row
     
    'Affiche la page Internet
    ie.Visible = True
    'Se connect au site demandé nom fenetre
    ie.Navigate2 ("http://distri-raccordement.edf.fr/")
     
    'boucle qui attend le chargement de la page
    Attendre "OSR - noeyy3gg.noe.edf.fr"
    'Prend le nom de la fenêtre
     
    'Récupérer le code source de la page
    Dim mapage As HTMLDocument
     
    Set mapage = ie.document
     
    End Sub
    Le code plante sur La ligne "Set mapage = ie.document"

    Merci d'avance pour votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut bonjour,
    les références IE sont lier à la version instalé sur la machine IE8,9...

    choisis cette form de déclaration.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test()
    Dim Ie As Object
    Set Ie = CreateObject("InternetExplorer.application")
    Ie.Visible = True
    End Sub

  3. #3
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 116
    Points : 64
    Points
    64
    Par défaut
    Le problème est le même en déclarant sous cette forme de déclaration :/

    Internet Explorer se lance correctement mais au moment d'attribuer le code de la page à la variable mapage, l'erreur apparait.

    Dois-je activer une référence?

  4. #4

  5. #5
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 116
    Points : 64
    Points
    64
    Par défaut
    J'ai déjà regardé mais merci quand même. Ces références là sont déjà activé et les déclarations correspondent

  6. #6
    Invité
    Invité(e)
    Par défaut
    ça ne parle pas que des référence.
    et je te conseil ardament d'utiliser la version creatobject.
    Dernière modification par AlainTech ; 13/01/2014 à 18h21. Motif: Suppression de la citation inutile

  7. #7
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 116
    Points : 64
    Points
    64
    Par défaut
    Je comprends bien et j'ai utilisé ce tuto pour développer ma macro qui, comme je le disais précédemment fonctionnait jusqu'à ce que l'on change le système d'exploitation.

    J'ai fais la modification pour utiliser les déclarations par le CreateObject et l'erreur est toujours la même toujours sur la même ligne.

    Je vais fouiller un peu plus voir si je trouve d'autres infos

    Si ça peut aider et être plus précis, l'erreur apparaît sur


  8. #8
    Invité
    Invité(e)
    Par défaut Pompé sur sur le lien que je t'ai donné
    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
    Sub RechercheVBAExcel()
    'Déclaration des variables
    Dim IE As Object
    Set IE = CreateObject("InternetExplorer.application")
    Dim IEDoc As Object
    Dim InputGoogleZoneTexte As Object
    Dim InputGoogleBouton As Object
     
       'Chargement d'une page Web Google
       IE.Navigate "www.google.fr"
     
       'Affichage de la fenêtre IE
       IE.Visible = True
     
       'On attend le chargement complet de la page
       WaitIE IE
     
       'On pointe le membre Document
       Set IEDoc = IE.document
     
       'On pointe notre Zone de texte
       Set InputGoogleZoneTexte = IEDoc.all("q")
     
       'On définit le texte que l'on souhaite placer à l'intérieur
       InputGoogleZoneTexte.Value = "VBA Excel"
     
       'On attend la fin de la recherche
       WaitIE IE
     
       'On libère les variables
       Set IE = Nothing
       Set IEDoc = Nothing
    End Sub
     
    Sub WaitIE(IE As Object)
    Const READYSTATE_COMPLETE = 4
       'On boucle tant que la page n'est pas totalement chargée
       Do Until IE.ReadyState = READYSTATE_COMPLETE
          DoEvents
       Loop
    End Sub

  9. #9
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 116
    Points : 64
    Points
    64
    Par défaut
    Justement, ce code ne fonctionne pas chez moi je l'ai testé il plante à la ligne 38 sur

  10. #10
    Invité
    Invité(e)
    Par défaut
    as tu des références déclaré manquante?

  11. #11
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bjr,
    Sous windows 7 j'ai du modifié mes code ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Do Until Not IEwindow.Busy And IEwindow.ReadyState = READYSTATE_COMPLETE
            Sleep (300)    'wait 0.5 second
            DoEvents
        Loop

  12. #12
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 116
    Points : 64
    Points
    64
    Par défaut
    Merci ça fonctionne avec le site de google mais pas avec le site sur lequel je vais, un intranet de mon entreprise.

    Est-ce possible que le site intranet soit bloqué et que l'on ne puisse pas le piloter à distance?

    Pour information l'erreur est toujours la même et elle intervient sur la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do Until Not IE.Busy And IE.ReadyState = READYSTATE_COMPLETE
    Citation Envoyé par rdurupt Voir le message
    as tu des références déclaré manquante?
    Non, tous mes références sont bien déclarées

  13. #13
    Invité
    Invité(e)
    Par défaut
    le plus sur est d'exécuter en pas à pas touche [F8] ton code jusqu'à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ie.Navigate2 ("http://distri-raccordement.edf.fr/") 'linge 13 de ton code
    et d'attendre de voir si ta page ce charge.


    attent queleque segonde et reprend le pas à pas.
    Dernière modification par AlainTech ; 13/01/2014 à 18h25. Motif: Suppression de la citation inutile

  14. #14
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 116
    Points : 64
    Points
    64
    Par défaut
    Toujours le même soucis

  15. #15
    Invité
    Invité(e)
    Par défaut
    ta page s'affriche ?
    Dernière modification par AlainTech ; 13/01/2014 à 18h26. Motif: Suppression de la citation inutile

  16. #16
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 116
    Points : 64
    Points
    64
    Par défaut
    Oui la page s'affiche, la page s'est toujours affichée, c'est la suite qui ne fonctionne pas

  17. #17
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    QUEL CODE CORRESPOND à

  18. #18
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 116
    Points : 64
    Points
    64
    Par défaut
    A la base le code de la fonction Attendre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Function Attendre(nomfenetre As String)
     
     
        For Each IE In winshell
     
            If IE.LocationName = nomfenetre Or Left(IE.LocationName, 26) = "http://distri-raccordement" Then
                Set IE = IE
                Exit For
            End If
        Next
    Do While IE.Busy = True: DoEvents: Loop
    Do While IE.ReadyState <> 4: Loop
     
    End Function
    J'ai également essayé de le remplacer par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub WaitIE(IE As Object)
    Const READYSTATE_COMPLETE = 4
       'On boucle tant que la page n'est pas totalement chargée
       Do Until Not IE.Busy And IE.ReadyState = READYSTATE_COMPLETE
            Sleep (300)    'wait 0.5 second
            DoEvents
        Loop
    End Sub
    Sur le premier code l'erreur arrive sur le IE.Document, alors qu'avec le second code l'erreur arrive sur IE.Busy

  19. #19
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    salut,
    chez moi sur un poste en w7 le coede suivant marche parfaitement
    :
    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
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
     
    Sub traitement_t()
    Dim IE As InternetExplorer
    Dim x As Integer
    Set Monclasseur = ActiveWorkbook
    Set Mafeuille = Monclasseur.Worksheets(1)
    cheminXl = Monclasseur.Path
    'tri la feuille par pdl (permet de traiter tous les pdl d'un centre)
    Lignefin = Mafeuille.Range("B:B").End(xlDown).Row
     
    'Affiche la page Internet
    Set IE = CreateObject("InternetExplorer.application")
    IE.Visible = True
    'Se connect au site demandé nom fenetre
    IE.Navigate2 ("http://www.edf.fr/")
     
    'boucle qui attend le chargement de la page
    'Attendre "OSR - noeyy3gg.noe.edf.fr"
    WaitIE IE
    'Prend le nom de la fenêtre
     
    'Récupérer le code source de la page
    Dim mapage As HTMLDocument
    Set mapage = IE.document
     
    MsgBox mapage.Title
     
     
    End Sub
     
     
    Sub WaitIE(IE As Object)
    Const READYSTATE_COMPLETE = 4
       'On boucle tant que la page n'est pas totalement chargée
       Do Until Not IE.Busy And IE.ReadyState = READYSTATE_COMPLETE
            Sleep (300)    'wait 0.5 second
            DoEvents
        Loop
    End Sub

  20. #20
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 116
    Points : 64
    Points
    64
    Par défaut
    Ce code là fonctionne aussi de mon côté par contre, il ne fonctionne pas lorsque je remplace le site d'edf par le site intranet de ma société :/ Je comprends pas et comme malheureusement vous n'avez pas accès à ce site pour faire le test je suis condamnée sans solution.

    Je vous remercie quand même pour votre aide

Discussions similaires

  1. [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
  2. [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
  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