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 :

index en dehors des limites du tableau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Par défaut index en dehors des limites du tableau
    Bonjour

    j'ai une erreur lors de l'exécution de mon code VBA qui va chercher des informations en lecture seulement sur l'intranet de mon entreprise.

    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
    Public Sub récupère_données()
    Dim driver As New WebDriver
    Dim mysheet As Worksheet
     
    driver.Start "firefox"                      ' démarrage de firefox
    driver.Get "http://..."                    'connexion à l'intranet de l'entreprise
    driver.Wait 200                                                                        ' on attend que la page se charge totalement
    driver.FindElementById("spanLinkActiver").Click                               'clique sur le bouton de confirmation
    driver.Wait 2000                                                                        ' on attend que la page se charge totalement
     
    'récupération des valeurs de l'onglet 'identification'
    nom = driver.FindElementsByClass("borderless").Item(3).FindElementsByCss("td").Item(12).Text
    contexte = driver.FindElementsByClass("borderless").Item(1).FindElementsByCss("td").Item(3).Text
    contact = driver.FindElementsByClass("borderless").Item(3).FindElementsByCss("td").Item(3).Text
     
    etc....
    end sub
    le code de la page HTML est globalement de cette forme (en élaguant pour que ce soit plus clair) :
    Code html : 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
    <div class=”col-xs-12 col-sm-6>
       <div xlass=”shade”>
         <table class = “table borderless”>         'sachant qu'il y a 3   <table class = “table borderless”> au total dans la page web.
           <tbody>
    	<tr>
    <th> Nom du projet1</th>
    <td> projet1</td>
    </tr>
    	<tr>
    <th> Nom du projet2</th>
    <td> projet2</td>
    </tr>
    ……
    	<tr>
    <th> Nom du projet12</th>
    <td> projet12</td>
    </tr>

    Mon problème est le suivant :
    quand j'exécute le code (F5) je tombe sur l'erreur suivante : Erreur d’exécution ‘-2146233080 (80131508)’ : l’index se trouve en dehors des limites du tableau
    Et quand je passe en mode débuggage avec exécution en pas à pas (F8) ca fonctionne et je récupère bien les bonnes valeurs .... Pourquoi ? comment résoudre le pb d'exécution normal (F5) ?

    si au passage quelqu'un sait comment ouvrir firefox sous forme d'un seul onglet au lieu de 2 ca serait un plus intéressant pour moi
    merci de votre aide.

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    si ça passe bien en pas à pas et pas en exécution globale, je pencherai pour une temporisation à faire dans ton programme ... temporisation qui s'effectue implicitement en pas à pas car c'est toi qui lance les lignes une par une, avec quelques (milli)secondes d'écart entre chaque instruction

    ton programme va peut-être plus vite à enchainer les étapes (requête, récupération, utilisation) que la clôture complète de chaque étape (notamment la récupération des éléments)

  3. #3
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour !

    Citation Envoyé par metmtl Voir le message
    Pourquoi ?
    Exemple typique d'une mauvaise observation du fonctionnement d'une page Web : le code n'est pas synchronisé !
    Pour ceux n'y comprenant rien, le plus simple est d'insérer une pause avec suffisamment de marge.
    Pour les autres utiliser les propriétés du navigateur ou de la page (Document)
    ou encore juste détecter si un objet particulier est présent dans la page …

    Comme il n'y a aucune indication de l'outil utilisé - code non standard - je t'invite donc à poser la question sur un forum dédié !

    Sinon en standard Microsoft, voir le tutoriel Interaction avec Internet Explorer via VBA Excel

    Sans compter les nombreux exemples sur ce sujet dans les discussions de ce forum
    et les contributions dans le sous-forum Contribuez du forum Excel !

    _________________________________________________________________________________________________________
    Je suis Paris, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Par défaut
    merci de vos réponses.

    Oui Marc, j'ai construit mon code à partir de l'excellent tutoriel Interaction avec Internet Explorer via VBA Excel …
    Effectivement Joe, c'était tout bête il suffisait de mettre une temporisation... je n'en avais pas mis suffisamment ...

    Reste plus pour moi qu'à optimiser l'ouverture du nombre de fenêtres (actuellement 2 en passant par l'ouverture de www.ietab.net) dans Firefox :
    driver.Start "firefox" ' démarrage de firefox
    driver.Get "http://..." 'connexion à l'intranet de l'entreprise

    si vous avez une idée pour résoudre ca ce serait top ! merci d'avance

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Aucune idée pour deux raisons :

    • pas d'accès à la page …

    • Aucune information de l'outil utilisé !    Comme ce n'est pas IE difficile de répondre …

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Par défaut
    en fait le problème apparait avec n'importe quelle page.
    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private Sub acc_FF()
     
    driver.Start "firefox"                            ' démarrage de firefox
    driver.Get "http://www.google.fr"
    Pour tester ceci dans une fonction n'oubliez pas d'ajouter dans Outils/Références "selenium Type library"

    dès la 1ère ligne, firefox s'ouvre avec 2 onglets en passant d'abord par la page www.ietab.net/ie-tab-2-introduction puis passe sur google à l'exécution de la 2ème ligne. L'idée serait de n'ouvrir qu'un seul ouglet directement avec la page www.google.fr voulue sans page intermédiaire..

    une idée de comment faire ?

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Cette référence n'existant pas dans une installation standard d'Excel, et pour cause !

    Si tu veux continuer avec cet outil, va donc poser la question dans un forum dédié à cet outil …

Discussions similaires

  1. [Débutant] L'index est en dehors des limites du tableau
    Par Romain35 dans le forum VB.NET
    Réponses: 10
    Dernier message: 03/04/2012, 11h03
  2. Réponses: 4
    Dernier message: 15/11/2011, 09h16
  3. L'index se trouve en dehors des limites du tableau.
    Par kirby33380 dans le forum C#
    Réponses: 3
    Dernier message: 01/04/2010, 11h45
  4. Erreur : "L'index se trouve en dehors des limites du tableau"
    Par dotnetnuke dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 17/07/2009, 17h36
  5. L'index se trouve en dehors des limites du tableau
    Par LaDeveloppeuse dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/10/2007, 21h11

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