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

- 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 technologies je partage mes découvertes quotidiennement.








Déjà 17 commentaires
5 février 2010 à 18h32
Social comments and analytics for this post…
This post was mentioned on Twitter by CallMeDams: RT @xhark: Sur BM: Connecter une base MySQL avec Access ou Excel http://bit.ly/ci1xBx…
Twitter: nelshd
dit :
9 février 2010 à 13h12
Merci pour les tips !
Twitter: photoshoptuto
dit :
15 février 2010 à 19h00
Pratique ce genre d’astuce, merci.
25 mars 2010 à 19h38
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.
26 mars 2010 à 9h36
@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)
8 juillet 2010 à 17h57
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
8 juillet 2010 à 22h18
@unique04 : j’ai un peu de mal à saisir ta question, peux-tu être plus précis?
12 juillet 2010 à 10h16
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
10 août 2010 à 12h59
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
8 septembre 2010 à 11h52
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.
8 septembre 2010 à 12h57
@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à…
13 octobre 2010 à 11h09
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 !
15 octobre 2010 à 15h13
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
15 novembre 2010 à 16h09
Bonjour
Pour un accès sur un serveur distant vous avez une solution ici:http://dalmont.denis.free.fr/pages/71.php
Cordialement
Twitter: lor
dit :
3 février 2011 à 11h46
comment parametrer une connexion ADSL sur 1 modem routeur cisco 837
qu’est ce que la messagerie unifiée-UM
17 février 2012 à 11h06
Excellent Tuto, félicitations
Twitter: jayrome78
dit :
27 mars 2012 à 16h46
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