Trouver et remplacer plusieurs valeurs dans les cellules sélectionnées

Je souhaite exécuter une recherche et remplacer sur plusieurs valeurs dans une gamme d'excel avec des valeurs de 2 colonnes: A avec le mot d'origine; B avec la traduction. J'ai déjà trouvé le code VBA pour que cela fonctionne pour 50%, mais ce code l'exécute sur l'intégralité de la feuille de travail.

Idéalement, je souhaiterais pouvoir l'exécuter uniquement sur la gamme que j'ai sélectionnée. Un bonus supplémentaire serait si je pouvais aussi sélectionner la gamme de recherche.

C'est ce que j'utilise jusqu'ici. Merci de votre aide!

Sub abbrev() Dim abvtab() As Variant Dim ltsheet As Worksheet Dim datasheet As Worksheet Dim lt As Range 'Change Lookup to the sheet name with your lookup table. Set ltsheet = Sheets("Lookup") 'Change Data to the sheet name with your data. Set datasheet = Sheets("Data") 'Change A2 to the top left cell (not the header) in your lookup table. 'Change B2 to top right cell. Set lt = ltsheet.Range("A1", ltsheet.Range("B1").End(xlDown)) abvtab = lt For i = 1 To UBound(abvtab) datasheet.Cells.Replace What:=abvtab(i, 1), Replacement:=abvtab(i, 2), LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _ ReplaceFormat:=False Next i End Sub 

Excel Multi Replace

  1. Ouvrez votre éditeur VBA ( Alt + F11 ) et collez la macro ci-dessous n'importe où
  2. Configurez une gamme de recherche à deux colonnes: la 1ère colonne est la valeur à rechercher, 2ème valeur à remplacer
  3. Sélectionnez votre plage de saisie où les valeurs doivent être remplacées comme indiqué dans la 1ère image
  4. Exécutez la macro ( Alt + F8 ).

La macro demande où se trouve votre gamme de recherche. D'abord le nom de la feuille, puis l'adresse de la plage de recherche. Entrez uniquement la première colonne par exemple A1:A2 pour l'exemple ci-dessous.

C'est tout. Maintenant, la macro commence à itérer à travers toutes les règles de remplacement et les applique comme une
Normal Excel Search & Replace ( Ctrl + H ) sur la plage de saisie sélectionnée.

 Input range Replace rules Input range after macro 

Entrez la description de l'image iciEntrez la description de l'image iciEntrez la description de l'image ici

 Sub MultiReplace() On Error GoTo errorcatch Dim arrRules() As Variant strSheet = InputBox("Enter sheet name where your replace rules are", _ "Sheet name", "Sheet1") strRules = InputBox("Enter address of replaces rules." & vbNewLine & _ "But only the first column!", "Address", "A1:A100") Set rngCol1 = Sheets(strSheet).Range(strRules) Set rngCol2 = rngCol1.Offset(0, 1) arrRules = Application.Union(rngCol1, rngCol2) For i = 1 To UBound(arrRules) Selection.Replace What:=arrRules(i, 1), Replacement:=arrRules(i, 2), _ LookAt:=xlWhole, MatchCase:=True Next i errorcatch: End Sub