Si vous créez une macro un peu plus complexe ou directement une application en Excel, il se peut que ce programme soit multilingue. Dans ce cas, vous pouvez prévoir une langue par défaut qui sera utilisé avant que l'utilisateur choisisse lui-même une langue. Mais il existe une meilleure méthode qui donnera un aspect plus professionnel à votre fichier: trouver la langue d'Excel que l'utilisateur utilise et prendre celle-ci comme langue de référence. Dans la plupart des cas, il s'agira de la langue de l'utilisateur et il ne devra même pas faire le choix – la langue correcte lui sera proposée dès le début.
Pour cela, il est nécessaire de trouver la langue dans laquelle MS Excel a été installé. Cela peut être fait grâce à la fonction suivante:
1 2 3 4 5 |
Application.LanguageSettings.LanguageID(msoLanguageIDUI) |
Cette fonction ne retourne pas le nom de la langue mais son code numérique. Il nous faudra donc traduire ce code en un nom de la langue.
Nous avons donc le numéro de la langue et le nom de la langue correspondant. Il ne reste plus qu'à combiner ces deux information pour en faire une fonction VBA utilisable.
Fonctions VBA pour trouver la langue de l'utilisateur
Je vous propose ici deux fonctions VBA différentes:
- la première indique les langues principales (anglais, français, allemand,…) et remplace les autres (roumain, tamoul,…) langues par une mention "Autre" (vous pouvez remplacer cette mention par une autre qui correspond le mieux à vos besoins)
- la deuxième fonction VBA proposée distingue toutes les langues, même les plus exotiques. A vous de l'adapter pour qu'elle corresponde au mieux à vos besoins
Fonction VBA simplifiée pour déterminer la langue d'utilisateur
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 |
Public Function LangueSysteme() 'par: https://excel-malin.com On Error GoTo FunctionErreur Dim CodeLangueSysteme As Single 'trouver le code de la langue CodeLangueSysteme = Application.LanguageSettings.LanguageID(msoLanguageIDUI) 'associer le code à la langue (langues principales, les autres sont remplacées par l'anglais" Select Case CodeLangueSysteme Case 1036, 2060, 11276, 3084, 9228, 12300, 15372, 5132, 13324, 6156, 14348, 58380, 8204, 10252, 4108, 7180: LangueSysteme = "Français" Case 1033, 2057, 3081, 10249, 4105, 9225, 15369, 16393, 14345, 6153, 8201, 17417, 5129, 13321, 18441, 7177, 11273, 12297: LangueSysteme = "Anglais" Case 1031, 3079, 5127, 4103, 2055: LangueSysteme = "Allemand" Case 2052, 4100, 1028, 3076, 5124: LangueSysteme = "Chinois" Case 1043, 2067: LangueSysteme = "Néerlandais" Case 1040, 2064: LangueSysteme = "Italien" Case 3082, 1034, 11274, 16394, 13322, 9226, 5130, 7178, 12298, 17418, 4106, 18442, 22538, 2058, 19466, 6154, 15370, 10250, 20490, 21514, 14346, 8202: LangueSysteme = "Espagnol" Case 1025, 5121, 15361, 3073, 2049, 11265, 13313, 12289, 4097, 6145, 8193, 16385, 10241, 7169, 14337, 9217: LangueSysteme = "Arabe" Case Else: LangueSysteme = "Autre" End Select Exit Function FunctionErreur: LangueSysteme = "" End Function |
Fonction complète pour déterminer la langue d'Excel de l'utilisateur
Cette fonction est assez longue car elle liste toutes les langues disponibles dans Windows. Vous l'afficherez en cliquant sur l'accordéon ci-dessus…
L'avantage de cette fonction est qu'elle est tout à fait complète. À vous de voir si vous avez l'utilité de la liste complète des langues possibles…
Astuce pour une utilisation optimale de ces fonctions VBA
Cette fonction peut être utilisée directement dans la feuille de votre fichier Excel (comme une "UDF – User Defined Function") ou comme une partie de votre code VBA.
Dans une Feuille, la formule à utiliser serait: =LangueSysteme()
Pour simplifier l'utilisation de cette fonction dans votre code, il peut être intéressant de remplacer les noms des langues par leur code ISO: 639-1 en deux lettres (par ex. le français = "FR") ou le 639-2 en trois lettres (par ex. le français = "FRA").
Plus d'infos et la liste des codes: Wikipédia – Liste des codes ISO 639-1
Pour aller plus loin en VBA
Voici quelques autres articles qui pourraient vous servir…
- Liste de toutes les fonctions VBA
- Suivre l'activité de l'utilisateur (log) en VBA – tutoriel
- Manipulation des fichiers en VBA
- Comment utiliser RECHERCHEV en VBA
- Comment protéger le code VBA avec un mot de passe