Gérer des paramètres d’application

Votre application Access doit généralement stocker des paramètres pour son fonctionnement : coordonnées de l’entreprise, options diverses. Il y a plein de manières de gérer ces paramètres, pourquoi ne pas utiliser une table ?

Le principe

L’idée consiste à créer une table qui stockera tous les paramètres de l’application, comme dans l’exemple ci-dessous.

parametres_appli.png

Quelques remarques :

  • Il s’agit d’une table de paramètres bruts. L’idée est qu’elle soit très évolutive (on doit pouvoir rajouter facilement des paramètres, sans modifier l’application). D’où le fait que je n’ai pas créé de champs Nom Entreprise, Adresse, CP, etc. mais plutôt des lignes. Dans une « vraie table » des entreprises, j’aurais créé des champs, bien sûr.
  • En résumé : la table n’aura que 2 champs, quel que soit le nombre de paramètres.
  • J’ai nommé certains paramètres avec un « . » comme Entreprise.Nom. Il s’agit juste d’une convention pour organiser les paramètres. On pourrait aussi créer une colonne Catégorie, mais je ne souhaite pas alourdir le modèle à ce stade.

Le code

La table peut être manipulée manuellement, comme n’importe quelle table Access. Mais il sera plus pratique de gérer son accès au travers de quelques fonctions ou procédures VBA. De cette manière, la table deviendra transparente pour l’application elle-même. Recopiez tout le code qui suit, dans un module standard de votre base de données :

Explications

Le code VBA contient 4 fonctions ou procédures :

  • CreateParamTable
    Cette procédure vérifie si la table de paramètres existe, et propose de la créer sinon. Le plus simple est donc d’appeler ce bloc de code une fois, et la table sera prête. Si le nom de la table ou de ses champs ne vous conviennent pas (vous êtes exigeant, dites !), vous pouvez modifier les constantes en début de module.
  • SetParam
    Cette procédure ajoute un nouveau paramètre dans la table, ou met à jour un paramètre existant.
  • GetParam
    Cette fonction lit un paramètre dans la table. Vous devez lui fournir le nom du paramètre, et optionnellement une valeur par défaut. Si le paramètre existe, sa valeur est récupérée ; sinon, c’est la valeur par défaut qui est renvoyée. Lorsque la valeur par défaut est omise, c’est une chaîne vide qui fait office de valeur par défaut.
  • DelParam
    Cette procédure supprime un paramètre de la table.

Exemples

Astuce

La fonction GetParam() peut également être utilisée dans une requête, un formulaire ou un état. Par exemple, dans une zone de texte, en pied d’état, vous pouvez écrire :

Pour que tout fonctionne…

Le code VBA qui précède utilise d’autres bouts de code déjà postés sur le blog. Pensez donc à :

Vous aimerez aussi...

10 réponses

  1. Hervé Inisan dit :

    mel > Il faudrait que la fermeture du 1er formulaire déclenche quelque chose comme :

  2. mel dit :

    Merci, le premier formulaire se lance au demarrage pour la saisie des infos de la societe et apres un formulaire (menu general) se lance et desormais ce menu se lance au demarrage ?

  3. Hervé Inisan dit :

    mel > Euh.. Est-ce que tu peux préciser ? La partie « formulaire qui se lancera au lancement » n’est pas claire 😉

  4. mel dit :

    Merci, j’ai creer un formulaire sur cette table, je voudrais que se lance au demarrage de la base et apres saisie une autre formulaire qui se lancera desormais au lancement. Comment faire? Merci

  5. Hervé Inisan dit :

    david > De rien ! 🙂

  6. david dit :

    Merci Hervé !

  7. Hervé Inisan dit :

    david > Il s’agit de la fonction StringFormat() mais pas StingFormat() (le « r » manque). Attention : il ne s’agit pas d’une fonction « native » Access, il faut que tu la reprennes sur cette page du site.

  8. david dit :

    Bonjour Hervé,
    Merci pour la réponse ! Désolé du retard :=) j’ai complétement oublié que j’avais posé une question!
    Mais j’avais entré un paramètre différent dans la table (faute de frappe).
    Donc, résolu !
    Par contre la compilation provoque une erreur au niveau de StingFormat. Le message est « Sub or function not defined ».
    Je suis sur Access2010 et W7 PRO 64BIT.
    Si tu as une explication je suis preneur. Merci beaucoup.
    david

  9. Hervé Inisan dit :

    david > S’il s’agit de modifier la légende des boutons à l’aide de paramètres, ça devrait marcher (testé sur Access 2013 notamment).

    • Est-ce que le bug pourrait provenir du If ?
    • staff_ctrl est de quel type ?
  10. david dit :

    bonjour,
    c’est une bonne idée que cette table de paramètres.
    par contre la fonction GetParam()ne fonctionne pas sur les boutons.

    voici mon code:

    Private Sub bt_ctrl_Click()
    On Error GoTo Err_bt_ctrl_Click

    If Me.[staff_ctrl] = « non » Then
    Me.staff_ctrl = ctl_no
    Me.bt_ctrl.Caption = GetParam(« nom_btn_a », « aaa »)
    Me.lbl_ctrl_n.Visible = True
    Me.lbl_ctrl_y.Visible = False
    Else
    Me.[staff_ctrl] = « oui »
    Me.bt_ctrl.Caption = GetParam(« nom_btn_b », « bbb »)
    Me.lbl_ctrl_n.Visible = False
    Me.lbl_ctrl_y.Visible = True
    End If

    Exit_bt_ctrl_Click:
    Exit Sub

    Err_bt_ctrl_Click:
    MsgBox Err.Description
    Resume Exit_bt_ctrl_Click

    End Sub

    le code est bien enregisté dans un module et les noms de paramètres (nom_btn_a et b)sont bien créés dans la table parametres.

    merci pour vos lumières.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *