OVH Cloud OVH Cloud

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
Misange
REbonsoir,
J'ai quelques soucis malheureusement.
Reprenons :
1)J'ai créé un fichier test.sql (que j'ai testé par la méthode classique
: insertion dans la base test par php-myadmin avec le fichier resté en
local sur mon PC, il fonctionne très bien)
2) j'ai créé le fichier new.php. J'ai du faire quelques adaptations pour
online, manifestement, dans cette config il vaut mieux indiquer le
chemin relatif plutôt que l'absolu pour le fichier test.sql sinon j'ai
une bordée d'injures. Je mets donc le chemin relatif (les deux fichiers
sont dans le même dossier). Sans même aller plus loin là j'ai déjà des
ennuis : si depuis IE je lance new.php, il me marque gentiment
traitement terminé mais ne traite pas du tout le fichier test.sql que
j'ai pourtant mis sur le serveur. Une idée ?

Deuxième souci : depuis excel tout semble se passer très bien avec la
macro, la fenêtre dos s'ouvre et se referme (au début j'avais fait une
c..ie du coup j'ai pu voir ce qui se passe quand tout semble OK), IE
s'ouvre et se ferme mais oili oualou, le fichier test.sql n'est pas
transféré.
Une deuxième idée ?

désolée... Je fais pourtant de mon mieux ! :-)

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

popi wrote:
Salut Misange,

Alors comme je sens totalement dépassée, très paresseusement, je vais
attendre que tu me fasse un résumé de ce qui faut faire. Je lis des
trucs à droite à gauche mais je crois que je perds mon temps, mon
neurone ne connecte pas là où il faut je le crains.



voilà, après tests çà fonctionne (chez moi)

Sub alimente_mysql()
Shell "ftp -i -n -v -s:toto.txt" ' Christian HERBÉ
Application.Wait (Now + TimeValue("0:00:10"))

Dim IE As Object
Set IE = CreateObject("internetexplorer.application")
IE.Navigate ("http://www.popivog.com/mpfe/New.php")
IE.Visible = True 'ou False

Do While IE.readystate <> 4 ' Michel PIERRON
Loop
IE.Quit

MsgBox "Mise à jour terminée !"

End Sub
____________________________________________

Le fichier toto.txt : ' Christian HERBÉ

open ftp.popivog.com
user ton_user
ton_mot_de_passe
lcd D:Program FilesEasyPHPwwwuplod + requete 'chemin local
cd www/mpfe/test/ 'chemin sur le serveur
put fichier.sql 'nom local du fichier à uploader
by
_____________________________________________
Le fichier New.php : 'Christian HERBÉ + popi

<?php

$bdd = mysql_connect('host','user','mot_de_passe');
mysql_select_db('nom_de_la_table',$bdd);

$fichier=fopen("test/fichier.sql","r+"); 'chemin sur le serveur
while(!feof($fichier))
{
mysql_query(fgets($fichier,128));
}
fclose($fichier);
echo "Traitement terminé";

?>
_____________________________________________
Le fichier .sql :

INSERT INTO `vaches` VALUES ("14", "olivier", "bernard")
INSERT INTO `vaches` VALUES ("15", "olivier1", "bernard1")
INSERT INTO `vaches` VALUES ("16", "olivier2", "bernard2")
INSERT INTO `vaches` VALUES ("17", "olivier3", "bernard3")
INSERT INTO `vaches` VALUES ("18", "olivier4", "bernard4")
UPDATE `vaches` SET `nom` = 'didier2' WHERE `num` = '16' AND `nom` > 'olivier2' AND `prenom` = 'bernard2' LIMIT 1
_____________________________________________

Je résume ;-)

Une fois ton fichier .sql généré, la macro "alimente_mysql" upload le
fichier,
Ouvre Internet Explorer et lance le script php "New.php" qui lui
va lire le fichier .sql ligne par ligne et va exécuter chaque requête
une après l'autre,
Le tout se ferme et te salue !!

Je vais manger et je reviens voir si c'est clair ;-)

@+ popi







Avatar
popi
Salut Misange,

2) j'ai créé le fichier new.php. J'ai du faire quelques adaptations
pour online, manifestement, dans cette config il vaut mieux indiquer
le chemin relatif plutôt que l'absolu pour le fichier test.sql sinon
j'ai une bordée d'injures. Je mets donc le chemin relatif (les deux
fichiers sont dans le même dossier). Sans même aller plus loin là
j'ai déjà des ennuis : si depuis IE je lance new.php, il me marque
gentiment traitement terminé mais ne traite pas du tout le fichier
test.sql que j'ai pourtant mis sur le serveur. Une idée ?

Deuxième souci : depuis excel tout semble se passer très bien avec la
macro, la fenêtre dos s'ouvre et se referme (au début j'avais fait une
c..ie du coup j'ai pu voir ce qui se passe quand tout semble OK), IE
s'ouvre et se ferme mais oili oualou, le fichier test.sql n'est pas
transféré.
Une deuxième idée ?

désolée... Je fais pourtant de mon mieux ! :-)


A mon avis un souci de chemin ou(et) de syntaxe, peux-tu tester déjà juste
le transfert ftp :

Shell "ftp -i -n -v -s:toto.txt"

et peux-tu nous montrer ton code ?

@ +

Avatar
Misange
Le toto.txt est devenu chez moi majsql.txt et comporte ceci:
open privftp.online.net
user
******
lcd D:Mes documentsExcelabomiseajour
cd /www/miseajour/
put test.sql
by

_____________________
le new.php

<?php
$bdd = mysql_connect('sql.excelabo.net','excelabo.net','§§§§§');
mysql_select_db('excelabo.net',$bdd);
$fichier=fopen("test.sql","r+");
while(!feof($fichier))
{
mysql_query(fgets($fichier,128));
}
fclose($fichier);
echo "Traitement terminé";
?>

__________________________________________________

et dans le classeur xl
Sub alimente_mysql()
Shell "ftp -i -n -v -s:majsql.txt" ' Christian HERBÉ
Application.Wait (Now + TimeValue("0:00:10"))

Dim IE As Object
Set IE = CreateObject("internetexplorer.application")
IE.Navigate ("http://www.excelabo.net/miseajour/new.php")
IE.Visible = True 'ou False

Do While IE.readystate <> 4 ' Michel PIERRON
Loop
IE.Quit

MsgBox "Mise à jour terminée !"

End Sub

_____________________

et enfin mon fichier test.sql

CREATE TABLE test (
id int(3) NOT NULL auto_increment,
titre varchar(35) default NULL,
nomauteur varchar(35) NOT NULL ,
PRIMARY KEY (id)
) TYPE=MyISAM;
#
# Contenu de la table `test`
#

INSERT INTO test VALUES (1,'jfa-rgbinteriorcolor', 'Aubert');
INSERT INTO test VALUES (2,'da-euromacro', 'Aubert');
INSERT INTO test VALUES (3,'jfa-boutonptionarametrable', 'Aubert');
INSERT INTO test VALUES (4,'db-euro', 'Bicking');

je vois pas ou est le pb !!!
je vais essayer sur le serveur de free pour voir si c'est une histoire
de config.



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


Shell "ftp -i -n -v -s:toto.txt"

et peux-tu nous montrer ton code ?

@ +




Avatar
popi
essaie en enlevant les ; en fin de chaque ligne du fichier sql
Avatar
Misange
pareil...

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


popi wrote:
essaie en enlevant les ; en fin de chaque ligne du fichier sql





Avatar
Misange
bon sur ce, je déclare que la suite peut attendre ! il est l'heure
d'aller rêver
je reprendrai cela à tête reposée plus tard (j'ose pas dire quand, la
semaine sera chargée...)
En tous cas c'est déjà génial de savoir que ça marche chez d'autres !
c'est plutôt encourageant ;-)
merci d'avoir passé tout ce temps et promis dès que ça fonctionne, j'en
fais profiter tout le monde.

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


popi wrote:
Salut Misange,


2) j'ai créé le fichier new.php. J'ai du faire quelques adaptations
pour online, manifestement, dans cette config il vaut mieux indiquer
le chemin relatif plutôt que l'absolu pour le fichier test.sql sinon
j'ai une bordée d'injures. Je mets donc le chemin relatif (les deux
fichiers sont dans le même dossier). Sans même aller plus loin là
j'ai déjà des ennuis : si depuis IE je lance new.php, il me marque
gentiment traitement terminé mais ne traite pas du tout le fichier
test.sql que j'ai pourtant mis sur le serveur. Une idée ?

Deuxième souci : depuis excel tout semble se passer très bien avec la
macro, la fenêtre dos s'ouvre et se referme (au début j'avais fait une
c..ie du coup j'ai pu voir ce qui se passe quand tout semble OK), IE
s'ouvre et se ferme mais oili oualou, le fichier test.sql n'est pas
transféré.
Une deuxième idée ?

désolée... Je fais pourtant de mon mieux ! :-)



A mon avis un souci de chemin ou(et) de syntaxe, peux-tu tester déjà juste
le transfert ftp :

Shell "ftp -i -n -v -s:toto.txt"

et peux-tu nous montrer ton code ?

@ +





Avatar
popi
Salut Misange,
bon sur ce, je déclare que la suite peut attendre ! il est l'heure
d'aller rêver
après de multiples tests, la création de table ne fonctionne pas (peut-être

des problèmes de droits ?) par contre les requêtes sur une ligne et sans les
points virgules de la fin fonctionnent bien !

répertoire local :
- fichier xls contenant la macro
- fichier.sql avec requêtes sur une ligne sans les ;
- fichier toto.txt (paramètres servant au ftp)

Faites de beaux rêves...;-)

@+ popi

Avatar
Misange
AHH !!! info intéressante, j'avais effectivement pas testé un simple
upload (qui est pourtant ce que j'aurais à faire le plus souvent). Ce
qui est curieux c'est cette histoire de ; en effet quand je demande à
php myadmin de m'envoyer mes bases, il met des ; même si moi je n'en
n'avais pas mis. En tous cas j'essaye ça ce soir si possible. Après je
vais devoir bosser pour mettre tout ça dans les classeurs qui en ont
besoin mais ensuite quelle tranquilité ! Ce sera plus facile de faire
les mises à jour d'excelabo ;-)
Comme promis je ferai à mes moments perdus une jolie démo reprenant tout
depuis le début. En gros tout ce que j'ai mis des mois à collecter de
droite à gauche, avec l'aide de certaines personnes du forum allhtml et
bien sur d'ici pour arriver à un truc fonctionnel et agréable.

Encore merci

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


le 01/12/2003 00:26:
Salut Misange,

bon sur ce, je déclare que la suite peut attendre ! il est l'heure
d'aller rêver


après de multiples tests, la création de table ne fonctionne pas (peut-être
des problèmes de droits ?) par contre les requêtes sur une ligne et sans les
points virgules de la fin fonctionnent bien !

répertoire local :
- fichier xls contenant la macro
- fichier.sql avec requêtes sur une ligne sans les ;
- fichier toto.txt (paramètres servant au ftp)

Faites de beaux rêves...;-)

@+ popi






Avatar
Denis Michon
Bonjour Misange,

J'ai bien hâte de prendre connaissance de cette jolie démo.

Elle m'intéresse.. j'espère que l'on pourra la retrouver sur Excelabo.

;-)


Salutations!



"Misange" a écrit dans le message de news:O6sx4G%
AHH !!! info intéressante, j'avais effectivement pas testé un simple
upload (qui est pourtant ce que j'aurais à faire le plus souvent). Ce
qui est curieux c'est cette histoire de ; en effet quand je demande à
php myadmin de m'envoyer mes bases, il met des ; même si moi je n'en
n'avais pas mis. En tous cas j'essaye ça ce soir si possible. Après je
vais devoir bosser pour mettre tout ça dans les classeurs qui en ont
besoin mais ensuite quelle tranquilité ! Ce sera plus facile de faire
les mises à jour d'excelabo ;-)
Comme promis je ferai à mes moments perdus une jolie démo reprenant tout
depuis le début. En gros tout ce que j'ai mis des mois à collecter de
droite à gauche, avec l'aide de certaines personnes du forum allhtml et
bien sur d'ici pour arriver à un truc fonctionnel et agréable.

Encore merci

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


le 01/12/2003 00:26:
Salut Misange,

bon sur ce, je déclare que la suite peut attendre ! il est l'heure
d'aller rêver


après de multiples tests, la création de table ne fonctionne pas (peut-être
des problèmes de droits ?) par contre les requêtes sur une ligne et sans les
points virgules de la fin fonctionnent bien !

répertoire local :
- fichier xls contenant la macro
- fichier.sql avec requêtes sur une ligne sans les ;
- fichier toto.txt (paramètres servant au ftp)

Faites de beaux rêves...;-)

@+ popi






Avatar
Misange
Que oui que oui...
Christian a déjà mis sur son site (on va l'appeller lucky luke lui aussi
?) les codes nécessaires. J'ai commencé un tutoriel qui n'a au départ
rien à faire avec excel : j'avais mis noir sur blanc pour m'y retrouver
les trucs nécessaires à la création de ma base en mysql. Je crois que vu
comment j'ai galéré, le partage de mes solutions pourrait intéresser
quelques webmasters (pas ici, ils sont achté trop forts !) . L'objectif
est de proposer un truc intégré. Promis je vais y bosser mais j'ai
quelques autres trucs à faire à côté quand même ;-(

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


le 01/12/2003 15:02:
Bonjour Misange,

J'ai bien hâte de prendre connaissance de cette jolie démo.

Elle m'intéresse.. j'espère que l'on pourra la retrouver sur Excelabo.

;-)


Salutations!



"Misange" a écrit dans le message de news:O6sx4G%
AHH !!! info intéressante, j'avais effectivement pas testé un simple
upload (qui est pourtant ce que j'aurais à faire le plus souvent). Ce
qui est curieux c'est cette histoire de ; en effet quand je demande à
php myadmin de m'envoyer mes bases, il met des ; même si moi je n'en
n'avais pas mis. En tous cas j'essaye ça ce soir si possible. Après je
vais devoir bosser pour mettre tout ça dans les classeurs qui en ont
besoin mais ensuite quelle tranquilité ! Ce sera plus facile de faire
les mises à jour d'excelabo ;-)
Comme promis je ferai à mes moments perdus une jolie démo reprenant tout
depuis le début. En gros tout ce que j'ai mis des mois à collecter de
droite à gauche, avec l'aide de certaines personnes du forum allhtml et
bien sur d'ici pour arriver à un truc fonctionnel et agréable.

Encore merci

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


le 01/12/2003 00:26:

Salut Misange,


bon sur ce, je déclare que la suite peut attendre ! il est l'heure
d'aller rêver


après de multiples tests, la création de table ne fonctionne pas (peut-être
des problèmes de droits ?) par contre les requêtes sur une ligne et sans les
points virgules de la fin fonctionnent bien !

répertoire local :
- fichier xls contenant la macro
- fichier.sql avec requêtes sur une ligne sans les ;
- fichier toto.txt (paramètres servant au ftp)

Faites de beaux rêves...;-)

@+ popi











1 2 3 4 5