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é
Salut Misange et Christian,

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 ?


Oui, tu peux m'indiquer le code VBA pour lancer IE avec une URL précise
et, si possible, fermer IE quand la page est chargée (script exécuté).

Avatar
Christian Herbé


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


Enfin, je comprends et c'est pareil chez free!

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 ?


Tu peux très bien mettre la BDD à jour depuis un script PHP qui ouvre un
fichier texte dans n'importe quel dossier. Exemple PHP:
la BDD s'appelle misange
la table s'appelle MPFE
elle ne contient qu'une colonne qui s'appelle participants

// ouverture du fichier ASCII et stockage
// du contenu dans la variable $tableau[]

$i=0;
$fichier=fopen("fichier.txt","r+");
while(!feof($fichier))
{
$tableau[$i]=fgets($fichier,128));
$i++;
}
fclose($fichier);
$nblignes=$i;

//ouverture de la BDD
$bdd = mysql_connect('misange','login','passwd');
mysql_select_db('BDD',$bdd);

// les valeurs lues dans le fichier sont insérer dans la BDD
for ($i=0;$i<$nblignes;$i++)
{
mysql_query("INSERT INTO MPFE VALUES ('$tableau[$i]');
}


Si oui tu as déjà fait la première étape... Reste la suite.


Si Popi nous donne le code VBA demandé, l'affaire est bouclée !

Avatar
Michel Gaboly
Re,

Online est la branche professionnelle de Free.

Il est donc logique que les similitudes soient nombreuses. L'avantage est
qu'une solution qui fonctionne chez Free doit probablement être opéra-
tionnelle également chez Online.



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


Enfin, je comprends et c'est pareil chez free!

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 ?


Tu peux très bien mettre la BDD à jour depuis un script PHP qui ouvre un
fichier texte dans n'importe quel dossier. Exemple PHP:
la BDD s'appelle misange
la table s'appelle MPFE
elle ne contient qu'une colonne qui s'appelle participants

// ouverture du fichier ASCII et stockage
// du contenu dans la variable $tableau[]

$i=0;
$fichier=fopen("fichier.txt","r+");
while(!feof($fichier))
{
$tableau[$i]=fgets($fichier,128));
$i++;
}
fclose($fichier);
$nblignes=$i;

//ouverture de la BDD
$bdd = mysql_connect('misange','login','passwd');
mysql_select_db('BDD',$bdd);

// les valeurs lues dans le fichier sont insérer dans la BDD
for ($i=0;$i<$nblignes;$i++)
{
mysql_query("INSERT INTO MPFE VALUES ('$tableau[$i]');
}

Si oui tu as déjà fait la première étape... Reste la suite.


Si Popi nous donne le code VBA demandé, l'affaire est bouclée !


--
Cordialement,

Michel Gaboly
http://www.gaboly.com


Avatar
popi
çà c'est pour l'ouverture (petit script php qui lit dans un fichier texte et
affiche le nb de lignes)

Dim IE As Object
Set IE = CreateObject("internetexplorer.application")
IE.Navigate ("http://www.popivog.com/New1.php")
IE.Visible = True

pour la fermeture, j'ai pas encore, plusieurs pistes selon la durée du
script.....

à suivre


(verre plein)
Avatar
Christian Herbé

Tu as oublié ZIPCentral, gratuit, en Français, crée des zip ou des EXE



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



Avatar
Christian Herbé


Dim IE As Object
Set IE = CreateObject("internetexplorer.application")
IE.Navigate ("http://www.popivog.com/New1.php")
IE.Visible = True


Je teste ce soir.
En attendant et même si on s'arrête là, Misange n'aura plus qu'à fermer
le navigateur.
Flo, ce n'est pas trop te demander ? :-)

Avatar
Misange
Christian Herbé wrote:

Tu peux très bien mettre la BDD à jour depuis un script PHP qui ouvre un
fichier texte dans n'importe quel dossier. Exemple PHP:
la BDD s'appelle misange
la table s'appelle MPFE
elle ne contient qu'une colonne qui s'appelle participants

// ouverture du fichier ASCII et stockage
// du contenu dans la variable $tableau[]

$i=0;
$fichier=fopen("fichier.txt","r+");
while(!feof($fichier))
{
$tableau[$i]=fgets($fichier,128));
$i++;
}
fclose($fichier);
$nblignes=$i;

//ouverture de la BDD
$bdd = mysql_connect('misange','login','passwd');
mysql_select_db('BDD',$bdd);

// les valeurs lues dans le fichier sont insérer dans la BDD
for ($i=0;$i<$nblignes;$i++)
{
mysql_query("INSERT INTO MPFE VALUES ('$tableau[$i]');
}
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 :
insert into matable values(id, champ1, champ2,....);
insert into matable values(id, champ1, champ2,....);

ce que je vois mal c'est comment lancer depuis excel le fichier php
contenant les instructions nécessaires...
mais c'est super, je sens que je vais pouvoir grandement me simplifier
la tache d'ici peu...



--

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

Avatar
Misange
Christian Herbé wrote:



Dim IE As Object
Set IE = CreateObject("internetexplorer.application")
IE.Navigate ("http://www.popivog.com/New1.php")
IE.Visible = True



Je teste ce soir.
En attendant et même si on s'arrête là, Misange n'aura plus qu'à fermer
le navigateur.
Flo, ce n'est pas trop te demander ? :-)

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.

--

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


Avatar
FxM
Christian Herbé wrote:

Tu as oublié ZIPCentral, gratuit, en Français, crée des zip ou des EXE



Bonjour Christian,

Je n'ai pas vraiment oublié car la première liste était pour des
clients FTP.
Des softs gratuits, c'est pas mal. Des softs gratuits avec les
sources, c'est encore mieux. Si l'on ne défend pas les logiciels
gratuits, tout va disparaître à cause des brevets sur les logiciels.


Pour les zip, il y a effectivement (pour les plus populaires) :

Winzip : à partir de 46 euros (sans le CD ou hors frais de port !)
http://www.absoft.fr/FR/produits/winzip/prix.asp

Winrar : 29 USD
http://www.rarlab.com/

PowerArchiver 8.6 : 19,95 USD
http://www.powerarchiver.com renvoit vers :
http://www.conexware.com/order.html

Powerarchiver 6 FR : 0 eur
http://www.gratilog.net

ZipCentral : 0 eur
http://telecharger.01net.com/windows/Utilitaire/compression_et_decompression/fiches/12278.html

7-Zip : 0 eur (avec les sources)
http://sourceforge.net/projects/sevenzip/

@+
FxM

Avatar
Michel Pierron
Salut popi;
A priori, lorsque le document est fini de charger, la propriété readystate
change; il suffirait donc d'une boucle:
Do While IE.readystate <> 4
Loop
MsgBox "Chargement terminé !"
IE.Quit

"popi" a écrit dans le message de
news:
çà c'est pour l'ouverture (petit script php qui lit dans un fichier texte
et

affiche le nb de lignes)

Dim IE As Object
Set IE = CreateObject("internetexplorer.application")
IE.Navigate ("http://www.popivog.com/New1.php")
IE.Visible = True

pour la fermeture, j'ai pas encore, plusieurs pistes selon la durée du
script.....

à suivre


(verre plein)




1 2 3 4 5