Automatiser les fonctions INDEX MATCH

lilia

XLDnaute Nouveau
Bonjour,

Je cherche à 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 marche très bien sur mes cellules excel par contre il fallait l'automatiser, j'exécute ce code mais il n'affiche rien, pourriez vous le vérifier SVP
Code:
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.WorksheetFunction.Match(Cells.Value, pnTranslate_Ref, 0)
    
    For Each C In Worksheets("Sommaire").Range("A1:N21")
        If C.Value <> "" Then
            C.Value = Application.WorksheetFunction.Index(pnTranslate, Var, cnLanguage)
        End If
    Next
    
End Sub

j'avais Erreur d'exécution '91' et en changant Application.Matchpar Application.WorksheetFunction.Match j'ai Erreur d'exécution '7' mémoire insuffisante j'ai tenté de diminuer le nombres des cellules Range("A1:N21") par Range("A1:G15") mais ca marche toujours pas

veuillez m'aider SVP
Merci par avance
 

Abel

XLDnaute Accro
Re : Automatiser les fonctions INDEX MATCH

Bonjour lilia,


Peut être me fourvoie-je suite à ma rapide lecture de ton code.

Dim pnTranslate définit ta variable comme variant par défaut si tu ne lui indique rien.
Le type String n'étant indiqué que pour Var.

Or un peu plus loin, tu affectes une plage à la variable pnTranslate.
Je sais que le variant accepte pas mal de choses, mais accepte't-il les plages ?

Idem pour pnTranslate_ref.


Abel.

Edit : oups, j'oubliais ! Bienvenue sur le forum.
 

lilia

XLDnaute Nouveau
Re : Automatiser les fonctions INDEX MATCH

j'ai définit pnTranslate As String (juste pour voir la réaction) j'ai l'erreur 13 incompatibilité de type
donc je crois que si variant m'accepte pas les plages il allait afficher le m^me message d'erreur!!
 

Abel

XLDnaute Accro
Re : Automatiser les fonctions INDEX MATCH

Lilia,

Un essai (incomplet).

Dis nous si c'est ce type de fonctionnement que tu souhaites.
Fonctionne sur une partie des champs en français, espagnol et anglais.

S'il y a plus de langues ou plus de champs à traduire, on pourra aborder le code différemment.

En espérant que ça dépanne.

Abel.
 

Pièces jointes

  • Test lilia.xlsm
    31.4 KB · Affichages: 45

lilia

XLDnaute Nouveau
Re : Automatiser les fonctions INDEX MATCH

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:
"=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
 

Pièces jointes

  • Test_Langue_test.xlsm
    31.8 KB · Affichages: 43
  • Test_Langue_test.xlsm
    31.8 KB · Affichages: 44
  • Test_Langue_test.xlsm
    31.8 KB · Affichages: 44

lilia

XLDnaute Nouveau
Re : Automatiser les fonctions INDEX MATCH

merci pour ton aide Abel

il marche trés bien ce code, mais ca deviendera vite fastidieux car j'aurai minimum 20 feuille et beaucoup de texte (des paragraphes) à traduire et avoir ça dans la partie code ce n'est pas une bonne idée!!!

je crois que je ne suis pas loin, enfin j'espère ,voir le dernier fichier que je t'ai envoyé
 

lilia

XLDnaute Nouveau
Re : Automatiser les fonctions INDEX MATCH

Bonjour Abel

j'esseye d'automatiser cette formule parce que mon projet doit être absolument codé sur VBA et pas des formules et les outils d'excel!!!!! et je vois pas comment cerner le probleme autrement
au debut j'avais, sur la feuille traduction, une liste de tout mes mots avec leur posotion, et j'avais des doublons car on a le même mot sur plusieurs feuille, mais à chaqu'un sa propre position (cellule) sur la feuille.

puis j'ai chercheé à coder cette formule en boucle, ce qui permettra la cherche automatique du mot ou de la phrase où qu'ils soient situés et les remplasser par leur équivalent traduit!!! pour pouvoir éviter de rajouter le même mot et sa nouvelle position, au cas où j'ai des nouvelles lignes et feuilles avec les mots précédement utilisés !!

donc si tu as d'autres propositions je suis prenante :eek:

Merci
 

Statistiques des forums

Discussions
312 211
Messages
2 086 292
Membres
103 171
dernier inscrit
clemm