Problème de traduction anglais/français macro

Bonjour,

Je viens vers vous car j'ai cherché presque partout sur le net mais je n'ai pas réussi à trouver une réponse efficace !

Voici mon problème

Je suis en stage et on m'a demandé d'automatiser certaine feuille de calcul pour gagner du temps à l'aide de quelques macro.

J'ai donc réalisé le plus gros de mon travail en enregistrant des macro pour créer des tableaux, les ranger, faire quelques opérations sommes, différences...

Ma macro fonctionne très bien sur mon ordinateur, mais lorsque mes collègues veulent l'utiliser, si ils ont une version française, plus rien ne fonctionne !

Par exemple j'ai modifier le style de certaines cellules sur une ligne pour leur donner le style "good"

Lorsque je lance la macro sur un Excel français, la macro bug sur la ligne et je dois changer le mot "Good" par "Satisfaisant" si je veux que la macro puisse fonctionner. De même si je fais référence au une feuille "Sheet1", je dois la remplacer par "Feuil1".

Range("A1:A7").Select

Range("A7").Activate

Selection.Style = "Good" <----- Si je remplace par "Satisfaisant" tout fonctionne !

Range("B1:W1").Select

Selection.Style = "Good"

Ma macro est longue et je ne veux pas avoir à modifier tout les mots anglais en français ! Que puis je faire ?

J'ai lu qu'il fallait utiliser Formula plutôt que FormulaLocal mais dans mon code je n'ai n'y l'un n'y l'autre

Après j'ai vu qu'il était possible de détecter la langue de l'utilisateur pour modifier en anglais mais je ne comprend pas la formule et je n'arrive pas à l’exécuter...

Si quelqu'un peut m'orienter ça serait super mais alors super sympa

Bonjour,

Essaie ainsi avec le numéro du style.

A vérifier !...

Cdlt.

Range("A1:A7").Style = ActiveWorkbook.Styles(38)
Range("B1:W1").Style = ActiveWorkbook.Styles(38)
78styles-en-fr.xlsx (15.90 Ko)

Merci Jean-Eric

Ca fonctionne pour mon problème de mise en page ca fait plaisir !

Cependant j'ai toujours plusieurs problème de traduction.

Si je dois intervenir manuellement à chaque fois qu'il y'a marqué "Good" ou "SheetX" je suis pas sortie de l'auberge !

En tout cas merci beaucoup pour m'avoir répondu !

Re,

Pour les feuilles, n'utilise pas le CodeName de la feuille, mais son nom d'onglet.

Le nom des feuilles (onglets) n'ont pas pas à être traduits, je pense !...

En clair, déclarer et typer toutes les variables.

Dim wb as workbook, ws as worksheet
set wb=Activeworkbook
set ws=wb.worksheets("Feuil1")
ws.range("A1:A7").style=wb.styles(38)

Nota : pour plus d'informations, joins un classeur (anonymisé si nécessaire).

Bonjour à tous

Pour ma part, je construirais un tableau d'équivalence.

On doit pouvoir récupérer la langue de l'interface et du coup appeler ou le colonne FR ou la colonne US (ou russe ou chinois) du tableau de correspondance en fonction de cette langue.

Re,

Bonjour Chris,

C'est ce que j'ai essayé de fournir précédemment.

Je joins une procédure pour lister les styles dans un classeur. Il serait intéressant qu'un intervenant qui travaille avec une version anglaise (ou autre) la lance dans un classeur(vierge) et renvoie les résultats.

On pourra vérifier ce que j'ai envoyé précédemment.

Pour le langage utilisé, je donne une autre procédure (exemple) pour déterminer la langue de MS-Office installée..

Cdlt.

Option Explicit
'A lancer dans un classeur vierge
Public Sub ListOfStyles()
Dim wb As Workbook
Dim n As Long, i As Long, rw As Long

    Set wb = ThisWorkbook
    n = wb.Styles.Count

    With wb.Worksheets(1)
        .Cells(1).Resize(, 3).Value = Array("Index", "Name", "Local Name")
        rw = 1
        For i = 1 To n
            rw = rw + 1
            .Cells(rw, 1) = i
            .Cells(rw, 2) = wb.Styles(i).Name
            .Cells(rw, 3) = wb.Styles(i).NameLocal
        Next
    End With

End Sub
'Exemple
Public Sub Language()
    Select Case Application.LanguageSettings.LanguageID(msoLanguageIDUI)
        Case 1036: MsgBox "Français"
        Case Else: MsgBox "Anglais"
    End Select
End Sub

Re

Oups je n'avais pas vu la pièce jointe juste le code

Bonjour,

voici le résultat avec ma version UK 2013

Re,

Bonjour h2so4;

Merci de ton retour.

Cela ne se présente pas comme je le souhaitais.

Le fichier mis à jour.

Cdlt.

53styles-en-fr.xlsx (17.50 Ko)

Re

Pourquoi faire simple quand on peut faire compliqué chez MS !

Reste les libellés mais c'est un peu risqué d'autant que nombre de traductions changent à chaque version...

Merci de m'aider c'est sympa !

est ce que je pourrais pas passer par une condition ?

Si "feuil1" remplace par etc...

Mais il faudrait détecter la langue de l'utilisateur avant.

Bonjour,

Merci de joindre un classeur à ta demande avec les noms des langages attendus.

Cdlt.

Voila le fameux fichier

En Feuil1 on retrouve le tableau que je dois trier.

Ma Macro qui s'appelle "ClassementAutomatique" crée une nouvelle feuille "Feuil2" et y construit un tableau en fonction de 6 secteurs et de 11 manipulations.

Dans cette nouvelle page, j'y crée 11 tableaux croisés dynamiques pour pouvoir remplir le tableau précédemment créé.

Je dois y faire quelque opération tel que la somme des "divers" et des "arrets prevus".

Etc...

Ma macro fonctionne sur mon Excel qui est en francais, mais impossible de la lancer sans bug sur un Excel anglais...

Bonjour,

Il va falloir nous dire où précisément cela bugge et nous donner les messages d'erreurs, sur les postes en versions anglaises.

Tes procédures sont loin d'être optimisées !...

Tout a été réalisé à partir de l’enregistreur de macros et je ne vois plus le rapport avec une traduction FR-EN.

Cdlt.

Bonjour Jean-Eric

Pour l'optimisation je suis tout à fait d'accord avec toi ! Etant donné que je commence le VBA, je me doute que je peux améliorer tout ca !

J'effectue l'ensemble de mes macros via l'enregistreur de macros car n'étant pas formé en informatique (pas de C++ pas de python etc) je ne sais pas comment faire, je comprends plus ou moins ce que veut dire mon programme quand j'ouvre l'éditeur mais je serais incapable de l'écrire seul...

Je pense que je ne m'exprime pas correctement et que mon problème peut être solutionné par quelqu'un dont c'est le métier (pas faute de recherche ! j'ai même acheté "le livre d'excel 2016 de chez first interactive")

Bon, trêve de plaisanterie, lorsque je lance le fichier que je vous ai joint sur mon Excel anglais, après avoir lancé la macro "ClassementAutomatique" un message s'affiche "Run-time error '5' : Invalid procedure call or argument.

Je vais dans l'éditeur et je vois que c'est au niveau lorsque la macro "TableauCroiséDynamique"

TableDestination:="Feuil2!R10C2",.....

Et c'est là qu'il faudrait qu'il y est "Sheet2!R10C2" si la personne qui utilise un Excel anglais ouvre le fichier et "Feuil2!R10C2" si la personne a un Excel francais...

RE,

Donc tu crées dans ton classeur une feuil2 avant de lancer ta procédure.

Créée avant, le nom ne posera plus de problème !...

Cdlt.

Bonjour,

J'ai suivi tes conseils, et ca commence a fonctionner tout doucement.

Lorsque je créé une nouvelle feuille je lui ai donné un nom donc plus de problème avec sheet1...

Cependant je rencontre un problème un peu plus loin...

Dans ma macro, lorsque j'arrive sur la partie "TableauCroiséDynamique" le debogage me surligne la ligne 471.

With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Co cs") et je ne comprends pas pourquoi !

Rechercher des sujets similaires à "probleme traduction anglais francais macro"