Importer des données d'une BD vers Excel
shared
Messages postés
105
Date d'inscription
Statut
Membre
Dernière intervention
-
shared Messages postés 105 Date d'inscription Statut Membre Dernière intervention -
shared Messages postés 105 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je travail sur la mise en place d'une interface web pour un jeu de simulation de gestion d'entreprise. Je possède un fichier excel dans lequel j'entre des données (dans des cellules) puis les macros Excel me calcul le résultat et me l'inscrivent (dans des cellules).
Ce que je voudrai pouvoir faire c'est que Excel aille me chercher les données d'entrées dans une BD externe (exemple: une table "Paramètres_d'entrée").
Ensuite je voudrai qu'après avoir lancé la macro de calcul, les résultats qui s'affichent dans les cellules s'inscrivent dans une base (exemple: une table "Paramètres_de_sortie.
Et je rajoute que les paramètres d'entrée et les résultats se trouvent sur des feuilles différentes.
Aidez moi s'il vous plait....
:)
Je travail sur la mise en place d'une interface web pour un jeu de simulation de gestion d'entreprise. Je possède un fichier excel dans lequel j'entre des données (dans des cellules) puis les macros Excel me calcul le résultat et me l'inscrivent (dans des cellules).
Ce que je voudrai pouvoir faire c'est que Excel aille me chercher les données d'entrées dans une BD externe (exemple: une table "Paramètres_d'entrée").
Ensuite je voudrai qu'après avoir lancé la macro de calcul, les résultats qui s'affichent dans les cellules s'inscrivent dans une base (exemple: une table "Paramètres_de_sortie.
Et je rajoute que les paramètres d'entrée et les résultats se trouvent sur des feuilles différentes.
Aidez moi s'il vous plait....
:)
A voir également:
- Importer des données d'une BD vers Excel
- Trier des données excel - Guide
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Word et excel gratuit - Guide
- Importer favoris chrome - Guide
10 réponses
Bonjour,
Tes BD externes sont gérées par quel logiciel ?
Tu veux faire ton interface web sur excel ?
Tes BD externes sont gérées par quel logiciel ?
Tu veux faire ton interface web sur excel ?
Je fais une interface web en PHP, j'entre les données voulu dans une BD MySQL et je veux qu'Excel les récupère dans les champs adéquats puis lance une macro dessus pour faire les calculs, ensuite je veux que les résultat soient automatiquement recopiés par Excel dans la BD pour qu'après je puisse les récupérer en PHP pour les présenter d'une façon sympathique sur mon appli web.
J'ai étudié la question sur les furum et il semble que je n'ai que deux solution soit transformer mon fichier Excel en .csv or cette solution est impossible car mon fichier Excel comporte plusieurs feuilles. Soit utiliser Access avec le logiciel ODBC Connector.
Mais le tout reste flou pour moi je ne comprend pas la procédure à suivre, j'en fais appel à vous pour m'éclaire sur les étapes de la procédure..
Merci de m'aider dans la mesure de vos compétences !
J'ai étudié la question sur les furum et il semble que je n'ai que deux solution soit transformer mon fichier Excel en .csv or cette solution est impossible car mon fichier Excel comporte plusieurs feuilles. Soit utiliser Access avec le logiciel ODBC Connector.
Mais le tout reste flou pour moi je ne comprend pas la procédure à suivre, j'en fais appel à vous pour m'éclaire sur les étapes de la procédure..
Merci de m'aider dans la mesure de vos compétences !
Bonjour,
Effectivement c'est beaucoup plus clair ainsi !
Pour récupérer tes données avec excel tu ne devrais pas avoir de problème avec les requêtes web. Pour cela il faut les paramètres de connexion et ensuite récupérer les données selon leur formatage pour les introduire dans ton classeur : c'est tout à fait faisable.
Pour renvoyer les données, tu as deux solutions :
- soit te connecter à la base de données et charger tes données avec des ordres sql.
- soit créer un fichier d'export (en csv éventuellement) que tu importera dans ta base.
Effectivement c'est beaucoup plus clair ainsi !
Pour récupérer tes données avec excel tu ne devrais pas avoir de problème avec les requêtes web. Pour cela il faut les paramètres de connexion et ensuite récupérer les données selon leur formatage pour les introduire dans ton classeur : c'est tout à fait faisable.
Pour renvoyer les données, tu as deux solutions :
- soit te connecter à la base de données et charger tes données avec des ordres sql.
- soit créer un fichier d'export (en csv éventuellement) que tu importera dans ta base.
C'est pas si simple que ça a en juger par ce que je vois sur le net et je ne comprend pas la démarche, il n'y a aucun moyen de lier directement des contenu de cellules Excel avec des données de BD, ce que je veux qu'on m'explique c'est la procédure à suivre pour lier le contenu d'une cellules Excel avec un élément d'une table de sorte que si Excel change la valeur ça la modifie dans la table et si la valeur change dans la BD c'est le Excel qui est modifié.
Comment charger des données avec des ordres sql? c'est justement ce que je veux comprendre.
Et comme je l'ai dis plus haut il m'est impossible de transformer mon fichier en .csv car il contient plusieurs feuilles de données.
Merci !
Comment charger des données avec des ordres sql? c'est justement ce que je veux comprendre.
Et comme je l'ai dis plus haut il m'est impossible de transformer mon fichier en .csv car il contient plusieurs feuilles de données.
Merci !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Comment charger des données avec des ordres sql?
Il suffit après connexion à la base de coder les ordres sql qui permettent de piloter la base, par exemple :
te permet d'insérer dans la table "Cdes" une référence ("ref1"), une date (1/1/2015) et un code client ("cl1").
transformer mon fichier en .csv
Cela te permet avec un fichier csv d'importer ou exporter une table complète mais ce n'est pas ce que tu souhaites.
la procédure à suivre pour lier le contenu d'une cellule
Je pense que tu vas un peu loin en voulant faire cela. Pour que cela fonctionne, il te faudrait créer des liens événementiels entre excel et mysql et que les 2 logiciels soient ouverts en même temps, etc...
Par contre tu peux très bien lancer une macro qui va se connecter à mysql pour récupérer ta table,faire les calculs, et renvoyer tes résultats dans ta BD, avec les ordres sql.
Comme tu dis : C'est pas si simple que ça
Rien n'est simple lorsque l'on veut faire quelque chose de nouveau pour soi car il faut intégrer les fonctionnements surtout lorsque tu veux interférer entre plusieurs logiciels. Dans ton cas il faut maitriser la gestion de ta base, les ordres sql et le vba excel : c'est tout à fait possible mais il faut arriver à mettre tout cela en phase.
Comment charger des données avec des ordres sql?
Il suffit après connexion à la base de coder les ordres sql qui permettent de piloter la base, par exemple :
"INSERT INTO Cdes (RéfCde,DatCde ,N°Client) VALUES ('"ref1",1/1/2015,"cl1"')
te permet d'insérer dans la table "Cdes" une référence ("ref1"), une date (1/1/2015) et un code client ("cl1").
transformer mon fichier en .csv
Cela te permet avec un fichier csv d'importer ou exporter une table complète mais ce n'est pas ce que tu souhaites.
la procédure à suivre pour lier le contenu d'une cellule
Je pense que tu vas un peu loin en voulant faire cela. Pour que cela fonctionne, il te faudrait créer des liens événementiels entre excel et mysql et que les 2 logiciels soient ouverts en même temps, etc...
Par contre tu peux très bien lancer une macro qui va se connecter à mysql pour récupérer ta table,faire les calculs, et renvoyer tes résultats dans ta BD, avec les ordres sql.
Comme tu dis : C'est pas si simple que ça
Rien n'est simple lorsque l'on veut faire quelque chose de nouveau pour soi car il faut intégrer les fonctionnements surtout lorsque tu veux interférer entre plusieurs logiciels. Dans ton cas il faut maitriser la gestion de ta base, les ordres sql et le vba excel : c'est tout à fait possible mais il faut arriver à mettre tout cela en phase.
Premièrement, merci pour votre aide !!
Déjà je connais le SQL dont les procédure stockées, trigger et les transactions (etc). Je NE PEUX PAS transformer mon fichier Excel en .csv car il contient plusieurs feuilles, et j'ai BESOIN que Excel soit démarré en même temps que mon application car les calculs que font Excel en mettant en relation les cellules sont très long et compliqués a détailler en un temps raisonnable que je n'ai pas^^ donc j'ai besoin que mon fichier Excel soit lié a la BD et que quand une valeur change dans l'un ou l'autre l'un ou l'autre se met a jour automatiquement.
Donc j'ai pris en compte ce que vous avez dis et j'ai continué mes recherches, il se trouve que je peux faire la connexion ODBC entre Excel et la BD, il faut que j'écrive un script VBA qui sera lu lor de l'ouverture du document. Ce script je l'ai trouvé:
Mes question sont les suivantes:
Ou ecrire ce script?
Comment je fait pour que les données dans Excel et la BD soient liées en temps réel?
Comment je récupère le contenu des cellules?
Déjà je connais le SQL dont les procédure stockées, trigger et les transactions (etc). Je NE PEUX PAS transformer mon fichier Excel en .csv car il contient plusieurs feuilles, et j'ai BESOIN que Excel soit démarré en même temps que mon application car les calculs que font Excel en mettant en relation les cellules sont très long et compliqués a détailler en un temps raisonnable que je n'ai pas^^ donc j'ai besoin que mon fichier Excel soit lié a la BD et que quand une valeur change dans l'un ou l'autre l'un ou l'autre se met a jour automatiquement.
Donc j'ai pris en compte ce que vous avez dis et j'ai continué mes recherches, il se trouve que je peux faire la connexion ODBC entre Excel et la BD, il faut que j'écrive un script VBA qui sera lu lor de l'ouverture du document. Ce script je l'ai trouvé:
'Nécessite les références (Outils->Référence):
' Microsoft DAO 3.6 Object Library
' Microsoft ActiveX Data Objects 2.x Library
Public Function connect()
Set connexion = New ADODB.Connection
dbPath = Path
connexion.ConnectionString = "UID=userSQL;PWD=motdepasse;DRIVER={SQL Server};Server=nomOuIpDuServeur;Database=nomBDD;"
connexion.Open
Set connect = connexion
End Function
Mes question sont les suivantes:
Ou ecrire ce script?
Comment je fait pour que les données dans Excel et la BD soient liées en temps réel?
Comment je récupère le contenu des cellules?
Bonjour,
Ou ecrire ce script?
Ce que tu as trouvé n'est pas à proprement parler un script mais une fonction de connexion et il te faut donc l'utiliser lorsque tu veux accéder à ta base.
les données dans Excel et la BD soient liées en temps réel?
Il te faut utiliser des fonctions événementielles comme "Worksheet_Change" dans vba excel et la fonction équivalente dans ton gestionnaire de base.
Comment je récupère le contenu des cellules?
Puisque tu connais le langage sql c'est une façon de faire qui devrait te permettre le dialogue.
Ou ecrire ce script?
Ce que tu as trouvé n'est pas à proprement parler un script mais une fonction de connexion et il te faut donc l'utiliser lorsque tu veux accéder à ta base.
les données dans Excel et la BD soient liées en temps réel?
Il te faut utiliser des fonctions événementielles comme "Worksheet_Change" dans vba excel et la fonction équivalente dans ton gestionnaire de base.
Comment je récupère le contenu des cellules?
Puisque tu connais le langage sql c'est une façon de faire qui devrait te permettre le dialogue.
Bonjour,
J'ai fais une pause dans ce travail et je m'y suis remis, je vous remercie grandement de votre aide, parce-que que je manque cruellement d'info à ce sujet sur le net.
Donc pour reprendre depuis la dernière fois:
Pour la liaison en temps réel on verra plus tard.
Pour récupérer les données d'une cellule j'ai vu comment ça fonctionnait. Je laisse tomber les fonction, je veux tout faire en VBA.
Je veux faire un truc tout simple:
Je veux juste insérer le contenu de la cellule A1, qui est "1" dans "TableTest" de ma BD dans le champ "test", j'ai ce script:
Questions:
- J'ai une erreur sur "Dim cnx As New ADODB.Connection" (ligne 3) type d'utilisateur non définie, qu'est-ce qu'il cloche?
J'ai fais une pause dans ce travail et je m'y suis remis, je vous remercie grandement de votre aide, parce-que que je manque cruellement d'info à ce sujet sur le net.
Donc pour reprendre depuis la dernière fois:
Pour la liaison en temps réel on verra plus tard.
Pour récupérer les données d'une cellule j'ai vu comment ça fonctionnait. Je laisse tomber les fonction, je veux tout faire en VBA.
Je veux faire un truc tout simple:
Je veux juste insérer le contenu de la cellule A1, qui est "1" dans "TableTest" de ma BD dans le champ "test", j'ai ce script:
Private Sub Workbook_Open()
Dim cnx As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim rec As New ADODB.Record
cnx.Open "Provider=MSDASQL;Driver=phpMyAdmin;Server=gigondas;Database=krsticp;User ID=krsticp;Password=krsticp;"
Set rs = cnx.Execute("SELECT test FROM TableTest")
While Not rs.EOF
Sheets("Feuil1").Cells(a, 2).Value = rs.Fields("test").Value
rs.MoveNext
Wend
rs.Close
cnx.Close
End Sub
Questions:
- J'ai une erreur sur "Dim cnx As New ADODB.Connection" (ligne 3) type d'utilisateur non définie, qu'est-ce qu'il cloche?
Du coup mon code est tout simple:
Mais j'ai: "erreur d'exécution '-2147467259 (80004005)' Erreur d'automatisation Erreur non spécifiée" c'est une erreur très classique apparemment.
Note: J'essaye de me connecter à un serveur MySQL
Avez vous une piste à exploiter cela fais déjà 3h que j'y suis et je n'avance pas... merci !
Public Function connect()
Set cnx = New ADODB.Connection
cnx.ConnectionString = "UID=chevrolt;PWD=chevrotl;DRIVER={MySQL ODBC 2.8 Driver};Server=gigondas;Database=chevrotl;"
cnx.Open
Set connect = cnx
End Function
Mais j'ai: "erreur d'exécution '-2147467259 (80004005)' Erreur d'automatisation Erreur non spécifiée" c'est une erreur très classique apparemment.
Note: J'essaye de me connecter à un serveur MySQL
Avez vous une piste à exploiter cela fais déjà 3h que j'y suis et je n'avance pas... merci !