Importer des données d'une BD vers Excel

Fermé
shared Messages postés 105 Date d'inscription mercredi 24 mars 2010 Statut Membre Dernière intervention 23 mai 2016 - 14 janv. 2015 à 22:52
shared Messages postés 105 Date d'inscription mercredi 24 mars 2010 Statut Membre Dernière intervention 23 mai 2016 - 26 mars 2015 à 15:34
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....

:)

A voir également:

10 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 701
15 janv. 2015 à 09:54
Bonjour,

Tes BD externes sont gérées par quel logiciel ?

Tu veux faire ton interface web sur excel ?
0
shared Messages postés 105 Date d'inscription mercredi 24 mars 2010 Statut Membre Dernière intervention 23 mai 2016 5
15 janv. 2015 à 13:51
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 !
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 701
15 janv. 2015 à 18:17
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.
0
shared Messages postés 105 Date d'inscription mercredi 24 mars 2010 Statut Membre Dernière intervention 23 mai 2016 5
Modifié par shared le 16/01/2015 à 13:16
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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 701
16 janv. 2015 à 21:52
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 :
"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.
0
shared Messages postés 105 Date d'inscription mercredi 24 mars 2010 Statut Membre Dernière intervention 23 mai 2016 5
Modifié par shared le 19/01/2015 à 16:44
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é:

'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?
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 701
19 janv. 2015 à 17:54
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.
0
shared Messages postés 105 Date d'inscription mercredi 24 mars 2010 Statut Membre Dernière intervention 23 mai 2016 5
24 mars 2015 à 17:52
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:

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?
0
shared Messages postés 105 Date d'inscription mercredi 24 mars 2010 Statut Membre Dernière intervention 23 mai 2016 5
26 mars 2015 à 15:17
Il falait activer les references ActiveX dans l'onglet "outil>References" de VBA
0
shared Messages postés 105 Date d'inscription mercredi 24 mars 2010 Statut Membre Dernière intervention 23 mai 2016 5
26 mars 2015 à 15:34
Du coup mon code est tout simple:
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 !
0