Recherche et formatage auto d'un mot dans une cellule

Résolu
brindeau -  
dlt-pan Messages postés 529 Statut Membre -
Bonjour,

J'ai un gros tableau avec des cellules contenant des resumes de texte.
Je voudrais savoir, pour aller plus vite dans mes recherches, comment mettre en rouge (ou en avant d'une quelconque facon) le mot que je recherche dans tous les textes. (toujours le meme mot).
Merci d'avance pour votre aide,
Joachim

12 réponses

  1. dlt-pan Messages postés 529 Statut Membre 67
     
    bonjour
    une petite macro a adapter a tes besoins
    elle fait ce que tu demandes dans la colone D sur les lignes 1 a 40 :
    pour la lancer doubleclic dans la cellule A1

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim mot, a, b As String
    Dim l, lmot, deb, t As Integer
    If ActiveCell.Address = "$A$1" Then
    mot = InputBox("mot recherché")
    lmot = Len(mot)
    For i = 1 To 40
    l = Len(Cells(i, 4))
    For j = 1 To l
    For k = 1 To lmot
    If Left(mot, k) = Mid(Cells(i, 4), j, k) Then
    t = t + 1
    Else
    t = 0
    Exit For
    End If
    Next k
    If t = lmot Then
    deb = j
    Cells(i, 4).Select
    With ActiveCell.Characters(Start:=deb, Length:=lmot).Font
    .Color = -16776961
    End With
    End If
    Next j
    Next i
    End If
    End Sub

    Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément.
    1
  2. dlt-pan Messages postés 529 Statut Membre 67
     
    Bonjour
    c'est possible en apliquant une mise en forme conditionnelle -> appliquer une mise en forme uniquement aux cellules qui contiennent :
    texte specifique - contenant - *le mot recherché* et choisir le format
    puis etendre cette MFC à toutes les cellules dans gerer la regle -> s'applique à
    0
  3. brindeau
     
    Bonjour,
    merci pour votre reponse mais moi je ne veux mettre en avant que le mot dans la cellule, pas toute la cellule, c'est pour ca que je suis bloque ... :/
    Merci !
    0
  4. brindeau
     
    Bonjour et merci beaucoup pour l'aide mais je n'arrive pas a la faire fonctionner ...
    j ai pris des tutos sur le net mais j obtiens le message d erreur: "compile error : expected end sub".
    comment dois je m y prendre ? merci d avance !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dlt-pan Messages postés 529 Statut Membre 67
     
    Bonjour
    ouvir l'editeur VBA (alt+F11), double clic sur feuil1 sous l'arborescence VBAproject(non du fichier). Puis copie de toute la macro dans la fenetre a doite et ferme avec la croix rouge
    tu peux ensuite lancer le prgm en doublecliquant sur la cellule A1.
    Il faudra sans doute l'adapter a ton fichier car la recherche ne se fait que dans la colone D des lignes 1 a 40.

    Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément.
    0
  7. brindeau
     
    Merci beaucoup mais j ai beau faire ce que tu dis j arrive pas a la faire fonctionner ...
    je te mets le fichier ici : http://cjoint.com/?DAvnABaUwL9

    ci ca ne te derange d essayer, j ai essaye de parametrer la macro en cherchant et en mettant en valeur le mot "rye" dans la deuxieme et troisieme colonne ... sans succes !
    Je te remercie beaucoup pour ton aide !
    0
  8. dlt-pan Messages postés 529 Statut Membre 67
     
    ok je regarde çà et je te reponds mais demain car je ne peut pas avant
    0
  9. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,
    Excusez l'incruste

    recherche le mot "docteur" de B1 à B100 avec une macro paramétrée

    Option Explicit
    '-------------------------------------------------
    Sub test()
    Dim lig As Byte
    Application.ScreenUpdating = False
    For lig = 1 To 100
    Colorier_mot "docteur", Cells(lig, "B")
    Next
    End Sub
    '--------------------------------------------------
    Sub Colorier_mot(mot, texte)
    Dim longueur As Byte, debut As Byte
    longueur = Len(mot)
    If longueur > 0 Then
    debut = InStr(1, texte, mot)
    texte.Characters(debut, longueur).Font.ColorIndex = 3
    End If
    End Sub

    Michel
    0
    1. dlt-pan Messages postés 529 Statut Membre 67
       
      bonjour Michel
      ne t'excuse pas pour l'incruste. Il y a toujours moyen de faire mieux et çà me permet d'apprendre en même temps. Mais pour cette fois je suis resté sur mon code un peu rustique mais cà fonctionne...
      0
  10. dlt-pan Messages postés 529 Statut Membre 67
     
    bonsoir,
    j'ai pu avoir un peu de temps
    voici ton fichier

    https://www.cjoint.com/?3Avsmp3GUnj

    Quand tu doubleclic sur A1 (uniquement cette cellule), la macro recherche le mot que tu souhaites dans les colonnes A, B, et C sur toutes les lignes. elle ne tient pas compte des majuscules (pour avoir tout les mots).
    Ils sont affichés en rouge et en gras. A la fin, tu as le nombre de mot trouvé.
    Par contre j'ai remarqué que les hauteurs de lignes sont au maxi et il y a du texte non affiché tellement il y en a. il y a parfois des mots trouvés dans cette partie qui est caché.
    vu la taille du fichier çà prend un peu de temps
    en esperant avoir repondu a tes besoins.
    pense a mettre en resolu si c'est ok
    Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément.
    0
  11. Brindeau
     
    Merci à vous deux pour votre aide, effectivement ça fonctionne à merveille !!!
    Merci beaucoup, je vais aller beaucoup plus vite dans la lecture du doc vu que le mot qui m'intéresse saute direct aux yeux !
    Merci mille fois !

    PS : je vois pas comment mettre résolu ... il faut avoir un compte enregistré pour pouvoir éditer le premier message non ?
    0
  12. dlt-pan Messages postés 529 Statut Membre 67
     
    Bonjour
    normalement, en dessous du titre et de ton pseudo, il y a suivre - marqué comme resolu. tu cliques simplement dessus
    0