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 :

Technique de traduction


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2003
    Messages : 60
    Points : 38
    Points
    38
    Par défaut Technique de traduction
    Bonjour,

    je n'ai pas vraiment de problèmes de codes mais un Pb de technique !

    J'ai une sorte de formulaire directement dans une feuille Excel, pas dans une Form.

    L'idée, c'est d'avoir un formulaire multi-langues.
    J'ai donc 4 option button pour choisir la langue et en fonction du choix les labels changeront.
    La source, c'est un tableau avec en première colonne le nom du contrôle label et ensuite suivant la colonne la bonne traduction.

    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
     
    'récupération de la langue choisie pouir déterminer la colonne de la table trad à prendre
        If Option_EN.Select = True Then col_lang = 4
        If Option_FR.Select = True Then col_lang = 5
        If Option_ES.Select = True Then col_lang = 6
        If Option_DE.Select = True Then col_lang = 7
     
    'parcours des contrôles de ma page
        For Each Obj In ActiveSheet.OLEObjects
            'si c'est un label
            If TypeOf Obj.Object Is Label Then
                    'parcours de chaque
                    For i = 0 To NbLabel
                      'parcours du tableau de trad
                      For j = 0 To NbLigneTrad
                         If Sheets("Translation").Cells(j, 1) = Obj.Name Then
                         Obj.Caption = Sheets("Translation").Cells(j, col_lang)
                        End If
                      Next j
                    Next i
            End If
        Next Obj

    C'est une solution mais si vous avez d'autres idées pour gérer ce genre de problématique multi-langues, n'hésitez pas.

    Bonne soirée.
    Freiya

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Citation Envoyé par Freiya
    J'ai une sorte de formulaire directement dans une feuille Excel, pas dans une Form.
    ...
    C'est une solution mais si vous avez d'autres idées pour gérer ce genre de problématique multi-langues, n'hésitez pas.
    Oui, avec une Form

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2003
    Messages : 60
    Points : 38
    Points
    38
    Par défaut
    Merci ouskel'n'or

    là je n'ai pas l'opportunité de pouvoir utiliser une Form.
    Mais pour une autre occsaion je suis quand même preneuse de la technique avec une form.

    Merci

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je ne comprends pas tes for i = ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        For Each Obj In ActiveSheet.OLEObjects
            'si c'est un label
            If TypeOf Obj.Object Is Label Then
                    'parcours de chaque
                    For i = 0 To NbLabel
                      'parcours du tableau de trad
                      For j = 0 To NbLigneTrad
                         If Sheets("Translation").Cells(j, 1) = Obj.Name Then
                         Obj.Caption = Sheets("Translation").Cells(j, col_lang)
                        End If
                      Next j
                    Next i
            End If
        Next Obj
    Si tu enlèves les lignes en rouges, il se passe quoi ? Elles servent à quoi ? C'est pour ralentir ton code ? Il va trop vite ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2003
    Messages : 60
    Points : 38
    Points
    38
    Par défaut
    Exactment ça allait trop viteeeeeee !

    Bref en fait ça marchait pas
    voici le code qui marche

    cette subtilité m'a un peu NRVée obj.Object.Caption d'ailleur !
    De plus j'ai du gruger car il ne reconnaisait jamais le type d emon object

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     For Each obj In ActiveSheet.OLEObjects
           If Left(obj.Name, 5) = "Label" Then
                      'parcours du tableau de trad
                      For Nb_j = 0 To NBlABEL
                         If obj.Name = Sheets("Translation").Cells(Nb_j + 1, 1) Then
                         obj.Object.Caption = Sheets("Translation").Cells(Nb_j + 1, col_lang)
                        End If
                      Next Nb_j
            End If
        Next obj
    @+

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/07/2014, 11h51
  2. Réponses: 9
    Dernier message: 22/01/2012, 22h54

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