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 :

Problème de pérénité de variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut Problème de pérénité de variable
    Bonjour,

    J'ai réalisé le code 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
    Sub MySub()
    Dim GenericElem As HTMLGenericElement
     
    Dim IE As New InternetExplorer
     
    Dim htmlTabElement() As IHTMLElement
    Dim PEE As IHTMLElement
     
     
    URL_fonds = "http://… "
        IE.navigate URL_fonds
        Pause (4)
     
        Set GenericElem = IEDoc.body.all("content")
        htmlTabElement = getElementsByClassName(GenericElem, "tab0", False)
        Set PEE = htmlTabElement(0)
     
    Set htmlTagCol = PEE.getElementsByTagName("a")
        Dim htmlTagCol_Croissance As HTMLGenericElement
        Set htmlTagCol_Croissance = htmlTagCol(3)
        Dim htmlTagCol_Ouvert As HTMLGenericElement
        Set htmlTagCol_Ouvert = htmlTagCol(6)
        Call Télécharge_CSV_Titre(htmlTagCol_Croissance)    
      ...
     
    End Sub
     
     
    Sub Télécharge_CSV_Titre(ByVal index As HTMLGenericElement)
        Dim htmlTagCol_Historique As IHTMLElementCollection
        Dim GenericElem As HTMLGenericElement
        Set GenericElem = index
        GenericElem.Click
        Pause (4)
       Set htmlTagCol_Historique = IEDoc.getElementsByTagName("a")
    ...
    End Sub

    A coup d'espions et de points d'arrêt je m'aperçois que, dès la ligne 34, mes variables htmlTagCol_Croissance et htmlTagCol_Ouvert perdent leur contenu.

    Or j'en ai besoin dans la suite du code de Mysub

    A quoi est-ce dû et comment y remédier ?

    Merci d'avance pour vos réponses .

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Par défaut
    et si tu inscrivait tes variable en Public?

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    J'ai essayé de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public htmlTagCol_Croissance As HTMLGenericElement
    Public htmlTagCol As IHTMLElementCollection
    en tête de module mais rien n'y fait.
    C'est vrai que je tatonne un peu parce que je me doute que la solution se trouve par là mais je ne maîtrise pas encore très bien les public/private/global que ce soit pour les variables ou les fonctions/procédures.

    En même temps, mes variables incriminées ne sont utilisées que dans MySub. Donc je ne vois pas pourquoi il faudrait les déclarer à un échelon au-dessus.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Par défaut
    alors pourquoi souhaite-tu les avoirs en ligne 34?

    Ce sujet intéresse, mais je suis vraiment pas assez calé sur ça!!

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    Comme expliqué, parce que j'en ai besoin dans la suite de MySub (symbolisée par les ... de la ligne 24)
    Or, je chope une erreur sur cette variable dans la suite de mon code ("Objet requis" sur une ligne ou j'utilise la variable htmlTagCol_Croissance à nouveau).

    C'est en cherchant moi-même avec des espions et points d'arrêt que j'ai identifié que le contenu de la variable, dont l'affectation se trouve en ligne 20, est perdu après le click de la ligne 33 (point d'arrêt sur la ligne 34), d'où la présentation de mon problème à partir de ce moment là.

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,

    est tu en as besoin pourquoi ?

    avec l'instruction Set tu affecte un pointeur vers un objet à ta variable, un "IHTMLElement" , ensuite si tu change l'affichage dans ta page html .. ( par le click) l'objet est détruit , et donc ta variable ne pointe plus sur rien ..

Discussions similaires

  1. Shell et perl problème d'interpolation de variable.
    Par Whaouu dans le forum Langage
    Réponses: 7
    Dernier message: 26/10/2005, 17h39
  2. [FLASH 8] Probléme chargement .swf et variable
    Par segphault dans le forum Flash
    Réponses: 1
    Dernier message: 24/10/2005, 13h18
  3. [EasyPHP] problème de visibilité des variable dans les includes
    Par d1g-2-d1g dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 23/10/2005, 01h55
  4. Réponses: 1
    Dernier message: 27/07/2005, 17h08
  5. [XSL]Problème de portée des variables
    Par djulesp dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/09/2004, 10h34

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