Remplacer uniquement les mots entiers dans Excel (Microsoft Excel)
Gary veut rechercher et remplacer une abréviation comme «sys» et la remplacer par «systems». Le problème est que s’il remplace toutes les occurrences, il transforme les instances existantes du «système» en «système». Gary pourrait examiner chaque occurrence et remplacer individuellement, mais cela prendrait une éternité. Il se demande s’il existe un moyen de faire en sorte qu’Excel ne remplace que les occurrences de «mot entier» de «sys» par «systèmes» comme dans Word.
Ceux qui sont familiers avec les fonctionnalités de recherche et de remplacement d’Excel pourraient penser, à première vue, que vous pourriez utiliser la fonction « Faire correspondre tout le contenu de la cellule »
réglage afin de faire le travail. Cela ne fonctionne, cependant, que si l’abréviation « sys » est la seule chose dans une cellule. Dans la situation de Gary, ce n’est pas le cas. Il a des phrases et des phrases entières qui contiennent « sys » (comme dans « sys admin » ou « Une vérification sys est nécessaire »). Ainsi sa demande pour quelque chose comme le paramètre «parole entière» de Word.
Dans cet esprit, il y a quelques choses que vous pouvez essayer; la solution qui vous convient le mieux dépendra de la nature du texte de votre feuille de calcul.
Par exemple, si le seul point de confusion probable est le mot «système»,
alors il sera plus facile de simplement remplacer « système » par quelque chose d’unique, tel que « \ {[]} ». (J’ai tendance à aimer les accolades et les crochets car ils sont uniques dans la plupart des données.) Ensuite, remplacez « sys » par « systems » et remplacez finalement « \ {[]} » par « system ».
S’il existe d’autres points de confusion en plus du «système», vous pouvez alors recourir à l’ajout d’espaces dans votre texte Rechercher. En d’autres termes, recherchez « sys » (avec les espaces) et remplacez-le par « systems » (encore une fois, avec les espaces). Cela trouvera toutes les occurrences correctement tant que sys n’est pas suivi d’un signe de ponctuation, ne se produit pas au début d’une cellule et ne se produit pas à la fin d’une cellule.
Bien sûr, vous pouvez effectuer des recherches supplémentaires pour obtenir certaines de ces informations. Par exemple, vous pouvez rechercher « sys » (espace uniquement à la fin)
pour rechercher des occurrences au début d’une cellule. Il ne vous servirait à rien de rechercher «sys» (espace uniquement au début) car cela correspondrait à toute occurrence de «système» précédée d’un espace. Dans les recherches séquentielles, vous pouvez également rechercher « sys » suivi d’un point, d’une virgule, d’un point d’interrogation, d’un point d’exclamation, d’un point-virgule, etc.
Si vous préférez utiliser une macro, voici un exemple de la façon dont vous pouvez aborder le problème. La macro vous demande ce que vous voulez rechercher et par quoi vous voulez le remplacer.
Sub ReplaceOnlySpecifirdWord() Dim c As Range, rng As Range, rngArea As Range Dim vFind As String, vReplace As String Dim v As Variant Dim arrSplit As Variant Dim s As String Dim i As Integer, n As Long Dim b As Boolean Const csDELIMITER = " " On Error Resume Next ' Reference Constants only Set rng = ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants) If rng Is Nothing Then MsgBox "There are no constants on active sheet...", vbExclamation Exit Sub End If On Error GoTo 0 ' Get Find and Replace strings v = InputBox(Prompt:="Please enter String to be replaced.") If v <> "" Then vFind = v Else MsgBox "Wrong entry; app is going to be terminated.", vbExclamation Exit Sub End If v = InputBox(Prompt:="Please enter Replace String.") If v <> "" Then vReplace = v Else MsgBox "Wrong entry; app is going to be terminated.", vbExclamation Exit Sub End If Application.ScreenUpdating = False Application.Calculation = xlCalculationManual n = 0 For Each rngArea In rng.Areas For Each c In rngArea.Cells b = False arrSplit = Split(c.Value, csDELIMITER) For i = LBound(arrSplit) To UBound(arrSplit) If arrSplit(i) = vFind Then arrSplit(i) = vReplace n = n + 1 b = True End If Next i If b Then s = vbNullString For i = LBound(arrSplit) To UBound(arrSplit) s = s & arrSplit(i) If i <> UBound(arrSplit) Then s = s & csDELIMITER End If Next i c.Value = s End If Next c Next rngArea Application.Calculation = xlCalculationAutomatic MsgBox "Replaced " & n & " words...", vbInformation End Sub
La macro fait son travail en trouvant tous les mots dans chaque cellule (tour à tour).
Si le mot correspond à ce que vous recherchez, il est remplacé. Le contenu de la cellule est ensuite reconstitué.
Il y a un inconvénient à cette approche: la correspondance est très littérale. Cela signifie que « sys » correspondra à « sys », mais ne correspondra pas à « Sys », « SYS » ou « sys » suivi d’un signe de ponctuation. (La macro utilise des espaces comme séparateur entre les mots.)
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (13391) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365.