Bonjour,

Sans prétention mais surtout parceque j'ai un peu sué dessus pour y arriver (même si j'ai l'impression de réinventer le fil à couper le beurre), voici une fonction qui permet de rendre sa base multilingues.

L'idée est d'avoir une table qui regroupe les version d'un texte en différents languages (un language par colonne), la première colone (= colonne 0) étant réservée à une numérotation croissante qui identifie chaque enregistrement.
Et par ailleurs, on définit une valeur qui correspond a la langue désirée. Ceci peut se faire via un formulaire qui reste tout le temps ouvert (genre menu principal sur lequel par exemple on a un toggle bouton avec deux choix: 1- francais, 2- anglais), soit via une variable globale initialisée au départ ou en fonction du choix de l'utilisateur. Les possibilité sont nombreuses.

Pour utiliser cette fonction, il faut d'abord initialiser le toggle bouton (ou la variable globale), puis dans le code appeler par exemple:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
MsgBox mylng(14) 'ici 14 représente le 14ème enregistrement de la table
Le principe fonctionne pour les zones de textes, les captions, enfin un peu tout quoi.

Voila.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Public Function mylng(idctrl As Integer) As String
 
Dim oDb As DAO.Database
Dim oRst As DAO.Recordset
Dim SQL As String
Dim varX As Variant
Dim n As Integer
 
Dim tbl As String
'Instancie la base de données
Set oDb = CurrentDb
 
tbl = "tbl" 'table qui contient en colone 0 un nombre croissant(indexé ou non), en colonne 1 la version française d'un texte, en colonne 2 la version étrangère du texte
SQL = "SELECT * FROM " & tbl
Set oRst = oDb.OpenRecordset(SQL)
n = Forms!MenuPrincipal!frmlng.Value 'fait référence a la valeur d'un frame contenant pour l'exemple un toggle bouton avec 2 choix
'idctrl fait référence au nombre de la colone 0 de la table de référence langues
 
Select Case frmlng
Case 1
varX = DLookup(oRst.Fields(n).Name, "tblMenuPrincipal", "[IDctrl] = " & idctrl)
Case 2
varX = DLookup(oRst.Fields(n).Name, "tblMenuPrincipal", "[IDctrl] = " & idctrl)
Case Else
End Select
 
mylng = varX
 
oRst.Close
oDb.Close
Set oRst = Nothing
Set oDb = Nothing
 
End Function