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
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
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