IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Changer la langue de Excel en vba [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut Changer la langue de Excel en vba
    Bonjour,

    Je réalise actuellement une automatisation de pas mal de tableau avec des macros or mon Excel est en anglais mais celui des utilisateurs pourrait être en français/belge.
    Donc quand je renomme "Sheet1" par exemple ça ne marchera plus, donc je me demandais si il était possible de changer la langue d'excel au début de la macro et de la remettre dans la langue d'origine à la fin.
    J'avais lu qqch a propos de FormulaLocal pour que les formules s'adaptent d'elles-même mais ça ne résoud pas le problème du nom des sheets.

    Merci d'avance.

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    modifier la langue ? Je ne sais pas faire et hélas pas le temps de creuser ce jour.

    en revanche, voici pour détecter la langue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Select Case Application.LanguageSettings.LanguageID(msoLanguageIDUI)
        Case 2060
            MsgBox "Votre langue est le français belge, une fois !"
        Case 1036
            MsgBox "Votre langue est le français français, mettez-vous en grève !"
        Case 1033
            MsgBox "Your Language is English-USA ... ok my English is so baaaaad..."
        Case Else
            MsgBox "Aloa ? Je ne reconnais pas votre langue"
    End Select
    si besoin de la liste complète, va voir chez Microsoft : https://msdn.microsoft.com/en-us/goglobal/bb964664


    Tu pourrais à l'ouverture du classeur détecter la langue et initialiser une variable publique qui te permettrait d'ajuster tes macros en conséquence ?





    EDIT : trouvé chez nos amis anglais, la fonction complète, plus besoin de Select Case !

    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
    35
    36
    37
    38
    39
    40
    41
    42
    Sub GetXlLang()
            Dim lngCode As Long
            lngCode = Application.LanguageSettings.LanguageID(msoLanguageIDUI)
            MsgBox "Code is: " & lngCode & vbNewLine & GetTxt(lngCode)
        End Sub
     
        Function GetTxt(ByVal lngCode) As String
            Dim objXmlHTTP As Object
            Dim objRegex As Object
            Dim objRegMC As Object
            Dim strResponse As String
            Dim strSite As String
     
            Set objXmlHTTP = CreateObject("MSXML2.XMLHTTP")
            strSite = "http://msdn.microsoft.com/en-us/goglobal/bb964664"
     
            On Error GoTo ErrHandler
            With objXmlHTTP
                .Open "GET", strSite, False
                .Send
                If .Status = 200 Then strResponse = .ResponseText
            End With
            On Error GoTo 0
     
            strResponse = Replace(strResponse, "</td><td>", vbNullString)
            Set objRegex = CreateObject("vbscript.regexp")
            With objRegex
                .Pattern = "><td>([a-zA-Z- ]+)[A-Fa-f0-9]{4}" & lngCode                    
                If .Test(strResponse) Then
                    Set objRegMC = .Execute(strResponse)
                    GetTxt = objRegMC(0).submatches(0)
                Else
                    GetTxt = "Value not found from " & strSite
                End If
            End With
            Set objRegex = Nothing
            Set objXmlHTTP = Nothing
            Exit Function
    ErrHandler:
            If Not objXmlHTTP Is Nothing Then Set objXmlHTTP = Nothing
            GetTxt = strSite & " unable to be accessed"
        End Function

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Bonne idée, et merci pour le code, je testerais dès que j'aurai le temps.

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Bonjour,

    La deuxième fonction renvoie le message d'erreur, si j'ai bien compris elle va chercher la réponse sur le site de microsoft, c'est surement le firewall de l'entreprise qui doit bloquer l'accès.
    Mais de toute façon la première suffisait pour répondre à mes besoins, je vais déjà coder pour français/belge et anglais c'est déjà pas mal.

    Merci encore pour la réponse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2013] Application.Speech.Speak _code VBA pour changer la langue
    Par baryum dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/02/2022, 13h08
  2. Changer la largeur de colonnes par vba (excel 97)
    Par jneron dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/09/2007, 11h14
  3. Comment décaller un bloc de cellule Excel en VBA
    Par bbkenny dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/01/2005, 20h00
  4. [Debutant(e)] changer la langue dans eclipse
    Par omega dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 16/03/2004, 16h47
  5. fonction MessageDlg Delphi :changer la langue
    Par julie20 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 06/06/2003, 17h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo