Recherche de texte dans des zones de texte (Microsoft Excel)
Walter a une feuille de calcul qui contient un certain nombre de zones de texte. Il aimerait rechercher dans ces zones de texte pour trouver un texte spécifique, mais Rechercher et remplacer ne semble pas capable de trouver du texte dans les zones de texte. Il se demande s’il existe un moyen de rechercher dans les zones de texte.
Walter a raison; vous ne trouvez pas de texte situé dans les zones de texte dans Excel. Pour tester cela, nous avons ouvert un tout nouveau classeur, y avons placé une seule phrase (« mon message »), puis placé du texte aléatoire et des nombres dans d’autres cellules de la feuille de calcul. Ensuite, avec la zone de texte non sélectionnée, Ctrl + F a été pressé pour rechercher «mon message». Excel a consciencieusement signalé qu’il ne pouvait pas trouver le texte, même s’il était toujours là, dans la zone de texte.
Heureusement, vous pouvez rechercher du texte dans une zone de texte à l’aide d’une macro. Chaque zone de texte d’une feuille de calcul appartient à la collection Shapes, il vous suffit donc de parcourir chaque membre de la collection et de voir s’il contient le texte souhaité. Voici une macro qui demande une chaîne de recherche, puis la recherche dans les zones de texte.
Sub FindInShape1() Dim rStart As Range Dim shp As Shape Dim sFind As String Dim sTemp As String Dim Response sFind = InputBox("Search for?") If Trim(sFind) = "" Then MsgBox "Nothing entered" Exit Sub End If Set rStart = ActiveCell For Each shp In ActiveSheet.Shapes sTemp = shp.TextFrame2.TextRange.Characters.Text If InStr(LCase(sTemp), LCase(sFind)) <> 0 Then shp.Select Response = MsgBox( _ prompt:=shp.Name & vbCrLf & _ sTemp & vbCrLf & vbCrLf & _ "Do you want to continue?", _ Buttons:=vbYesNo, Title:="Continue?") If Response <> vbYes Then Set rStart = Nothing Exit Sub End If End If Next MsgBox "No more found" rStart.Select Set rStart = Nothing End Sub
Cette macro examine toutes les formes de la feuille de calcul, pas uniquement les zones de texte. Si vous préférez limiter votre recherche aux seules zones de texte, vous pouvez parcourir la collection TextBoxes au lieu de la collection Shapes; de toute façon fonctionnera bien.
Notez également que cette approche s’arrête chaque fois qu’elle trouve un texte correspondant (la casse du texte n’a pas d’importance) et vous demande si vous souhaitez continuer. Vous pouvez, à la place, vouloir une macro qui marque simplement le texte correspondant dans les zones de texte. Cela peut être fait avec une macro plus courte, comme indiqué ici:
Sub FindInShape2() Dim shp As Shape Dim sFind As String Dim sTemp As String Dim iPos As Integer Dim Response sFind = InputBox("Search for?") If Trim(sFind) = "" Then MsgBox "Nothing entered" Exit Sub End If sFind = LCase(sFind) For Each shp In ActiveSheet.Shapes sTemp = LCase(shp.TextFrame2.TextRange.Characters.Text) iPos = InStr(sTemp, sFind) If iPos > 0 Then With shp.TextFrame2.TextRange.Characters(Start:=iPos, _ Length:=Len(sFind)).Font .UnderlineStyle = msoUnderlineHeavyLine .Bold = True End With End If Next MsgBox "Finished" End Sub
Cette macro souligne le texte localisé à l’aide d’une ligne épaisse, puis le met en gras. Lorsque vous avez terminé, vous souhaiterez probablement rétablir le texte en texte normal. Vous pouvez le faire en utilisant la macro suivante:
Sub ResetFont() Dim shp As Shape For Each shp In ActiveSheet.Shapes With shp.TextFrame2.TextRange.Characters.Font .UnderlineStyle = msoNoUnderline .Bold = False End With Next End Sub
_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 (11282) s’applique à Microsoft Excel 2007 et 2010. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:
link: / excel-Finding_Text_in_Text_Boxes [Recherche de texte dans les zones de texte]
.