XL 2016 Projet multilangue

Don pépé

XLDnaute Occasionnel
Bien le bonjour.

Voila j'ai fait un classeur avec des UserForms des feuilles pour la gestion d'un camping, il est terminer mais je voudrais le rendre en multilangue.
Je sais se que vous allez me dire que j'aurais du le prévoir depuis le début de mon projet, mais c'est quelque chose que je n'avais pas penser avant ;)

J'explique se que je voudrais faire:

Une feuille "Dictionnaire" avec un tableau ou il y a toutes les traductions : Fr, En et Es
Mettre sur la feuille "Accueil" une liste déroulante pour choisir la langue
Jusque là pas de souci pour faire une liste déroulante et le dictionnaire

Avec le choix de langue je voudrais traduire tout mes userform et les feuilles. Si "En" sélectionné mettre tout les userform et les feuilles en anglais et ainsi de suite.


Si quelqu'un a une idée je suis preneur.

Merci
 

chris

XLDnaute Barbatruc
Bonjour

J'ai :
  • mis les éléments linguistiques sous forme de tableaux pour préserver l'évolutivité
  • nommé diverses plages pour la même raison
  • nommé tes labels avec des noms plus gérables que label1, label2...
  • ajouté les abréviations de langue dans le tableau des langues et les noms des labels dans le tableau des traductions
  • modifié le code de Choixdelangue et de UserForm_Initialize
  • supprimé le module TraductionForm
A noter qu'il faut veiller à ce que les titres des colonnes de langue du tableau Traductions soient identiques à la colonne Choix Langue du tableau des langues.
On pourrait sans doute se contenter d'un unique tableau...
 

Pièces jointes

  • Langues.xlsm
    27.6 KB · Affichages: 37

Don pépé

XLDnaute Occasionnel
Déjà merci Chris, tas fait un super boulot et j'aime beaucoup.
Pour ma part celui que j'avais fait, je sais que c'était pas super mais je l'ais fait a mon niveau. Et je m'aperçois que plus besoin de taper un nombre incalculable de ligne.
Je ne connaissais pas les tableau "T_langues" comme cela mais c'est bien pratique.

Bon maintenant j'ai pas mal de boulot pour l'intégrer a mon projet et remplir la base de donnée de traduction.

merci beaucoup pour ton travail. ;)
 

Don pépé

XLDnaute Occasionnel
J'ai un petit message d'erreur quand je clique sur le bouton pour voir l'userform. je comprend pas j'ai rien modifier a part de rentrer les labels et les traduction.

J'ai sa comme erreur : Erreur d'exécution'_2147024809 (80070057) - objet spécifié introuvable.
Enfaite le probleme est que si le label n'est pas dans l'userform alors il y a une erreur.

Ma question comment ne plus avoir cet erreur si le label n'est pas dans l'usuerform ?

merci
 

Pièces jointes

  • Langues.xlsm
    30.7 KB · Affichages: 28
Dernière édition:

chris

XLDnaute Barbatruc
Re
Coucou SI

Effectivement , pour éviter de boucler j'étais partie de la liste.

En partant des contrôles :
Code:
Private Sub UserForm_Initialize()
    Dim Terme As Control, Llangue As Range

    Call Choixdelangue

    For Each Llangue In Range("Langues")
        If Llangue.Value = ChoixLangue Then
            Me.Caption = "-" & Llangue.Offset(0, 1)
            Exit For
        End If
    Next

    For Each Terme In Me.Controls
        Terme.Caption = [Libelles].Find(Terme.Name).Offset(0, LangueChoisie - 1).Value
    Next

End Sub

Le reste est inchangé.
 

Don pépé

XLDnaute Occasionnel
Je revient sur se post car j'ai découvert un petit problème.

Voila je viens de m'apercevoir que si un label n'est pas dans la base, excel me met une erreur normal ;)
Comment faire pour si un label n'est pas dans la base ne pas en tenir compte et continuer la procédure ??
 

chris

XLDnaute Barbatruc
Bonjour

Modifier la seconde boucle ainsi
Code:
    For Each Terme In Me.Controls
        If Not [Libelles].Find(Terme.Name, LookAt:=xlWhole) Is Nothing Then
            Terme.Caption = [Libelles].Find(Terme.Name).Offset(0, LangueChoisie - 1).Value
        Else
            Terme.Caption = Terme.Name
        End If
    Next

Mettra alors le nom du control : donc les nommer correctement...
 

Statistiques des forums

Discussions
312 169
Messages
2 085 909
Membres
103 032
dernier inscrit
etima