VBA: trouver la langue d’Excel et le pays de l’utilisateur

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:

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.

La liste complète des langues avec leur codes (cliquez pour afficher la liste)

Codes de langue en Windows

LanguePays / RégionCode LCID
AfrikaansSouth Africa1078
AlbanianAlbania1052
Alsatian1156
AmharicEthiopia1118
ArabicSaudi Arabia1025
ArabicAlgeria5121
ArabicBahrain15361
ArabicEgypt3073
ArabicIraq2049
ArabicJordan11265
ArabicKuwait13313
ArabicLebanon12289
ArabicLibya4097
ArabicMorocco6145
ArabicOman8193
ArabicQatar16385
ArabicSyria10241
ArabicTunisia7169
ArabicU.A.E.14337
ArabicYemen9217
ArmenianArmenia1067
Assamese1101
Azeri (Cyrillic)2092
Azeri (Latin)1068
Bashkir1133
Basque1069
Belarusian1059
Bengali (India)1093
Bengali (Bangladesh)2117
Bosnian (Bosnia/Herzegovina)5146
Breton1150
Bulgarian1026
Burmese1109
Catalan1027
CherokeeUnited States1116
ChinesePeople's Republic of China2052
ChineseSingapore4100
ChineseTaiwan1028
ChineseHong Kong SAR3076
ChineseMacao SAR5124
Corsican1155
Croatian1050
Croatian (Bosnia/Herzegovina)4122
Czech1029
Danish1030
Dari1164
Divehi1125
DutchNetherlands1043
DutchBelgium2067
Edo1126
EnglishUnited States1033
EnglishUnited Kingdom2057
EnglishAustralia3081
EnglishBelize10249
EnglishCanada4105
EnglishCaribbean9225
EnglishHong Kong SAR15369
EnglishIndia16393
EnglishIndonesia14345
EnglishIreland6153
EnglishJamaica8201
EnglishMalaysia17417
EnglishNew Zealand5129
EnglishPhilippines13321
EnglishSingapore18441
EnglishSouth Africa7177
EnglishTrinidad11273
EnglishZimbabwe12297
Estonian1061
Faroese1080
Farsi1065
Filipino1124
Finnish1035
FrenchFrance1036
FrenchBelgium2060
FrenchCameroon11276
FrenchCanada3084
FrenchDemocratic Rep. of Congo9228
FrenchCote d'Ivoire12300
FrenchHaiti15372
FrenchLuxembourg5132
FrenchMali13324
FrenchMonaco6156
FrenchMorocco14348
FrenchNorth Africa58380
FrenchReunion8204
FrenchSenegal10252
FrenchSwitzerland4108
FrenchWest Indies7180
FrisianNetherlands1122
FulfuldeNigeria1127
FYRO Macedonian1071
Galician1110
Georgian1079
GermanGermany1031
GermanAustria3079
GermanLiechtenstein5127
GermanLuxembourg4103
GermanSwitzerland2055
Greek1032
Greenlandic1135
GuaraniParaguay1140
Gujarati1095
HausaNigeria1128
HawaiianUnited States1141
Hebrew1037
Hindi1081
Hungarian1038
IbibioNigeria1129
Icelandic1039
IgboNigeria1136
Indonesian1057
Inuktitut1117
Irish2108
ItalianItaly1040
ItalianSwitzerland2064
Japanese1041
K'iche1158
Kannada1099
KanuriNigeria1137
Kashmiri2144
Kashmiri (Arabic)1120
Kazakh1087
Khmer1107
Kinyarwanda1159
Konkani1111
Korean1042
Kyrgyz (Cyrillic)1088
Lao1108
Latin1142
Latvian1062
Lithuanian1063
Luxembourgish1134
MalayMalaysia1086
MalayBrunei Darussalam2110
Malayalam1100
Maltese1082
Manipuri1112
MaoriNew Zealand1153
Mapudungun1146
Marathi1102
Mohawk1148
Mongolian (Cyrillic)1104
Mongolian (Mongolian)2128
Nepali1121
NepaliIndia2145
Norwegian (Bokmål)1044
Norwegian (Nynorsk)2068
Occitan1154
Oriya1096
Oromo1138
Papiamentu1145
Pashto1123
Polish1045
PortugueseBrazil1046
PortuguesePortugal2070
Punjabi1094
Punjabi (Pakistan)2118
QuechaBolivia1131
QuechaEcuador2155
QuechaPeru3179
RhaetoRomanic1047
Romanian1048
RomanianMoldava2072
Russian1049
RussianMoldava2073
Sami (Lappish)1083
Sanskrit1103
Scottish Gaelic1084
Sepedi1132
Serbian (Cyrillic)3098
Serbian (Latin)2074
SindhiIndia1113
SindhiPakistan2137
SinhaleseSri Lanka1115
Slovak1051
Slovenian1060
Somali1143
Sorbian1070
SpanishSpain (Modern Sort)3082
SpanishSpain (Traditional Sort)1034
SpanishArgentina11274
SpanishBolivia16394
SpanishChile13322
SpanishColombia9226
SpanishCosta Rica5130
SpanishDominican Republic7178
SpanishEcuador12298
SpanishEl Salvador17418
SpanishGuatemala4106
SpanishHonduras18442
SpanishLatin America22538
SpanishMexico2058
SpanishNicaragua19466
SpanishPanama6154
SpanishParaguay15370
SpanishPeru10250
SpanishPuerto Rico20490
SpanishUnited States21514
SpanishUruguay14346
SpanishVenezuela8202
Sutu1072
Swahili1089
Swedish1053
SwedishFinland2077
Syriac1114
Tajik1064
Tamazight (Arabic)1119
Tamazight (Latin)2143
Tamil1097
Tatar1092
Telugu1098
Thai1054
TibetanBhutan2129
TibetanPeople's Republic of China1105
TigrignaEritrea2163
TigrignaEthiopia1139
Tsonga1073
Tswana1074
Turkish1055
Turkmen1090
UighurChina1152
Ukrainian1058
Urdu1056
UrduIndia2080
Uzbek (Cyrillic)2115
Uzbek (Latin)1091
Venda1075
Vietnamese1066
Welsh1106
Wolof1160
Xhosa1076
Yakut1157
Yi1144
Yiddish1085
Yoruba1130
Zulu1077
HID (Human Interface Device)1279

Cette liste se base sur le site officiel de Microsoft: Microsoft: System language codes

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

 

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…

Cliquez pour visualiser le code de la fonction

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…

 

Laissez un commentaire

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