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 :

Gérer un classeur Multilingue [XL-2010]


Sujet :

Macros et VBA Excel

  1. #21
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Y a-t-il des contraintes particulières dans ce projet ?
    Sinon je te suggère de faire tout simplement une fonction personnalisée en VBA qui va faire ce que la formule que je t'ai proposée fait. cela fera moins de 10 lignes.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  2. #22
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 24
    Points : 4
    Points
    4
    Par défaut
    Non en fait il n'y a pas de contraintes particulières
    il faut que tout soit coder sur VBA et aucune fonction ne doit apparaitre dans la zone "inserer une fonction" dans excel!!
    Toute suggestion est la bienvenue

  3. #23
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Alors ce que je voulais te proposer ne pourra pas fonctionner puisqu'il s'agissait d'une fonction personnalisée qui doit être placée dans chaque cellule à traduire.
    Pour quoi la proposition de Parmi ne te convient pas alors ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #24
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 24
    Points : 4
    Points
    4
    Par défaut
    Bonjour Philippe,
    Tu peux me la montrer quand même cette fonction personnalisée (comme ça j'aurai plusieurs tentatives le jour du briefing)
    La méthode de Parmi, il n'a pas trop dévelloper donc j'essaierai d'y travailler et de comprendre son code dèjà sinon je lui demande plus d'explications

    Bonjour,
    j'ai tenté une autre méthode, transcrire un "index/equiv" en vba (valeur recherchee du equiv issue d'un combobox, tableau de recherche dans une feuille et resultat final dans les cellule)

    =INDEX(pnTranslate;EQUIV("MONTEXTE";pnTranslate_Ref;0);cnLanguage)
    cette fonction donné par Philippe marche très bien par contre il fallait l'automatiser, j'exécute ce code mais il n'affiche rien, pourriez vous le vérifier SVP

    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
    Sub TraduireTexte()
     
        pnTranslate = Sheet("traduction").Range("A2:E16")
        pnTranslate_Ref = Sheet("traduction").Range("A2:A16")
        cnLanguage = Sheet("Langue").Cells(2, 3)
     
         For Each cell In Sheet("Sommaire")
            Var = Application.Match(cell.Value, pnTranslate_Ref, 0)
     
            If cell.Value <> "" Then
                cell.Value = Application.Index(pnTranslate, Var, cnLanguage)
     
                'cell.Value = Application.Index(pnTranslate, Application.Match(cell.Value, pnTranslate_Ref, 0), cnLanguage)
                'cell.Value = Application.WorksheetFunction.Index(Sheet("traduction").Range("A2:E16"), Application.WorksheetFunction.Match _
                '                 (cell.Value, Sheet("traduction").Range("A2:A16"), 0), cnLanguage)
     
            End If
        Next cell
     
    End Sub
    Merci par avance

  5. #25
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Un bon début serait de mettre Option Explicit en début de chaque module de code.
    Ça t'obligerait à déclarer toutes tes variables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each cell In Sheet("Sommaire")
    Ici, il manque la plage de cellules, je pense...
    MPi²

  6. #26
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 24
    Points : 4
    Points
    4
    Par défaut
    Pas besoin de la plage de cellules, je crois, car je veux qu'il cherche dans toutes les cellules de la feuille

    J'ai reconstitué mon code et cette fois il m'affiche Erreur d'exécution '91'!!!

    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
     
    Option Explicit
    Sub TraduireTexte()
     
       Dim pnTranslate, pnTranslate_Ref, cnLanguage, Var As String
       Dim Wb As Workbook                   'Définit une variable qui va représenter un classeur
       Dim Ws As Worksheet                  'Définit une variable qui va représenter une feuille de calcul
       Dim C As Range                          'Définit une variable qui va représenter une cellule
     
        pnTranslate = Sheets("traduction").Range("A2:E16")
        pnTranslate_Ref = Sheets("traduction").Range("A2:A16")
        cnLanguage = Sheets("Langue").Cells(2, 3)
        Var = Application.Match(C.Value, pnTranslate_Ref, 0)
     
        For Each C In Ws("Sommaire")
            If C.Value <> "" Then
                C.Value = Application.Index(pnTranslate, Var, cnLanguage)
            End If
        Next C
    End Sub

  7. #27
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par lilia92 Voir le message
    Pas besoin de la plage de cellules, je crois,
    Sauf si la durée de la procédure a un peu d'intérêt...
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  8. #28
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 24
    Points : 4
    Points
    4
    Par défaut
    Oui c'est bon j'ai limité la recherche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each C In Ws("Sommaire").Range("A1:N21")
    par contre; j'ai toujours l'erreur 91!!!

  9. #29
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Remplace Ws par Worksheets.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  10. #30
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 24
    Points : 4
    Points
    4
    Par défaut
    Pareil!! Variable objet ou variable de bloc With non définie

  11. #31
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Range n'étant pas une collection, ton For Each ne peut pas marcher. Il faudrait ajouter un Cells à la fin.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  12. #32
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 24
    Points : 4
    Points
    4
    Par défaut
    Ca marche pas non plus!! erreur 91

  13. #33
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour à tous,

    Juste de passage, je regardais le dernier code proposé.

    Sauf erreur de ma part, la variable "C" n'est pas définie au moment où l'instruction suivante est appelée ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Var = Application.Match(C.Value, pnTranslate_Ref, 0)
    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  14. #34
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par lilia92 Voir le message
    Ca marche pas non plus!! erreur 91
    Sur quelle ligne se produit l'erreur ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  15. #35
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 24
    Points : 4
    Points
    4
    Par défaut
    Bonjour Menhir

    je crois que j'ai un peu avancé sur mon programme, plus de message d'erreur, mais encore 2 problemes

    1) Il remplace pas Cell.Value par le contenu de la cellule mais il me colle ce code comme il est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=INDEX(pnTranslate,MATCH(""Cell.Value"",pnTranslate_Ref,0),cnLanguage)"
    2) Il trouve la première cellule remplie mais il ne met pas le code dedans, je crois que ca vient du fait que j'utilise (ActiveCell), je ne sais pas par quoi la remplasser, si je mets (Cell) il colle le code dans toute les cellules pas vide du champ Range("A1:G15")

    Merci par avance


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub traduire()
     
    Dim Cell As Range         'Définit une variable qui va représenter une cellule
     
        For Each Cell In Worksheets("Sommaire").Range("A1:G15")
            If Not IsEmpty(Cell.Value) Then
        ActiveCell.FormulaR1C1 = _
            "=INDEX(pnTranslate,MATCH(""Cell.Value"",pnTranslate_Ref,0),cnLanguage)"
            End If
        Next Cell
     
    End Sub

  16. #36
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 24
    Points : 4
    Points
    4
    Par défaut
    d'après la page d'aide excel: EQUIV(valeur_cherchée, matrice_recherche, [type])

    L’argument valeur_cherchée (qui correspond à Cell.Value): peut être une valeur (nombre, texte ou valeur logique) ou une référence de cellule à un nombre, à du texte ou à une valeur logique.

    ma question est: est ce que cette argement peut accepter une référence du contenu d'une cellule??

  17. #37
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par lilia92 Voir le message
    je crois que j'ai un peu avancé sur mon programme, plus de message d'erreur
    Et ça ne te serait pas venu à l'esprit de le signaler sur ce forum pour éviter à certain de perdre du temps à chercher une solution ?

    2) Il trouve la première cellule remplie mais il ne met pas le code dedans, je crois que ca vient du fait que j'utilise (ActiveCell), je ne sais pas par quoi la remplasser, si je mets (Cell) il colle le code dans toute les cellules pas vide du champ Range("A1:G15")
    Mets "Cell" à la place de "ActiveCell" et met un "Exit For" juste avant ton "End If".
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  18. #38
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 24
    Points : 4
    Points
    4
    Par défaut
    Bonjour;
    Excusez moi tout le monde pour ne pas avoir signaler le progrès de mon code

    oui en effet probleme 2) résolu merci bcp Menhir, mais pas le 1) il remplace pas Cell.Value par le contenu de la cellule mais il me colle toujours ce code comme il est

  19. #39
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cell.FormulaR1C1 = "=INDEX(pnTranslate,MATCH("+Cell.Value+",pnTranslate_Ref,0),cnLanguage)"
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  20. #40
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 24
    Points : 4
    Points
    4
    Par défaut
    Erreur 1004
    Erreur définie par l'application ou par l'objet
    Test_Langue_test.xlsx

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Comment gérer un rapport multilingue ?
    Par loki9481 dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 06/02/2012, 11h03
  2. Choix technique pour gérer le multilingue
    Par guy_lux dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 25/08/2008, 16h44
  3. Logiciel pour gérer les resources multilingues
    Par BabelTool dans le forum Mon programme
    Réponses: 2
    Dernier message: 21/06/2007, 10h16
  4. Réponses: 1
    Dernier message: 30/01/2007, 09h10
  5. [SGBDR] Comment gérer le multilingue ?
    Par tode dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 29/11/2005, 22h19

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