But : utiliser une base MySQL à partir de Microsoft Access et Excel
De nombreuses entreprises utilisent aujourd'hui Microsoft Access pour gérer leurs "base de données", souvent internes. Personnellement je trouve que Microsft Access n'est pas un réel SGBD tant il est limité. On doit son succès grâce à l'interface graphique qui permet de tout réaliser ou presque sans connaître une seule commande SQL.
Si vous êtes développeur, votre entreprise peut vous demander de développer une application de gestion basée sur Access. Pourquoi ? Tout simplement car la personne qui devra accéder à cette base n'aura aucune compétence en SQL et que Access reste simple à utiliser graphiquement.
Ne jetez pas l'éponge tout de suite, voici une solution redoutablement efficace ! Je vous propose de développer votre application sur une base MySQL avec par exemple un code source PHP (ou Perl, python, ), en rendant accessible le tout avec Access et/ou Excel !
Les versions utilisées pour mon exemple sont : Office 2007 et MySQL 5.x (fonctionne également avec Office 2003, seuls les menus changent).
Base de données démo
Pour notre exemple, je vous propose de créer une base de donnée simple :
CREATE TABLE `blogmotion`.`demo` ( `id` INT NOT NULL AUTO_INCREMENT , `prenom` VARCHAR( 30 ) NOT NULL , `nom` VARCHAR( 50 ) NOT NULL , PRIMARY KEY ( `id` ) ) ENGINE = MYISAM ;
Puis insérons quelques données :
INSERT INTO `demo` (`id`, `prenom`, `nom`) VALUES (1, 'Jean', 'Némar'), (2, 'Jay', 'Lafrite'), (3, 'Paul', 'Hochon'), (4, 'Michael', 'Hurni');
Vous pouvez injecter directement le code dans PhpMyAdmin si vous l'utilisez via l'onglet SQL.
Installation du connecteur ODBC
Note : Cette manipulation doit-être réalisée sur tous les postes qui devront accéder à cette base de donnée via Access.
Pour permettre l'accès à la base MySQL de façon transparente au travers d'une application Microsoft nous devons installer un connecteur ODBC.
- MySQL propose justement de télécharger ce connecteur MySQL ODBC gratuitement. Installez-le.
- Se rendre dans le menu Démarrer > Outils d'administration > Source de données (ODBC), ou via démarrer > exécuter : odbcad32.exe
- Cliquer sur Ajouter
- Choisir MySQL ODBC :
Puis cliquer sur Terminer. - Préciser un nom et une description pour ce connecteur (de votre choix) puis entrez le nom ou adresse IP du serveur MySQL (localhost pour moi) ainsi que l'utilisateur ayant accès à votre base de données :
Vous devrez obtenir Connection Successful si vous cliquez sur le bouton Test.
Si ce n'est pas le cas, pensez à vérifier que votre serveur MySQL fonctionne et que celui-ci est accessible à partir de l'extérieur, l'accès est parfois restreint sur l'interface de boucle local (localhost) 127.0.0.1. - Cliquer sur OK, vous devriez obtenir ceci :
- C'est terminé pour la partie ODBC.
Access permettra de modifier la base de données en temps réel, alors que Excel ne permettra qu'une lecture seule (car il ne s'agit pas d'un SGBD).
Accès à MySQL depuis Access
Access permet, via le connecteur ODBC, d'utiliser les données MySQL de deux façons différentes :
- de façon synchrone : chaque modification effectuée avec Access est répercutée sur la base MySQL (similaire à une vue)
- de façon indépendante : toutes les données de la ou les tables sont copiées dans Access sans aucun lien avec MySQL
Si c'est uniquement pour de la lecture, optez pour la méthode 2. Dans le cas contraire (mise à jour, suppression, ajout d'informations) optez pour la méthode 1.
Lancer Access, puis dans une nouvelle base :
- Dans l'onglet Données externes > Plus : Base de données ODBC
(ou Données > A partir d'autres sources > A partir d'ODBC suivant votre version)
- Dans le deuxième onglet Source de données machine sélectionner le Connecteur précédemment créé :
- Pour établir une liaison synchrone, sélectionner Lier à la source de données en créant une table attachée :
- Sélectionner que vous souhaitez exploiter et cliquer sur OK :
- Vous retrouvez vos données de MySQL dans Access :
Attention : chaque modification effectuée sera répercutée sur votre base MySQL.
Accès à MySQL depuis Excel
L'interfaçage entre Microsoft Excel et MySQL se fait via Microsoft Query, utilitaire inclut dans la suite Office.
L'opération varie quelque peu par rapport à Access :
- Via l'onglet Données > Données > A partir d'autre sources : Provenance : Microsoft Query
- Puis sélectionner la ou les tables souhaitées :
Cliquer sur le bouton Aperçu maintenant pour vérifier l'accès, puis sur Suivant :
- Si vous souhaitez filtrer les données sélectionnez les colonnes, sinon cliquer sur Suivant :
- Vous pouvez faire un tri sur une colonne, sinon cliquer sur Suivant :
- Cliquer sur le bouton Terminer :
- Sélectionnez la méthode d'affichage des données dans votre classeur souhaitée, puis sur le bouton OK :
- Et voici le résultat :
Si vous modifiez une valeur dans la base MySQL, vous pouvez forcer la mise à jour de la feuille Excel en faisant un clic droit sur la cellule concernée > Actualiser. Ou presser simultanément CTRL+ALT+F5 pour mettre à jour toutes les cellules.
Vous retrouverez les informations de connexion via l'onglet Données > Connexion du ruban Office.
Conclusion
Le connecteur MySQL permet de préserver votre base de données MySQL dans le moteur MySQL tout en la rendant accessible aux applications Microsoft Office.
C'est simple, propre et efficace ! Il ne reste plus qu'à mêler les macros pour les plus téméraires...
Auteur : Mr Xhark
Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter
50 commentaires
Merci pour les tips !
Pratique ce genre d'astuce, merci.
Merci 1000x pour ce tuto.
J'ai une question : est-ce possible de se connecter avec ODBC à une base de données distante stockée sur un serveur ?
En local (avec localhost), pas de problème !
Merci de votre réponse.
@perflo : oui, cela fonctionne également si l'utilisateur avec lequel tu te connectes a les droits de connexion depuis une IP autre que 127.0.0.1 (localhost).
Pour vérifier cela tu peux utiliser MySQL Browser (inclus dans MySQL Tools qui est gratuit)
franchement excellent tuto...félicitations
au fait j'ai deux question :
est ce possible de relier tout cela à une base de données d'un logiciel qui génére un fichier avec une extension DATA/
l'objectif c'est de passer par Mysql via ce ficher (.DATA) et de relier tt le reste avec Mysql?.
si c'est possible est ce qu'il faut créer un pilote pour cette extension?
merci bcp
@unique04 : j'ai un peu de mal à saisir ta question, peux-tu être plus précis?
salut Xhark !
en fait j'ai un accès à une base de données d'un logiciel dont je veux exploiter le contenu avec excel ou access.
étant donnée l'extension de ce fichier est DATA je ne peux pas saisir ce fichier dans ma base de données MySQL, du coup je me demande faut il créer un pilote pour cette extension?
qu'est ce que t'en penses?
Merci
A vrais dire excellent tuto,
Bon j'ai une question :
Comment peut on faire le même boulot avec une macro a l'exécution de la macro la feuille excel sera rempli par les données de la bdd MySQL selon notre requête??
Merci
merci beaucoup pour toutes ces informations.
je me permets cependant de préciser à celles et ceux qui souhaitent tenter l'expérience qu'il n'est malheureusement pas possible de se connecter au serveur sql de free par ODBC... (le serveur sql de free n'accepte les accès que depuis son serveur web).
si quelqu'un a réussi à contourner le problème, cela m'intéresse.
encore merci et bonne continuation.
@seito: il faut utiliser une sorte de script php comme une API pour que ça marche. Je ne sais pas si ça existe déjà...
Merci merci merci !
C'est l'info que je cherchais depuis des années. Je viens de suivre votre mode d'emploi et ça marche !
Bonjour,
je me suis connecté sur une base de de donnée distante à partir de MS Access.
L'idée est que l'ensemble de mes collaborateurs puissent faire des modifications sur cette bdd à partir de MS Access.
Est-ce envisageable ?
j'ai peur d'avoir des problèmes de synchronisation !
Merci
Bonjour
Pour un accès sur un serveur distant vous avez une solution ici:http://dalmont.denis.free.fr/pages/71.php
Cordialement
comment parametrer une connexion ADSL sur 1 modem routeur cisco 837
qu'est ce que la messagerie unifiée-UM
Excellent Tuto, félicitations
Merci pour ce tuto, très instructif.
Je cherche à importer les données d'une table SQL dans excel (ca marche bien), puis à faire des modification et les renvoyer dans la base SQL.
Hors, je ne parviens pas à utiliser ce mode "écriture". Une piste?
Cordialement
Génial ce tuto. Bien expliqué: aucun problème rencontré. Bravo.
bonjour,tout d'abord merci de ce tp mais j'ai une qst est qc que on peut modifier notre base donne a partir de l 'excel? svp aide moi mnt je suis presse!!. et merci
Bonjour bravo pour ce tuto. J'aimerai une precision si vous le savez
j'ai une base de donnée access en local j'ai un site web hebergement windows chez 1and1 avec une base mssql, je souhaite relier ma base access a ms sql distante pour avoir les données synchrone entre les 2
qq'un peut il m'aider?
Merci
Bonjour et merci pour l'aide apportée par ce tuto. C'est exactement ce que je cherchais à faire depuis quelques jours, c'est l'aide la plus claire et la plus efficace que j'ai trouvé jusqu'à maintenant.
Par contre, même si c'est toujours mieux que ce que j'ai trouvé avant, ça ne marche toujours pas ! 🙂
Le download et l'install du contrôlleur ODBC se passe bien.
Mais la suite... Dans Excel (version 2007, comme dans ce tuto), le menu pop-up qui s'ouvre lorsque je clique sur "Données / Données externes / A partir d'autres sources / Provenance : Mircosoft Query" n'a pas du tout le même rendu que sur le tuto...
Quand je sélectionne le connecteur que je viens d'installer, j'ai le message d'erreur suivant :
"La source de données (DSN) spécifiée présente une incompatibilité d'architecture entre le pilote et l'application".
Une idée pour une solution ?
Merci d'avance.
Désolé pour le double post. Mais pour le cas où d'autres serait bloqués, voici la solution que j'ai trouvé...
http://www.commentcamarche.net/forum/affich-19482405-odbc-pilote-access-2010
J'utilise Win7 64bits, j'avais donc téléchargé le controlleur ODBC en 64 bits... J'ai re-télécharger le contrôlleur en 32 bits et ça marche comme sur des roulettes...
Bonjour,
Merci pour ce tuto qui est excellent. Par contre j'aurais besoin d'un peut d'aide je vous explique la situation.
j'ai un site + une base de donnée héberger chez Alwaysdata qui est liée via ODBC a une base access en local, jusque la rien d'anormal la liaison ce fait très bien. le seul problème est que lorsque sur le site je charge des fichiers ( Word par exemple ) et que j'essaie de les ouvrir en local un message me dit que le fichier est endommagé. Exactement le message me dit que les fichiers "OLE sont endommagés"
Du coté base de donnée en ligne le fichier sont au format "LongBlob"
Voila est ce que quelqu'un aurait une solution à ce problème de ficher endommagé SVP ?
@DanielSDE: tu peux tenter une réparation de Microsoft Office pour commencer. Le problème est-il apparu après la configuration ODBC ?
Je vais donner plus de précision, c'est une erreur de ma part de pas les avoir donner plus tôt.
cas 1
Quand je charge un fichier à partir de mon site et que l'essaye de l'ouvrir dans la base de donnée local access ce message apparaît :
[img]http://www.imabox.fr/a3/14200615081hE38m33.png[/img]
et donc impossible de le récupérer
cas 2
Par contre quand je charge le fichier à partir Access et que l'essaye de l'ouvrir depuis le site , ce message apparaît :
[img]http://www.imabox.fr/a3/1420061509PPGQjd10.png[/img]
je clique sur OK
ce second message apparaît
[img]http://www.imabox.fr/a3/1420061509PWjcZU53.png[/img]
je fait la récupération et j'ai mon fichier.
Mais moi ce que je voudrais c'est que ça marche dans les 2 cas c'est pour ça que je me tourne vers vous pour savoir si quelqu'un aurait une solution au cas 1
@DanielSDE: à ta place je ferai un test croisé sur un autre PC pour mettre en défaut (ou non) ton installation office
@Mr Xhark:
Merci de répondre aussi vite.
Alors j'ai fait le test que tu m'as dit plus haut et toujours le même message :
http://www.imabox.fr/a3/14200615081hE38m33.png
est ce qu'il y aurait pas un paramètre ou une configuration a mettre en place lors de l'installation du connecteur ODBC ?
@DanielSDE: tu es en windows 64 ou 32 pour windows ? même question pour office ? car ça peut mettre le bordel (j'étais tout en 32 à l'époque de mon tuto)
@xhark : alors je suis sous Windows 7 en 64 bits et office je suis en 32 bits
up ! SVP
Bonjour, pourquoi dites-vous en introduction que vous allez proposer une utilisation via PHP alors que vous n'abordez pas du tout la question ? Cdt
@Inutilos: Bonjour, il fallait comprendre "dans le cas où vous auriez déjà développé votre application PHP"
Bonjour, Peut être suis-je à côté de la plaque mais je pose tout de même la question !
Je cherche à extraire depuis une base access des valeur affectées à une table avec possibilités de mettre des filtres et qu'à partir du résultat obtenu, puisse être créé automatiquement un fichier *.xls ou *.xlsx sans qu'Excel ne soit ouvert ..... Est-ce possible et quelles sont les manip svp ?
MySql est-il en capacité de répondre à ce besoins ?
Merci par avance.
Cdlt. Greg
@Greg: en suivant le tutoriel mais avec Excel au lieu d'Access tu peux arriver à ton but. Mais il ne sera pas possible de passer de MySQL à un fichier xls(x) sans passer par Excel
Bonjour et j'apprecie le tuto....
S'il vous plait comment partir de php admin pour importer les données excel dans la base de données mysql
Génial ce tuto! Pour moi qui ne suis pas un spécialiste, c'est clair.
Merci! Merci! Merci!
Bonsoir Mr Xhark,
Franchement top pour un débutant comme moi! Merci
Par contre j'ai une question, lorsque j'ajoute une ligne ou modifie un champ sous access, ma BDD Mysql est mise à jour. Sous excel cela ne fonctionne pas.
Access fonctionne en Lecture / Ecriture sur la BDD mysql, excel seulement en lecture.
@1Yakka: étrange, essaies de recréer le lien ?
@Mr Xhark:
Je l'ai recréé et c'est identique. Il faut faire quelque chose de particulier sur Excel pour "envoyer" la modification vers MySQL?
Sinon, j'ai office 2013 et sous odbcad32.exe il y a 2 pilotes MySQL ODBC 5.3 (et non pas 5.1) un ANSI et un UNICODE. Il m'a semblé logique de prendre le second.
@1Yakka: après vérification excel n'est pas capable de mettre à jour une base de données, contrairement à Access ce n'est pas un SGBD. J'ai ajouté cette information dans le billet, car j'avais uniquement testé avec Access à l'époque (ça commence à dater!).
Pour info il est possible (avec Office 2016) de sauter l'étape ODBC en téléchargeant le connecteur net :
https://dev.mysql.com/downloads/connector/net/
Dans Excel > Données > Nouvelle requête > A partir d'une base de donnée > MySQL
(Mais cela ne permet pas l'écriture non plus)
bjr, je souhaite faire l'inverse, c'est a dire accéder à la base Access à partir de mysql
Bonjour et merci pour le tuto
j'ai une question :
Peut-on lier un logiciel de gestion de boutique (installé sur PC ou serveur ) avec un lien à la base de donnée du site e-commerce ?
bonjour
je pose ma question, je voudrais remplir m'a base de donnée par le biais d'un fichier excel et que cela ce mette a jours tous les 20 min est-ce que cella est possible ? car dans ce tuto on vois comment envoyer la basse de donnée a excel mais pas l'inverse
en espèrent une reponse le plus rapide pour mon poste merci
@Duck_ArMyx: il est indiqué dans le billet que "chaque modification effectuée sera répercutée sur votre base MySQL" donc cela répond à la question
Bonjour! et bonjour à tous!
Merci pour le tuto combien de fois utile.
je rencontre quelques difficultés. Après téléchargement et lors de l'installation:
Outils d'administration > Source de données (ODBC) puis fenêtre Créer nouvelle source de données/ je ne trouve pas le pilote MySQL ODBC 5.1 Driver à sélectionner.
je suis bloqué à ce point.
Que faire?
Merci pour votre précieuse aide
@Persena: n'auriez-vous pas oublié d'installer le connecteur ODBC MySQL ?
Bonjour à tous,
Merci pour ce tuto,
Actuellement, j'utilise une base de données sur hostinger que j'ai réussi à connecter sur Access 2019.
Avez vous réussi à exporter des données enregistrer sur une base de données mysql depuis access ?
Merci d'avance pour vos réponses.