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 !
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é).
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é).
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é).
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[]
//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 !
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[]
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[]
//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 !
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[]
//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
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[]
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[]
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 ? :-)
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[]
//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
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[]
//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
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[]
//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
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
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
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
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
7-Zip : 0 eur (avec les sources) http://sourceforge.net/projects/sevenzip/
@+ 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
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
7-Zip : 0 eur (avec les sources) http://sourceforge.net/projects/sevenzip/
@+ FxM
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)
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" <paupi@unphoniepointefere> a écrit dans le message de
news:u1AKfS0tDHA.1512@TK2MSFTNGP10.phx.gbl...
çà 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.....
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.....