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

Références Visual Basic

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 :

  1.  
  2. CREATE TABLE `annuaire` (
  3. `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  4. `nom` VARCHAR( 256 ) NOT NULL ,
  5. `prenom` VARCHAR( 256 ) NOT NULL ,
  6. `fonction` VARCHAR( 256 ) NOT NULL ,
  7. `mail` VARCHAR( 256 ) NOT NULL ,
  8. `tel` VARCHAR( 256 ) NOT NULL ,
  9. `adresse` VARCHAR( 256 ) NOT NULL
  10. ) ENGINE = MYISAM ;
  11.  

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 :

  1.  
  2.     ‘on récup la bdd
  3.    
  4.         Sheets("BDD").Visible = True
  5.         Sheets("BDD").Select
  6.         Dim server, uid, pwd, database As Variant
  7.        
  8.         server = Range("E8")
  9.         uid = Range("E10")
  10.         pwd = Range("E12")
  11.         database = Range("E14")
  12.         ActiveWindow.SelectedSheets.Visible = False
  13.        
  14.        
  15.     ‘on déclare les variables de la BDD
  16.  
  17.      ’Déclaration des variables BDD
  18.         Dim cnx As ADODB.Connection
  19.         Dim rst As ADODB.Recordset
  20.  
  21.     ‘Instanciation des variables
  22.         Set cnx = New ADODB.Connection
  23.         Set rst = New ADODB.Recordset
  24.    
  25.        
  26.     ‘Définition de la chaîne de connexion
  27.    
  28.         connstring = "driver={MySQL ODBC 3.51 Driver}; server=" & server & ";uid=" & uid & "; pwd=" & pwd & ";database=" & database
  29.         cnx.Open connstring
  30.        
  31.  

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 :

  1.  
  2. ‘on selectionne la bonne ligne
  3. b = 7
  4. rst.Open "SELECT * FROM annuaires",cnx
  5. Do While Not rst.EOF
  6.  
  7. With Sheets("annuaire") ‘on sélectionne la bonne page
  8.  
  9. ‘on sélectionne une ligne (avec b) et une colonne(avec le chiffre)
  10. Cells(b, 8).Select
  11. ActiveCell.Formula = rst(0) ‘cela récupère le premier enregistrement
  12. Cells(b, 9).Select
  13. ActiveCell.Formula = rst(1) ‘cela récupère le deuxième enregistrement
  14.  
  15. ‘on continue ainsi de suite
  16. b = b + 1 ‘ce qui permet de changer de ligne
  17.  
  18. End With
  19. rst.MoveNext ‘– Passage à l’enregistrement suivant
  20. Loop
  21.  

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: , , , , , ,   Posted in excel, vba

  • Créer un annuaire en excel avec une base de donnée SQL
  • Créer un annuaire Excel : rechercher dans les contacts en VBA et MYSQL
  • Gestion des certificats sur Excel (et Office en général), comment faire ?
  • Passer en mode DEVELOPPEUR sur Excel !
  • Excel : Évitez les crises d’épilepsie !
  • Laisser un commentaire

    Votre commentaire :