Transfert de données Excel WEB - VB/VBA/VBS - Programmation
Marsh Posté le 30-11-2016 à 23:35:37
Ca fait des années que j'ai pas fait de VB mais pourquoi le dernier WaitIE IE est-il en commentaires ?
Marsh Posté le 02-12-2016 à 10:06:04
Pas sûr qu'Excel soit l'outil le plus approprié pour faire ce genre de chose. Peut-être un outil de script genre Python, Perl ou, plus proche du VB, AutoIT
Marsh Posté le 02-12-2016 à 19:49:23
Bonjour,
pas de souci particulier en VBA … Tout dépend aussi du codage de la page Web …
Souvent le plus difficile n'étant pas de comprendre la page mais ce qui doit être réalisé !
Le B-A-BA : Interaction avec Internet Explorer via VBA Excel …
Voir les exemples sur les divers forums français comme étrangers.
Marsh Posté le 05-12-2016 à 15:18:23
erwan83 a écrit : Ca fait des années que j'ai pas fait de VB mais pourquoi le dernier WaitIE IE est-il en commentaires ? |
en fait la fin est en commentaire car c'est là que je bloque
Marsh Posté le 05-12-2016 à 15:19:17
Marc L a écrit : |
j'avais bien vu ce post et bien d'autre mais je ne vois toujours pas le souci de mon code
Marsh Posté le 06-12-2016 à 13:07:27
Déjà on attend toujours une explication claire et exhaustive du problème …
Marsh Posté le 06-12-2016 à 16:30:19
Je cherche simplement à régler la macro pour :
Effectuer l'opération de collage de données dans le champ cible,
appuyer sur le bouton "UPDATE"
Appuyer sur le bouton "SAVE"
Marsh Posté le 07-12-2016 à 15:34:25
Aucun de ces boutons n'apparait dans le lien plus haut !
Sans une explication digne de ce nom, aucune aide possible …
Marsh Posté le 08-12-2016 à 14:35:28
Bonjour,
j'essaie de simplifier :
Je cherche à effectuer un copier/coller d'une plage de données, mettre à jour et sauvegarder mon entrée d'adresses.
mes données : de B10 à E15 de la feuil1 d'un classeur
ADRESSE CODE POSTAL VILLE POSITION
1, RUE VICTOR HUGO 29100 DOUARNENEZ A - 024
72 RUE DU TREIZ 29100 DOUARNENEZ A - 022
15, RUE GABRIEL CASTREC 29100 DOUARNENEZ A - 013
12 IMPASSE CHARCOT 29100 DOUARNENEZ A - 030
la page :[url] https://fr.batchgeo.com/map/edit/?m [...] fd31dac8cd
[/url]
la zone cible est la zone à cliquer dont le code est :
</div><!--/inline_save-->
<div class="fieldset">
<hr />
<h2>Edit Map Data</h2>
<p>Copy the data below into your spreadsheet to make edits,<br /> or if you still have the source spreadsheet around you can edit that and <span class="edit-method">paste it in</span> here when you are done.</p>
<div id="sourceWrap"><textarea id="sourceData" wrap="off" rows="5" cols="80" onclick="this.select()" title="click, then copy/paste to/from spreadsheet" spellcheck="false" autocomplete="off"></textarea></div>
je souhaite ensuite cliquer sur le bouton "Update Map" pour actualiser ma carte :
<p></p>
<button id="validate_button" value="" class="button white buttonmedium">Validate & Set Options</button> or
<button id="mapnow_button" class="button green buttonmedium">Update Map</button>
<span id="validate_status" class="status"> Done: <span id="num_of_columns"></span> columns, <span id="num_of_rows"></span> rows - scroll down to Validate & Set Options</span>
</div><!--/fieldset -->
et enfin je souhaite sauvegarder en cliquant sur le bouton "save" :
</div>
</div>
<p id="save" class="center" style="margin-top: 20px; margin-bottom:0px;">
<button onClick="window.location = '/map/6317fd5c43a03d3b55d49c39b109cd49'" type="button" class="button white">Cancel</button>
<button onclick="map_delete()" class="button red">Delete</button>
<input type="submit" value="Save" class="button green" />
</p>
</div>
Mon code est le suivant :
Code :
|
Pour le moment, l'ouverture et chargement se fait, la sélection de la zone des données et le collage des données aussi (visible pendant l'exécution), mais l'update ne fonctionne pas et je n'ai pas encore pointé comment appuyer sur le bouton "Save".
Est-ce plus claires comme explications ?
Marsh Posté le 08-12-2016 à 19:21:59
Maintenant avec le bon lien …
Sinon ton code de mon côté ne fonctionne pas : pas de click, pas de Ctrl V;
seul le Update est passé ! Maintenant il n'y a plus rien dans le Map Data …
Je ne suis pas étonné car c'est un classique en pilotant un navigateur
car d'une configuration à une autre (versions navigateur et Windows) il peut y avoir un comportement différent …
J'avais un code fonctionnant sous Seven & IE9, sur un autre ordinateur sous Seven & IE10 il ne fonctionnait pas du tout
mais se déroulait très bien sous Windows 8 & IE10 !
Si tu lis bien le tutoriel en lien dans un de mes précédents messages, ton WaitIE ne sert qu'à l'ouverture initiale de la page !
Donc lors d'une mise à jour de la page, il ne fonctionne pas,
la raison pour laquelle ton code passe aussi à travers le bouton Save car tu n'es pas synchronisé avec la page !
Donc l'attente ne se fait pas au niveau d'IE mais au niveau du Document d'IE, voir l'exemple du tutoriel.
Sinon calculer le temps nécessaire après chaque click agrémenté d'une marge et
utiliser un Wait (VBA) ou un Sleep (API Windows) avant de poursuivre …
Marsh Posté le 09-12-2016 à 09:40:32
Bonjour, code modifié sur l'action des boutons, ça marche !
Code :
|
Il me reste à régler le temps d'action entre collage et Update. En effet, pour moi, je vois l'effet du pointage, je vois le collage, mais les données ne sont pas "gardées", l'actualisation et la sauvegarde sont par contre effective.
Me faudrait-il utiliser un "activate" ? ou peut-être jouer avec le presse-papier ?
Marsh Posté le 09-12-2016 à 11:28:07
Je pense qu'avec AutoIt, il y aurait peut-être moins de soucis de pilotage du navigateur...
Marsh Posté le 09-12-2016 à 12:12:04
rufo a écrit : Je pense qu'avec AutoIt, il y aurait peut-être moins de soucis de pilotage du navigateur... |
peut être mais cette fonctionnalité est juste une partie d'un plus gros fichier excel... donc je cherche une réponse excel + VBA
Marsh Posté le 09-12-2016 à 14:18:13
Maintenant mon code (~ 20 lignes) passe bien mais avant de pouvoir le partager, afin de le fignoler je suis bloqué
par le message "Data load error" à l'ouverture de la page, certainement suite à un précédent Save …
Du reste comment remet-on la page dans l'état initial ?
Sinon une remarque oubliée pour ton avant dernier code mais valable aussi pour le dernier :
tu mélanges déclaration anticipée des objets (référence pour IE & IE.Document) et déclaration tardive (CreateObject) …
Marsh Posté le 09-12-2016 à 15:13:26
Marc L a écrit : |
"Data load error" , je n'ai pas eu ce type de message, mais j'ai remis les données en relançant le lient et en collant les données "de test".
Pour la deuxième partie de la réponse, je suis au regret de dire que c'est du chinois, mais je note qu'il faut me documenter sur les déclarations
Marsh Posté le 09-12-2016 à 16:02:06
juju29kam a écrit : |
Je comprends. Cela dit, rien ne t'empêche de faire une partie en AutoIt (on peut compiler le script en .exe) et appeler l'exe depuis ton fichier excel. Après, je comprends que tu préfères un truc "tout en un".
Marsh Posté le 09-12-2016 à 16:26:18
Entre temps j'ai contourné le message d'erreur en ajoutant un test (ligne n°11) :
Code :
|
Pas de déclaration d'objet donc nul besoin d'activer de référence !
Sans la pause de la ligne n°9 je peux avoir un "loupé". J'ai ajouté une marge de 100ms, tout dépend de la configuration …
Marsh Posté le 09-12-2016 à 18:21:57
Marc L a écrit : Souvent le plus difficile n'étant pas de comprendre la page mais ce qui doit être réalisé ! |
En observant bien le comportement de la page avant / après un évènement comme un click sur un bouton par exemple,
le code est alors simplifié et son exécution fluidifiée …
Marsh Posté le 04-08-2020 à 10:03:51
Bonjour, J'ai découvert récemment Batchgeo pour la cartographie et je souhaite l'utiliser. je suis tombée sur ces échanges qui datent de 2016 et je vous en remercie toutes et tous car c'était très utile pour moi.
En revanche, je souhaite changer les options (avec une macro) avant de lancer la cartographie et ceci se fasse normalement en cliquant sur le bouton "valider et changer les options".
J'ai utilisé vos programmes et j'ai mis "Validate_button" au lieu de "Mapnow_button" mais ça ne marche pas .
voici mon programme:
Private Declare Sub Sleep Lib "kernel32" (ByVal Milliseconds& )
Sub Demo_option()
Feuil2.[B2].CurrentRegion.Copy
With CreateObject("InternetExplorer.Application" )
.navigate "https://fr.batchgeo.com/map/edit/?map_id=7873360&d=98f75b7f388f15a6bb2d48fd31dac8cd"
.Visible = True
While .Busy Or .readyState < 4: DoEvents: Wend
Sleep 600
With .document
If IsObject(.all("cboxLoadedContent" )) Then With .all.cboxLoadedContent.all: .Item(.Length - 1).Click: End With
With .all.sourceWrap.Children(0): .Focus: .Click: End With
CreateObject("WScript.Shell" ).SendKeys "^v"
' With .getElementsById("validate_button" ): .Focus: .Click: End With
'With .all.validate_button: .Focus: .Click: End With
'With .all("validate_button" ): .Focus: .Click: End With
End Sub
J'avoue que je suis débutante en VBA. Ce que j'ai en commentaire, c'est les trois commandes que j'ai testé
Quelqu'un avait déjà testé de changer les options? auriez vous une idée SVP?
Je vous remercie d'avance.
Marsh Posté le 04-08-2020 à 11:18:01
Question bête : pourquoi s'embêter à passer par un site alors qu'il est si simple de générer un KML pour Google Earth. Ca serait pas plus simple ?
Par ailleurs, si ton besoin est de mettre une carte sur un site, faire une google map est aujourd'hui très facile
Marsh Posté le 04-08-2020 à 11:51:14
rufo a écrit : Question bête : pourquoi s'embêter à passer par un site alors qu'il est si simple de générer un KML pour Google Earth. Ca serait pas plus simple ? |
Merci pour ton retour. En fait mon besoin c'est d'afficher des données sur une carte.
J'ai remarqué que batchgeo offre la possibilité des mettre des pointeurs sur une carte (selon les adresses qu'on lui donne), et en cliquant sur ces pointeurs y a nos données qui s'affichent ==> C'est mon besoin
ce qui m'interesse, ce n'est pas de trouver des adresses mais d'afficher les informations qui correspondent à chaque adresse (question de mise en forme graphique). J’espère que c' est clair
Marsh Posté le 04-08-2020 à 12:05:57
Oui, c'était bien clair. Et je disais que faire une page web contenant une Google map avec tes données, c'est simple.
Si tu n'as pas besoin que la carte soit sur un site web mais que Google Earth suffit à voir tes données, alors faire un script qui te génère un fichier kml visualisable dans Google Earth sera encore plus simple.
Marsh Posté le 04-08-2020 à 12:22:20
rufo a écrit : Oui, c'était bien clair. Et je disais que faire une page web contenant une Google map avec tes données, c'est simple. |
Bah super merci pour ces renseignements... t'aurais par hasard un exemple de ceci pour que je m'en inspire . sinon je vais me débrouiller
En fait je ne suis pas du tout informaticienne ni développeuse.
Thanks again
Marsh Posté le 04-08-2020 à 13:31:00
Je n'ai que des exemples avec des données non publiques.
Mais la doc de Google est pas mal faite pour le Kml et tu trouveras beaucoup de tutos pours faire une google map (il te faudra créer une compte pour avoir une clé d'API par contre mais normalement, c'est gratuit).
Marsh Posté le 04-08-2020 à 13:35:34
Tiens, un ex de structure de KML pour Google Earth :
Code :
|
Marsh Posté le 04-08-2020 à 15:22:40
rufo a écrit : Tiens, un ex de structure de KML pour Google Earth :
|
Merci
Marsh Posté le 30-11-2016 à 16:06:32
Bonjour à tous,
il y a quelques temps, j'ai découvert le site http://fr.batchgeo.com/ qui permet de placer sur une carte toute une liste de lieux divers à partir d'un tableau.
je souhaite, en VBA, créer une petite fonction me permettant, sans intervention manuelle.
1. ouvrir le site
2. transférer mes données
3. sauvegarder
Malgré mes recherches, ma macro ne fonctionne pas et je pense que c'est juste un détail mais il m'échappe...
Si une âme généreuse avait la possibilité de jeter un coup d'œil et de m'éclairer... ce serait super.
Merci d'avance,
le lien : En B1 d'une feuil1 (excel)
https://fr.batchgeo.com/map/edit/?m [...] 3dbf811c82
les données : en colonne B à E, ligne 10 pour commencer de la même feuil1
ADRESSE CODE POSTAL VILLE POSITION
1, RUE VICTOR HUGO 29100 DOUARNENEZ A - 024
72 RUE DU TREIZ 29100 DOUARNENEZ A - 022
15, RUE GABRIEL CASTREC 29100 DOUARNENEZ A - 013
12 IMPASSE CHARCOT 29100 DOUARNENEZ A - 030
le code:
Message édité par juju29kam le 09-12-2016 à 18:15:59