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 :

Vba pour manipuler AngularJ


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 5
    Par défaut Vba pour manipuler AngularJ
    Hello, je fais une appli qui remplie les données venant d'une page xls vers un site web qui utilise angularj.
    les cases à remplir dans le web sont générées d'une matière automatique ce qui rends compliqués leurs utilisation ID ou Classname.

    code source de la page web pour la 1ère case à remplir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div tabindex="-1" class="ui-grid-cell ng-scope ui-grid-coluiGrid-02O5 cell editable" id="1554797102611-5-uiGrid-02O5-cell" role="gridcell" aria-selected="false" ng-class="{ 'ui-grid-row-header-cell': col.isRowHeader }" ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.uid" ui-grid-cell="" ui-grid-one-bind-id-grid="rowRenderIndex + '-' + col.uid + '-cell'"><div class="ui-grid-cell-contents ng-binding ng-scope">18</div></div>
    la même case après une actualisation de la page web :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div tabindex="-1" class="ui-grid-cell ng-scope ui-grid-coluiGrid-02XC cell editable" id="1554799061475-1-uiGrid-02XC-cell" role="gridcell" aria-selected="false" ng-class="{ 'ui-grid-row-header-cell': col.isRowHeader }" ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.uid" ui-grid-cell="" ui-grid-one-bind-id-grid="rowRenderIndex + '-' + col.uid + '-cell'"><div class="ui-grid-cell-contents ng-binding ng-scope">18</div></div>
    les ID et Class ont changés

    mon code VBA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Set objHtml = New HTMLDocument
    Set objHtml = internetExplorer.document
     
    Set modric = objHtml.getElementsByClassName("ui-grid-cell ng-scope ui-grid-coluiGrid-02XC cell editable")
    If modric.Length = 0 Then
     For q = 0 To modric.Length - 1
          modric(q).Focus
          modric(q).Click
          modric(q).innerText = Workbooks("remplir").Worksheets("sheet1").Range("F1").Offset(n + 1, 0).Value
    Next q
    End If
    Ca marche pas vu que la Classname change à chaque actualisation. comment je peux m'y prendre pour manipuler ce tableau?

    merci d'avance de votre aide

    c'est à ca que ressemble le tableau

    Nom : tab.PNG
Affichages : 151
Taille : 7,9 Ko

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Sans garantie, essaies d'utiliser la collection
    .getElementsByTagName

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 5
    Par défaut
    Citation Envoyé par mercatog Voir le message
    Sans garantie, essaies d'utiliser la collection
    .getElementsByTagName
    Salut Mercatog,
    Et thanks pour ton aide .
    J'ai bien essayé d'utiliser le .getElementsByTagName mais ça m'a sorti un truc bizarre. le code à carrément supprimer le tableau.

    j'ai utilisé ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set messi2 = objHtml.getElementsByTagName("div")
    'If messi2.Length <> 0 Then
    For i = 0 To messi2.Length - 1
        If messi2(i).getAttribute("tabindex") <> "" Then
            messi2(i).innerText = 45
            Next
        End if
    Il faudrait peut être que j'utilise une autre procédure?

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Essaies de voir d'abord ce que te donne et que tu pointe au bon endroit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Set Grid = objHtml.getElementsByTagName("div")
    For i = 0 To Grid.Length - 1
        If Grid(i).getAttribute("tabindex") = "-1" Then
            Debug.Print i &" ====>   "& Grid(i).innertext
        Next i
    End If

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 5
    Par défaut
    Thanks pour ton aide Mercatog, mais sans issue. ma page n'a mm pas réagi.
    En plus le plus dur est qu'il y a 2 tableaux dans la page qui portent un div avec les mêmes attributs leur seule différence se situe au niveau des ID et Classname.
    pour le className que je veux utiliser, à chaque actualisation, il n'y a que les 4 derniers chiffres qui changent, le préfixe reste le même.
    Est-ce que je peux utiliser juste ce préfixe pour localiser ma case??

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    A tout hasard, Essaie getattributes("ClassName") like "ton debut*"

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 5
    Par défaut
    Citation Envoyé par mercatog Voir le message
    A tout hasard, Essaie getattributes("ClassName") like "ton debut*"
    Hello Mercatog,
    J'ai essayé mais le truc ne l'a pas reconnu. le seul blème c'est juste ce ID et ce classname qui changent. ça me tue. et je ne sais quoi faire.

Discussions similaires

  1. Réponses: 7
    Dernier message: 31/08/2018, 17h11
  2. Réponses: 10
    Dernier message: 07/05/2016, 00h38
  3. VBA ou VB.NET pour manipuler fichiers Office
    Par Meduse dans le forum VB.NET
    Réponses: 0
    Dernier message: 05/04/2011, 12h44
  4. Quel langage utilisé pour manipuler le web ?
    Par KORTA dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 14/07/2004, 21h03
  5. Réponses: 2
    Dernier message: 18/01/2003, 17h06

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