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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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*"

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