Bonjour,
voila mon problème, j'ai la macro ci-dessous qui effectue une recherche dans toutes les feuilles de mon classeur, par exemple si je recherche"SA" pour "sacs" elle me trouve ,met en rouge et gras les caractères trouvés et la cellule en jaune et quand j'arrête la recherche ou que la recherche se poursuit sur une autre feuilles, elle me remet les caractères ainsi que les cellules trouvées contenant les caractères à leurs état d'origine. Mais maintenant que j'ai protégés les feuilles afin que juste quelques cellules soit modifiables, cela ne fonctionne plus.
Donc si une bonne âme pouvais m'aider cela serait super.
Un grand merci



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Option Compare Text
Sub RechercheEtCouleur(Mot As String)
Dim Rng As Range, Sht As Worksheet
Dim plage As Range, cel As Range
 
 
For Each Sht In ThisWorkbook.Sheets
 
  If Sht.Name <> "Recherche" Then
 
    Set plage = Sht.Range("B3").CurrentRegion 'range("B3") à changer par la bonne cellule de départ
    For Each cel In plage
      If cel Like "*" & Mot & "*" Then
      'ou       If cel Like "*" & Mot & "*" Then
        With cel.Characters(Start:=InStr(1, cel.Value, Mot), Length:=Len(Mot))
                        .Font.ColorIndex = 3 'colorie en rouge
                        .Font.Bold = True 'met en gras
             cel.Interior.ColorIndex = 6 'met le fond de cellule en jaune
        End With
        Sht.Activate: cel.Activate
        If MsgBox("Poursuivre recherche ?", vbYesNo) = vbNo Then
 
         Cells.Font.ColorIndex = 0 'remise de la couleur noire
         Cells.Font.Bold = False 'enlever le gras
         Cells.Interior.Color = RGB(75, 172, 198) 'remet couleur intérieur cellule d'origine
 
          Exit Sub
          Else: Sheets("Recherche").Activate
 
        End If
 
      End If
    Next cel
    For Each cel In plage
      cel.Font.ColorIndex = 0 'remise de la couleur noire
      cel.Font.Bold = False 'enlever le gras
      cel.Interior.Color = RGB(75, 172, 198) 'remet couleur intérieur cellule d'origine
 
    Next cel
  End If
Next Sht
MsgBox "Il n'y a pas d'autres résultats", vbInformation, "Information"
End Sub