Remplacer à partir d'une base de donnée

Bonjour à tous ! Je pense que la question a déjà été posée mais je n'arrive pas à formuler clairement ma demande et donc de trouver la solution.

J'ai en colonne A et B une correspondance étant :

Colonne A : valeur de recherche (ex : fruits)

Colonne B : valeur de remplacement (ex : légumes)

Colonne C : mes données brutes avec des fruits

Colonne D : la formule que je cherche à faire

Je souhaiterai que dans la colonne D, ça aille rechercher s'il y a une correspondance entre la colonne C et A et si c'est le cas, remplacer la valeur par la correspondance en colonne C.
En gros que mes fruits soient remplacés par les légumes en correspondance dans la colonne B.
J'ai pensé à faire une combinaison de index+equiv mais le problème est que ma valeur de recherche est une cellule et non pas deux colonnes.

En vous remerciant par avance, bonne soirée !

Bonjour ShaD,

Un essai, si j'ai bien compris la demande, avec l'utilisation de PowerQuery.

On remplit la base, clic droit sur la base arrivée puis "actualiser". Je te laisse essayer.

let
  Source = Excel.CurrentWorkbook(){[Name = "Tableau2"]}[Content], 
  Changement = List.Accumulate(
    {0 .. List.Count(Base[A]) - 1}, 
    Source, 
    (S, C) => Table.ReplaceValue(S, Base[A]{C}, Base[B]{C}, Replacer.ReplaceText, {"C"})
  )
in
  Changement
17shad.xlsx (18.80 Ko)

Parfait merci JB ça fonctionne ! Par contre je suis une bille en PowerQuery, j'ai regardé quelques vidéos qui m'ont permis de comprendre sommairement comment ça fonctionnait mais n'y a-t-il pas un code VBA ou une formule qui pourrait permettre de faire la même chose ? En tout cas merci beaucoup !

Bonjour à tous !

Sur la base du classeur de JB_ (), une proposition en H5 :

=LET(
    t; Tableau2[@C];
    anc; Tableau1[A];
    a; INDEX(anc; EQUIVX(VRAI; ESTNUM(TROUVE(anc; t)); 0));
    n; RECHERCHEX(a; anc; Tableau1[B]);
    SUBSTITUE(t; a; n)
)

A étirer vers le bas.

Bonjour à tous,

Merci pour ton retour !

Je ne suis pas très à l’aise avec VBA… La formule de JFL fonctionne parfaitement.

Peut-être que c’est dû à une différence de version d’Excel, mais j’ai dû supprimer le @ dans la première variable pour obtenir les résultats attendus.

Bonsoir à tous !

Peut-être que c’est dû à une différence de version d’Excel, mais j’ai dû supprimer le @ dans la première variable pour obtenir les résultats attendus.

C'est étrange et je ne m'explique pas le bon fonctionnement sans l'opérateur d'intersection implicite, puisque sans lui, la variable "t" fait référence à toute la plage Tableau2[C].

Sans l'opérateur, ça ne fonctionne pas ! C'est moi qui ait fait une fausse manip en voulant modifier la formule

Tout va bien ! Ouf

image
Rechercher des sujets similaires à "remplacer partir base donnee"