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