Créer un annuaire Excel : la base de données (MYSQL)
Cet article fait suite à l’article : Créer un annuaire en excel avec une base de donnée SQL. Vous pouvez retrouver les explications de cette création d’annuaire sur celui-ci est aussi le sommaire.
Etape 2 : la base de données
Il est toujours délicat d’utiliser Excel en tant qu’un agrégateur de contenu ; car la nombre de ligne est limité, la recherche est délicate (hors filtres automatiques)… Pour pallier à ce problème, une solution : utiliser une base de données SQL lié au classeur.
Pour lier une base de données SQL avec un classeur excel, on peut la joindre au classeur par le biais d’une liaison, mais on se retrouve dans le même cas que ci-dessus, ou on peut la lier par le biais de requetes SQL.
Pour cela il faut rajouter des références / librairies dans Microsoft Visual Basic en faisant : Alt + F11 depuis Excel (si visual basic n’est pas ouvert), Outils >> Références. Et il faut sélectionner dans la liste déroulante Microsoft ActiveX Data Objects 2.X Library (ou X est le plus élevé possible ; moi j’utilise le 2.8).

Il faut aussi télécharger le gestionnaire ODBC disponible sur le site de son éditeur de solution base de données. Pour MYSQL, vous pouvez utiliser : Mysql Connector ODBC 3.51 qui est en téléchargement sur le site SQL.com .
Puis on va créer une table dans sa base de données qui comprend les champs : Nom, Prénom, Fonction, Mail, Téléphone, Téléphone 2, Adresse…
Ce qui donne en SQL :
-
-
CREATE TABLE `annuaire` (
-
`ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
-
`nom` VARCHAR( 256 ) NOT NULL ,
-
`prenom` VARCHAR( 256 ) NOT NULL ,
-
`fonction` VARCHAR( 256 ) NOT NULL ,
-
`mail` VARCHAR( 256 ) NOT NULL ,
-
`tel` VARCHAR( 256 ) NOT NULL ,
-
`adresse` VARCHAR( 256 ) NOT NULL
-
) ENGINE = MYISAM ;
-
Ici on travaille avec un ID unique qui va s’auto incrémenter, ce qui nous permet d’avoir quelques doublons. Vous pouvez changer les clés primaires si vous le souhaitez, en utilisant par exemple le nom et le mail !
Après avoir créé la base, il faudra utiliser ce code dans vos macros :
-
-
‘on récup la bdd
-
-
Sheets("BDD").Visible = True
-
Sheets("BDD").Select
-
Dim server, uid, pwd, database As Variant
-
-
server = Range("E8")
-
uid = Range("E10")
-
pwd = Range("E12")
-
database = Range("E14")
-
ActiveWindow.SelectedSheets.Visible = False
-
-
-
‘on déclare les variables de la BDD
-
-
’Déclaration des variables BDD
-
Dim cnx As ADODB.Connection
-
Dim rst As ADODB.Recordset
-
-
‘Instanciation des variables
-
Set cnx = New ADODB.Connection
-
Set rst = New ADODB.Recordset
-
-
-
‘Définition de la chaîne de connexion
-
-
connstring = "driver={MySQL ODBC 3.51 Driver}; server=" & server & ";uid=" & uid & "; pwd=" & pwd & ";database=" & database
-
cnx.Open connstring
-
-
Par la suite, il faudra utiliser une méthode pour exécuter des requêtes SQL et récupérer des valeurs. On peut effectuer, des requêtes du type INSERT, DELETE, ALTER, SELECT…
Pour une requete simple de type SELECT cela donne :
-
-
‘on selectionne la bonne ligne
-
b = 7
-
rst.Open "SELECT * FROM annuaires",cnx
-
Do While Not rst.EOF
-
-
With Sheets("annuaire") ‘on sélectionne la bonne page
-
-
‘on sélectionne une ligne (avec b) et une colonne(avec le chiffre)
-
Cells(b, 8).Select
-
ActiveCell.Formula = rst(0) ‘cela récupère le premier enregistrement
-
Cells(b, 9).Select
-
ActiveCell.Formula = rst(1) ‘cela récupère le deuxième enregistrement
-
-
‘on continue ainsi de suite
-
b = b + 1 ‘ce qui permet de changer de ligne
-
-
End With
-
rst.MoveNext ‘– Passage à l’enregistrement suivant
-
Loop
-
On peut maintenant passer à la suite : faire des recherches dans la base de données
Attention, cette méthode fonctionne avec MYSQL, vous pouvez en faire de même avec POSTGRE, SQL SERVER, ORACLE…
Tags: excel, macro excel, mysql excel, sql excel, vb, vb excel, vba Posted in


Laisser un commentaire