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.
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
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
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
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
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
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
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.
Ici, il manque la plage de cellules, je pense...
Code : Sélectionner tout - Visualiser dans une fenêtre à part For Each cell In Sheet("Sommaire")
MPi²
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
Oui c'est bon j'ai limité la recherche
par contre; j'ai toujours l'erreur 91!!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part For Each C In Ws("Sommaire").Range("A1:N21")
Remplace Ws par Worksheets.
Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.
Pareil!! Variable objet ou variable de bloc With non définie
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.
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 ?
Cordialement,
Code : Sélectionner tout - Visualiser dans une fenêtre à part Var = Application.Match(C.Value, pnTranslate_Ref, 0)
Kimy
La logique :
Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !
- Plus ya de gruyère, moins ya de gruyère.
- Plus tu pédales moins vite, moins tu avances plus vite.
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:
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")
Code : Sélectionner tout - Visualiser dans une fenêtre à part "=INDEX(pnTranslate,MATCH(""Cell.Value"",pnTranslate_Ref,0),cnLanguage)"
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
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??
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 ?
Mets "Cell" à la place de "ActiveCell" et met un "Exit For" juste avant ton "End If".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 de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.
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
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.
Erreur 1004
Erreur définie par l'application ou par l'objet
Test_Langue_test.xlsx
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager