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:
<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 :
<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
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
Partager