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.