Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA, winsock et serveur WEB

44 réponses
Avatar
Christian Herbé
Bonsoir

Ayant un peu de temps ces jours-ci, et surtout profitant de l'absence de
JPS qui écume certainement les foires aux vins, je reviens sur une
question de Misange qui me serait également utile.

Le but est de mettre à jour une base de données MySQL sur un serveur WEB
depuis Excel, si possible en une seule macro.
Il faut:
enregistrer le fichier en CSV,
le transférer sur le serveur WEB,
que le serveur exécute un script PHP pour modifier la base de données.

Le fichier CSV peut certainement être expédié via VBA-Winsock; je n'ai
jamais fait mais ça doit être réalisable.

Ensuite, il faudrait simuler le chargement d'une page WEB contenant le
script PHP nécessaire à la mise à jour de la base de données (le script
PHP, je sais faire)

Ma question est:
avec VBA-Winsock, comment simuler le chargement de la page WEB c'est à
dire faire en sorte que le serveur WEB reçoive une requête HTTP et ne
l'affiche nul part ; le but étant d'exécuter le script contenu dans la
page WEB?
Accessoirement, si quelqu'un a le code VBA-Winsock-FTP, ça me simplifira
la vie !

Merci.

--

10 réponses

1 2 3 4 5
Avatar
Michel Gaboly
Bonsoir,

Appréciation erronée : jps vient de passer ;-)))


Bonsoir

Ayant un peu de temps ces jours-ci, et surtout profitant de l'absence de
JPS qui écume certainement les foires aux vins, je reviens sur une
question de Misange qui me serait également utile.

Le but est de mettre à jour une base de données MySQL sur un serveur WEB
depuis Excel, si possible en une seule macro.
Il faut:
enregistrer le fichier en CSV,
le transférer sur le serveur WEB,
que le serveur exécute un script PHP pour modifier la base de données.

Le fichier CSV peut certainement être expédié via VBA-Winsock; je n'ai
jamais fait mais ça doit être réalisable.

Ensuite, il faudrait simuler le chargement d'une page WEB contenant le
script PHP nécessaire à la mise à jour de la base de données (le script
PHP, je sais faire)

Ma question est:
avec VBA-Winsock, comment simuler le chargement de la page WEB c'est à
dire faire en sorte que le serveur WEB reçoive une requête HTTP et ne
l'affiche nul part ; le but étant d'exécuter le script contenu dans la
page WEB?
Accessoirement, si quelqu'un a le code VBA-Winsock-FTP, ça me simplifira
la vie !

Merci.

--


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
sabatier
le lorrain est jaloux, m'sieurs dames...et puis un maire ne devrait pas
avoir de temps, pour lui s'entend...
passez-moi sarko...
jps

Christian Herbé a écrit:
Bonsoir

Ayant un peu de temps ces jours-ci, et surtout profitant de l'absence de
JPS qui écume certainement les foires aux vins,


Avatar
sabatier
et tel le furet, il repassera par là...
bonne nuit les félons...
jps

Michel Gaboly a écrit:
Bonsoir,

Appréciation erronée : jps vient de passer ;-)))





Avatar
Misange
Christian Herbé wrote:

Le but est de mettre à jour une base de données MySQL sur un serveur WEB
depuis Excel, si possible en une seule macro.
Il faut:
enregistrer le fichier en CSV,
le transférer sur le serveur WEB,
que le serveur exécute un script PHP pour modifier la base de données.



Ah que ce mail me va droit au coeur ! j'en causais justement hier soir à
mais je crois que j'ai même pas réussi à lui faire comprendre ce que
je cherche à faire. ! Pourtant je suis sure qu'il pourrait avoir de
bonnes idées en la matière. En tous cas, je suis toujours très très
intéressée.

En ce qui me concerne voici la situation que je cherche à résoudre :
j'ai sur mon PC un classeur excel comportant par exemple la liste des
classeurs proposés en téléchargement sur excelabo.
Quand quelqu'un comme Michel Holderitz me propose un classeur (je dis ça
parce que je me rends compte que justement j'ai oublié de mettre celui
qu'il m'a proposé en ligne hier... ), j'ouvre mon classeur excel et je
lance un userform "nouveau classeur" qui me permet de renseigner les
différentes rubriques nécessaires.
Par une subtile macro liée à un bouton d'un bleu du plus bel effet à mon
gout, je génère à partir de ce classeur une feuille "nouveau.sql"
contenant les instructions pour insérer ces données dans la base mysql
qui est hébergée chez online.
Ensuite et c'est à partir de là que je voudrais automatiser les choses,
j'ouvre mon fureteur préféré, j'ouvre la page php-myadmin d'excelabo qui
n'est jamais qu'une interface web avec ma base mysql, je sélectionne
l'emplacement de mon fichier nouveau.sql sur mon disque dur et je lui
demande d'exécuter la requête. Les nouveaux enregistrements sont alors
ajoutés à la base existante.
Ce qui serait vraiment mais vraiment génial ce serait de pouvoir lancer
toutes ces opérations depuis un bouton placé dans mon classeur excel.

Toutes idées, surtout géniales très bienvenues :-)
Et je suis ravie de voir que je ne suis pas la seule à être intéressée :-)
--

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

Avatar
Christian Herbé


Ah que ce mail me va droit au coeur !


qu'est-ce que tu crois; je garde en mémoire les demandes quand je pense
qu'une solution est possible tout en n'ayant pas la réponse sous le coude.
Je pense également à ta question sur les solutions graphiques à trouver.


Ce qui serait vraiment mais vraiment génial ce serait de pouvoir lancer
toutes ces opérations depuis un bouton placé dans mon classeur excel.


Je ne vois pas vraiment d'autre moyen que l'usage de Winsock mais je
viens de me rendre compte qu'il n'est pas dispo en VBA. Il faut
registrer l'activeX à l'aide de VB.
Je reflechis tout en écrivant ce qui me fait penser à une autre piste à
l'aide des commandes shell:
FTP depuis DOS puis exécuter le navigateur soit en shell en mode réduit
avec l'adresse de la page web en option,
soit le piloter avec des commandes send ... mais ce n'est pas très
propre. A vérifier !

Avatar
Misange
Christian Herbé wrote:

qu'est-ce que tu crois; je garde en mémoire les demandes quand je pense
qu'une solution est possible tout en n'ayant pas la réponse sous le coude.
;-)



FTP depuis DOS puis exécuter le navigateur soit en shell en mode réduit
avec l'adresse de la page web en option,
soit le piloter avec des commandes send ... mais ce n'est pas très
propre. A vérifier !


perso je n'utilise pas de ftp... Je n'ai pas accès par ftp en tous cas
au répertoire dans lequel est situé ma base mysql sur online. Je peux y
accéder par php depuis le navigateur mais pas autrement.

--

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

Avatar
Christian Herbé


perso je n'utilise pas de ftp... Je peux y
accéder par php depuis le navigateur mais pas autrement.


Tu es sure ?
Je viens de faire un test sur free:
il faut créer le fichier toto.txt contenant les commandes FTP:

open ftpperso.free.fr
user mon_login
mon_mot_de_passe
lcd c:sous_dossier_sur_la_machine_locale
cd sous_dossier_sur_le_serveur
put essai.txt
by

Depuis la fenêtre DOS , ou depuis VBA par shell:
ftp -i -n -v -s:toto.txt

ET CA MARCHE !

Avatar
Misange
Christian Herbé wrote:


perso je n'utilise pas de ftp... Je peux y accéder par php depuis le
navigateur mais pas autrement.



Tu es sure ?
Je viens de faire un test sur free:
il faut créer le fichier toto.txt contenant les commandes FTP:

open ftpperso.free.fr
user mon_login
mon_mot_de_passe
lcd c:sous_dossier_sur_la_machine_locale
cd sous_dossier_sur_le_serveur
put essai.txt
by

Depuis la fenêtre DOS , ou depuis VBA par shell:
ftp -i -n -v -s:toto.txt

ET CA MARCHE !



Mettre un fichier dans le dossier principal oui, ca je veux bien, mais

le dossier mysql n'est pas accessible par FTP. Avec FTP expert par ex je
vois dans online un dossier www et un dossier mysql mais si je clique
sur ce dernier, il ne s'ouvre pas...
Par ailleurs, même s'il s'ouvrait, le pb n'est pas de déposer un fichier
sur le serveur mais bien de faire ingurgiter à la base mysql les infos
qu'il contient non ?
Crois tu que ce soit plus facile de faire cela si le fichier est sur le
serveur ? Si oui tu as déjà fait la première étape... Reste la suite.
Perso je ne suis pas du tout convaincue qu'il y a ait besoin de mettre
le fichier sur le serveur. Aujourd'hui en tous cas,ce n'est pas de cette
façon que je procède. Oui je sais la critique est facile et l'art...
tout un art :-) Tous mes encouragements t'accompagnent, comme dit Peter,
j'ai atteint les limites de mon incompétence maximale (et donc je
devrais être chef)

--

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta


Avatar
popi
Salut Misange et Christian,
enregistrer le fichier en CSV,
le transférer sur le serveur WEB,
que le serveur exécute un script PHP pour modifier la base de données.


Vba permet d'ouvrir une url avec IE (par ex), page web donc, codée en php
qui upload le fichier et qui le traite pour une mise à jour d'une table, çà
le ferait ?

@+ popi

Avatar
FxM
Bonjour,

FTP expert : 29,95 eur
http://www.visic.com/ftpexpert/

CuteFTP : 39,99 USD
http://www.cuteftp.com/store/purchase.asp?product=cuteftp

Filezilla : 0 eur
http://sourceforge.net/projects/filezilla/

@+
FxM
1 2 3 4 5