Bonjour à tous,
Je suis en train d'écrire une macro qui doit traduire un template Excel via un glossaire.
J'ai pour l'instant réussi à rechercher les cellules textuelles et les remplacer par le texte dans la langue choisie.
Cependant j'ai aussi des cellules qui sont composées de texte et de cellules nommées, je cherche à isoler le texte, le chercher dans mon glossaire et le remplacer dans la cellule.
Exemples :
Cellule de départ ="(En "&Unite&")"
Cellule attendue ="(In "&Unite&")"
Cellule de départ ="PPNA cédées "&Annee_ini&" (incluses dans B9b)"
Cellule attendue ="Ceded UPR "&Annee_ini&" (included in B9b)"
Mon glossaire se compose de deux colonnes avec tous les textes en français et leur correspondance en anglais sur la même ligne.
Ma boucle qui fonctionne bien sur les cellules sans formules est la suivante :
Je pense qu'en utilisant la fonction Find avec LookAt:=xlPart je pourrais trouver la ligne correspondante dans mon glossaire, mais je ne vois pas comment retourner dans ma cellule de départ et ne changer que le texte. Il faut surement retrouver la position du texte dans la formule pour pouvoir ensuite le remplacer, mais vous aurez surement d'autres idées (j'espère..) !
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 For Each cellule In Range(Cells(1, 1), Cells(rowmax, colmax)) If IsEmpty(cellule) = False And cellule.NumberFormat = "General" And cellule.HasFormula = False Then Set traduction = Worksheets("Glossaire").Range("Zone_de_Traduction").Find(What:=cellule.Value, LookAt:=xlWhole) If Not traduction Is Nothing Then 'Texte trouvé rowtrad = traduction.Row cellule.Value = Worksheets("Glossaire").Cells(rowtrad, coltrad).Value Else 'Texte non trouvé tableauAjout(UBound(tableauAjout)) = cellule.Value ReDim Preserve tableauAjout(UBound(tableauAjout) + 1) End If End If Next cellule
Merci
Partager