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 :

Object Variable or With block variable not set


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2013
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Object Variable or With block variable not set
    Alors, voici le problème que je rencontre :

    Lorsque cette macro se lance le message d'erreur suivant qui s'affiche :

    Object Variable or With block variable not set
    Je suis convaincu que le passage qui génère l'erreur est ceui-ci, mais je n'arrive pas à comprendre en quoi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Do Until IE.readyState = READYSTATE_COMPLETE 'Charge IE
            DoEvents
        Loop
     
        Do Until IE.document.readyState = "complete"
                 DoEvents
        Loop 'attend la fin du chargement du document
    Le code général de la macro est le suivant :

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    Sub Importer_tableau_Basias(Debut As Integer, nb_Basias As Integer, Xref As Long, Yref As Long) 'Fonction d'importation du tableau Basias
    'Nécessite d 'activer les references
        'Microsoft HTML Objects Library
        'et
        'Microsoft Internet Controls
     
    Dim IE As InternetExplorer 'Définition des variables
    Dim maPageHtml As HTMLDocument
    Dim Htable As IHTMLElementCollection
    Dim maTable As IHTMLTable
    Dim j As Integer, i As Integer
    Dim Code_Basias As String
    Dim XLambert As Long
    Dim YLambert As Long
    Dim NomEntreprise As String
    Dim Fin_Activite As Integer
    Dim Date_Debut As String
    Dim Date_Fin As String
    Dim Activite As String
    Dim Code As String
    Dim g As Integer
    Dim URL As String
    Dim Compteur As Integer
    Dim Fin As Integer
    Dim Indice As Integer
    Dim Distance As Long
    Dim Position As String
    Dim Angle As Integer
    Dim Rayon As Long
    Indice = nb_Basias + 8
    g = 0
     
    URL = "http://basias.brgm.fr/fiche_detaillee.asp?IDT=" & Worksheets("Configuration").Range("G" & Indice).Value
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = False
     
    Worksheets("Tableau de données").Select 'Sélectionner le tableau de données
    IE.navigate URL
        'Application.Wait TimeValue(Now) + TimeValue("00:00:05")
     
         Do Until IE.readyState = READYSTATE_COMPLETE 'Charge IE
            DoEvents
        Loop
     
        Do Until IE.document.readyState = "complete"
                 DoEvents
        Loop 'attend la fin du chargement du document
     
     'L'état d'occupation du site n'est pas sur la même page web que le reste, on la charge donc avant
    Set maPageHtml = IE.document 'Charger le document IE
     
    Set Htable = maPageHtml.getElementsByTagName("table") 'charger les éléments du tableau
     
    Compteur = 0
     
    While Compteur = 0 'Tant que compteur = 0
        If Htable(g).Rows(0).Cells(0).innerText = "Première adresse :" Then 'Si
            Compteur = g 'compteur = g
        End If
        g = g + 1
    Wend
    Set maTable_nom = Htable(Compteur)
    EtatOccupation = maTable_nom.Rows(3).Cells(1).innerText
     
    'il arrive que la case Etat occupation soit décalé d'une case, dans ce cas:
    If EtatOccupation = "Inventorié" Then
    EtatOccupation = maTable_nom.Rows(4).Cells(1).innerText
     
    End If
     
     
    Cells(Debut, 9) = EtatOccupation 'Cellules de la ligne du début et colonne 9 = Etat d'occupation
     
     
    End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut Bonjour, regarde ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Do
    DoEvents
    Loop Until IE.busy = False

  3. #3
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    "READYSTATE_COMPLETE" est une constante, si tu l'initialise pas il y a erreur. La constante a pour valeur 4 alors teste de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Do Until IE.readyState = 4
    Hervé.

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Do Until IE.document.readyState = "complete"
                 DoEvents
        Loop
    Vire ça

  5. #5
    Futur Membre du Club
    Inscrit en
    Septembre 2013
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Aucune des solutions que vous m'avez suggéré n'a fonctionné, il y a toujours le même message d'erreur. :s

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    mets un timer plutôt qu'un ready state et attends 3 secondes.

  7. #7
    Futur Membre du Club
    Inscrit en
    Septembre 2013
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    C'est ce que j'ai fait l'instant, toujours le même message d'erreur, il doit en fait y avoir un autre problème...
    Je reste songeur devant mon code >_<

  8. #8
    Invité
    Invité(e)
    Par défaut
    j'ai effectué ce tes sans problème
    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
    Sub Test() 'Fonction d'importation du tableau Basias
    URL = "http://www.developpez.net/forums/d1378989/logiciels/microsoft-office/excel/macros-vba-excel/object-variable-or-with-block-variable-not-set/"
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
     
    'Worksheets("Tableau de données").Select 'Sélectionner le tableau de données
    IE.navigate URL
        'Application.Wait TimeValue(Now) + TimeValue("00:00:05")
     
         Do Until IE.readyState = 4 'Charge IE
            DoEvents
        Loop
     
        Do Until IE.document.readyState = "complete"
                 DoEvents
        Loop 'attend la fin du chargement du document
     
     'L'état d'occupation du site n'est pas sur la même page web que le reste, on la charge donc avant
    Set maPageHtml = IE.document 'Charger le document IE
     
    Set Htable = maPageHtml.getElementsByTagName("table") 'charger les éléments du tableau
     
     MsgBox ""
     
    End Sub

  9. #9
    Futur Membre du Club
    Inscrit en
    Septembre 2013
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    C'est bon! J'ai trouvé d'où venait l'erreur!

    en fait il fallait que j'ajoute un autre Compteur = 0 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Compteur = 0
     
    While Compteur = 0 'Tant que compteur = 0
        If Htable(g).Rows(0).Cells(0).innerText = "Première adresse :" Then 'Si
            Compteur = g 'compteur = g
        End If
        g = g + 1
    Wend
    Set maTable_nom = Htable(Compteur)
    EtatOccupation = maTable_nom.Rows(3).Cells(1).innerText
    Au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    While Compteur = 0 'Tant que compteur = 0
        If Htable(g).Rows(0).Cells(0).innerText = "Première adresse :" Then 'Si
            Compteur = g 'compteur = g
        End If
        g = g + 1
    Wend
    Set maTable_nom = Htable(Compteur)
    EtatOccupation = maTable_nom.Rows(3).Cells(1).innerText

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

Discussions similaires

  1. Run time error 91 in vb:object variable or with block variable not set
    Par azzouz90 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/09/2011, 01h40
  2. Réponses: 4
    Dernier message: 14/04/2011, 16h32
  3. Erreur (object variable or with block variable not set), Aide ADODB
    Par Louis.Gruhn dans le forum Général VBA
    Réponses: 6
    Dernier message: 21/12/2010, 10h21
  4. Error 91 :object variable or with block variable not set
    Par Eausport dans le forum Installation, Déploiement et Sécurité
    Réponses: 13
    Dernier message: 06/06/2009, 04h09
  5. [VBA-E] Erreur "Object variable or With block variable not set"
    Par @lex(is) dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/06/2006, 12h39

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