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
Christian Herbé


C'est encore plus simple dans ce cas chez moi puisque ce que je génère
avec mon classeur excel c'est un fichier .sql qui comporte déjà ce genre
de choses :


Normal puisque c'est du SQL mais il faut impérativement exécuter ces
instructions sur le serveur WEB donc impossible depuis VBA.
Ou alors, si le serveur WEB tourne sous Windows, installer un cheval de
Troie sur le serveur pour exécuter un script VBS mais je doute que ton
hebergeur apprecie cette technique !

ce que je vois mal c'est comment lancer depuis excel le fichier php
contenant les instructions nécessaires...


C'est là que le navigateur intervient en chargeant une page contenant le
script ad hoc qui va exécuter le SQL.

Avatar
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.
Ca méritera surement une page d'explication sur excelabo !

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


Christian Herbé wrote:


C'est encore plus simple dans ce cas chez moi puisque ce que je génère
avec mon classeur excel c'est un fichier .sql qui comporte déjà ce
genre de choses :



Normal puisque c'est du SQL mais il faut impérativement exécuter ces
instructions sur le serveur WEB donc impossible depuis VBA.
Ou alors, si le serveur WEB tourne sous Windows, installer un cheval de
Troie sur le serveur pour exécuter un script VBS mais je doute que ton
hebergeur apprecie cette technique !

ce que je vois mal c'est comment lancer depuis excel le fichier php
contenant les instructions nécessaires...



C'est là que le navigateur intervient en chargeant une page contenant le
script ad hoc qui va exécuter le SQL.





Avatar
Christian Herbé


Je n'ai pas vraiment oublié car la première liste était pour des clients
FTP.


Oups, tu as raison je suis totalement HS !

Avatar
Christian Herbé

Ah mais je vous fait confiance ! je suis bien sure qu'il y en a un qui
trouvera comment parfaire ce bidule ;-) ;-) ;-)
Je lache aussi le PC pour le moment, le jardin m'appelle.


Maintenant, il fait nuit donc le jardin ...

Voilà où on en est (merci à Popi et M. Pierron):

Ta macro sauvegarde la feuille *.CSV
elle exécute ensuite le code nécessaire au transfert FTP
(voir plus haut)
puis la macro ouvre la page web contenant le script PHP:

Dim IE As Object
Set IE = CreateObject("internetexplorer.application")
IE.Navigate ("http://www.ton_site.fr")
'IE.Visible = True
Do While IE.readystate <> 4
Loop
IE.Quit

Et voilà, reste à assembler tout ça et à tester.
Rappelle-moi si nécessaire pour le script PHP

Avatar
popi
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
Christian Herbé

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


J'aurais fait le script php différemment mais pourquoi pas?
A nous 4 (Flo, Michel Popi et moi), on a fait beaucoup mieux que
XLmagique et j'avoue en tirer quelques satisfactions !

Je vais reprendre tout ça avec un exemple simple et Flo le publiera ?

Avatar
popi
Salut Christian,
J'aurais fait le script php différemment mais pourquoi pas?
Fais péter ! je suis toujours preneur ;-)

A nous 4 (Flo, Michel Popi et moi), on a fait beaucoup mieux que
XLmagique et j'avoue en tirer quelques satisfactions !
Flatteur !

Je vais reprendre tout ça avec un exemple simple et Flo le publiera ?
çà veut dire que mon exemple n'était pas simple alors ? ;-(


@+ ;-)

Avatar
Christian Herbé


Je vais reprendre tout ça avec un exemple simple et Flo le publiera ?


çà veut dire que mon exemple n'était pas simple alors ? ;-(


Ce sera l'exemple du fichier de données qui sera simpliste.
Le code ne devrait pas beaucoup varier.


Tant que je te tiens, je bosse sur une application PHP de gestion de
congés (je suis sûr que ça va intéresser Flo).
Les salariés ouvrent une page web
celle-ci contient un script qui intérroge une BDD puis affiche un
formulaire avec la situation (solde) des congés et une grille pour faire
une demande par type (RTT, Congés annuels, déplacements ...).
A terme je compte y adjoindre un graphique de GANTT pour visualiser les
présences par semaine ou par mois.
Quand l'utilisateur valide sa demande,un autre script PHP vérifie la
cohérence, met la BBD à jour et affiche un formulaire de demande remplie
où le chef n'a plus qu'à signer.

Actuellement, ça marche pour les agents à plein temps. L'utilisateur
entre la date et l'heure de départ et de retour par 1/2 journée. Le
script gère les jours chômés.
En revanche, je galère pour les temps partiels. A chaque demande, il
faudra vérifier comment l'agent travaille et il y a beaucoup de cas de
figure. (absence par 1/2 journée à tester à chaque fois et pour chaque
jour sur 2 semaines au moins: cas des personne qui travaillent une
semaine 2 jours, une semaine 3 Etc)
C'est cette gestion des cas différents qui me pose Pb.


Avatar
j
"Misange" a écrit dans le message de news:
#


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. !


ah la bougresse, elle m'avait pourtant dit qu'elle ne VOULAIT pas transférer
son truc sql an FTP
évidemment si c'est Christian et popi qui proposent elle ne dit pas non...
(même en ftp !)

Avatar
popi
Salut Christian,
Tant que je te tiens, je bosse sur une application PHP de gestion de
congés...
Volontiers mais il vaut mieux continuer en bal privé car je ne voudrais pas

friser le HS... ;-)

@+ popi


1 2 3 4 5