Fonction recherche "améliorée" ?

Bonjour à tous/toutes

Je rebondis sur un autre sujet résolu par ailleurs sur le Forum.

Je gère des feuilles de calcul qui contiennent de très nombreuses données pour chaque cellule (souvent > 255 caractères).

Il est parfois difficile d’y retrouver une information (juste un mot ou un sigle, parfois) même avec les outils de recherche, car quand Excel trouve les caractères cherchés, il se contente de mettre toute la cellule en surbrillance.

Je cherche donc un moyen pour mettre en valeur temporairement une chaîne de caractères recherchés, par exemple en les passant en rouge et gras.

L’idée serait la suivante : on rentre la valeur cherchée dans une cellule dédiée.

Immédiatement, toutes les occurrences de cette valeur basculent en rouge et gras (sans changer de taille de police).

Dès l’effacement du contenu de la cellule « source », tous les caractères qui avaient changé de format lors de la recherche retrouvent leur apparence précédente.

(je joins un fichier pour plus de clarté)

Je fais appel aux spécialistes du VBA parce que je ne saurais pas écrire le code tout seul.

Merci !

38exemple1.xls (15.50 Ko)

...ça n'inspire personne ?

Bonjour

Une proposition en attendant mieux

Merci, c'est exactement ça, sauf que toutes les mises en forme préexistantes s'annulent au moment où on efface le texte cherché.

Y a-t-il un moyen de les conserver ?

Merci !

Bonsoir

Un essai

Super ! Les mises en formes (italiques et gras) sont conservées après effacement du mot recherché. C'est cool.

Les couleurs de police ne sont pas conservées, mais a priori, je n'en ai pas besoin.

Merci beaucoup !!!

-- Mar Nov 23, 2010 1:59 am --

Comme indiqué dans un précédent post, je ne suis qu'un bidouilleur de VBA.

Aussi, je me heurte à une petite difficulté : en voulant adapter le code présent dans "Recherche visible V002.xls" à une autre feuille où la cellule à rechercher est en D6 et non plus en C6, et la plage de recherche dans la colonne D au lieu de C ça ne marche plus...

J'ai pourtant cru bien faire en remplaçant :

- dans le code de la feuille :

If Target.Address = Range("C6").Address Then

par :

If Target.Address = Range("D6").Address Then

et dans le Module 1 :

Lg_Der = Range("C65536").End(xlUp).Row

par :

Lg_Der = Range("D65536").End(xlUp).Row

Mais ça ne marche pas. Où est-ce que j'ai faux ?

Merci !

Re

Tu as oublié

Pos = InStr(Pos + 1, Cells(I, 3), Quoi)
With Cells(I, 3).Characters(Start:=Pos, Length:=Len(Quoi)).Font

par

Pos = InStr(Pos + 1, Cells(I, 4), Quoi)
With Cells(I,4).Characters(Start:=Pos, Length:=Len(Quoi)).Font

3=C

4=D

etc...

Bon les balises couleur ne passent pas

OK, merci bcp !

Bonjour,

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$A$2" Then
    If [iv1] = "" Then
      [A4:A1000].Copy [IV4]
      [iv1] = "archivé"
    Else
      [IV4:IV1000].Copy [A4]
    End If
    mot = Target
    For Each c In [A4:A1000]
      p = 1
      Do While p > 0
        p = InStr(p, UCase(c), UCase(mot))
        If p > 0 Then
          c.Characters(p, Len(mot)).Font.ColorIndex = 3
          p = p + Len(mot)
        End If
      Loop
    Next c
  End If
End Sub

Heroux

22classeur2.zip (17.30 Ko)

Merci pour ta contribution.

Quand j'essaie sur mon poste, Excel se fige et la seule façon de reprendre la main, c'est d'appuyer sur la touche "Echap".

Donc, en l'état, je me contente du code que m'a proposé Banzai64 et qui marche.

Mais merci quand même !

Rechercher des sujets similaires à "fonction recherche amelioree"