Recherche de tout (Microsoft Excel)
Jack se demande comment il peut faire une recherche sur un certain mot ou une certaine phrase et, en une seule étape, mettre en évidence toutes les cellules le contenant afin de pouvoir les couper ou les copier et les coller ailleurs.
La sélection des cellules contenant le texte que vous souhaitez utiliser est assez simple; vous pouvez utiliser la fonction standard Rechercher et remplacer pour ce faire. Suivez ces étapes:
-
Appuyez sur Ctrl + F. Excel affiche l’onglet Rechercher de la boîte de dialogue Rechercher et remplacer.
-
Développez la boîte de dialogue en cliquant sur le bouton Options. (Voir la figure 1.)
-
Dans la zone Rechercher, entrez le texte que vous souhaitez rechercher.
-
Utilisez les commandes de la boîte de dialogue pour limiter les correspondances, comme vous le souhaitez.
-
Cliquez sur Rechercher tout. La boîte de dialogue est développée pour afficher toutes les correspondances qui ont été localisées.
-
Appuyez sur Ctrl + A. Cela sélectionne toutes les cellules trouvées.
-
Cliquez sur Fermer pour fermer la boîte de dialogue.
C’est ça. Tant que vous n’avez pas cliqué sur Faire correspondre le contenu de la cellule entière à l’étape 4, Excel sélectionne toutes les cellules qui contiennent le texte que vous avez spécifié à l’étape 3. Vous pouvez, à ce stade, appliquer la mise en forme aux cellules, si vous le souhaitez.
Vous pouvez, bien sûr, utiliser la mise en forme conditionnelle pour formater dynamiquement les cellules contenant le texte que vous souhaitez mettre en évidence. Tout ce que vous avez à faire est de configurer une condition qui utilise «Le texte contient» comme test. Cela ne sélectionnera bien sûr pas toutes les cellules contenant le texte, mais les mettra en évidence afin que vous puissiez choisir où elles se trouvent.
Vous pouvez également utiliser une macro pour sélectionner toutes les cellules contenant le texte souhaité. Ce qui suit est assez simple qui accomplit la tâche:
Sub selCellbasedonValue() Dim c As Object Dim u As Range Dim v As Range Dim sInpt As String Set u = ActiveSheet.UsedRange sInpt = InputBox("Enter the search text") If sInpt > "" Then For Each c In u If Instr(LCase(sInpt),LCase(c.Value)) > 0 Then If v Is Nothing Then Set v = Range(c.Address) Else Set v = Union(v, Range(c.Address)) End If End If Next v.Select Set v = Nothing End If Set u = Nothing End Sub
Il y a un problème avec la sélection des cellules que vous devez reconnaître, cependant: si les cellules ne sont pas contiguës, vous ne pouvez pas couper ou copier les cellules. Si vous essayez, vous obtiendrez un message d’erreur indiquant que la commande ne peut pas être utilisée sur plusieurs sélections. Le moyen le plus simple de copier le contenu d’une cellule vers un emplacement différent est, encore une fois, d’utiliser une macro:
Sub CopyFinds() Dim sSrch As String Dim sFirst As String Dim rPaste As Range Dim i As Integer Dim iLeftC As Integer Dim lTopR As Long Dim c As Object If Selection.Cells.Count = 1 Then MsgBox "Select the range to be searched." Exit Sub End If 'Specify search string sSrch = InputBox(Prompt:="Enter the search text") ' Set the paste address On Error Resume Next Set rPaste = Application.InputBox(Prompt:="Enter the upper-left " & _ "cell address for the paste range", Type:=8) On Error GoTo 0 ' Exit if canceled If TypeName(rPaste) <> "Range" Then Exit Sub ' Upper left cell to be used Set rPaste = rPaste.Range("A1") 'Set where paste will start and headings Application.ScreenUpdating = False lTopR = rPaste.Row iLeftC = rPaste.Column Cells(lTopR, iLeftC) = "Address" Cells(lTopR, iLeftC + 1) = "Cell Value" lTopR = lTopR + 1 'Start copying cell values With Selection Set c = .Find(What:=sSrch, LookAt:=xlPart, MatchCase:=True) If Not c Is Nothing Then sFirst = c.Address Do Cells(lTopR, iLeftC) = c.Address Cells(lTopR, iLeftC + 1) = c.Value Set c = .FindNext(c) lTopR = lTopR + 1 Loop While Not c Is Nothing And c.Address <> sFirst End If End With Application.ScreenUpdating = True Cells(rPaste.Row, rPaste.Column).Select End Sub
Lorsque vous sélectionnez une plage de cellules et exécutez cette macro, vous êtes invité à spécifier ce que vous recherchez (la casse est importante) et une adresse où vous souhaitez la copier. La macro recherche ensuite toutes les cellules qui contiennent cette valeur et copie à la fois leur adresse et la valeur de la cellule à l’adresse de départ que vous avez spécifiée. La macro ne fait pas beaucoup de vérification des erreurs; il écrasera les informations si vous spécifiez une adresse cible qui contient déjà des informations. En outre, si vous spécifiez une adresse cible qui se trouve dans la plage que vous recherchez, la macro peut s’exécuter indéfiniment. Vous devez absolument spécifier une cible qui se trouve en dehors de la plage recherchée.
_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 (8964) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:
lien: / excel-Searching_for_All [Recherche de tout]
.