• Initiateur de la discussion Initiateur de la discussion MURET31
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

MURET31

XLDnaute Nouveau
Bonjour,
Via la macro ci-dessous, je cherche à colorier en rouge tous les mots "toto" dans ma feuille active, cependant à chaque lancement de la macro j'ai une erreur "424 Objet requis" que je n'arrive pas à résoudre. Pourriez-vous m'aider s'il vous plaît?

L'erreur 424 souligne en jaune "With ActiveDocument.Content.Find"

VB:
Sub ColourChange()
Application.ScreenUpdating = False
Dim arrWords, i As Long
arrWords = Array("toto", "2nd string", "3rd string")
With ActiveDocument.Content.Find
  .ClearFormatting
  .Forward = True
  .Wrap = wdFindContinue
  .Format = True
  .MatchCase = True
  .MatchWholeWord = True
  .MatchWildcards = False
  .MatchSoundsLike = False
  .MatchAllWordForms = False
  With .Replacement
    .ClearFormatting
    .Text = "^&"
    .Font.Color = wdColorRed
  End With
  For i = 0 To UBound(arrWords)
    .Text = arrWords(i)
    .Execute Replace:=wdReplaceAll
  Next
End With
Application.ScreenUpdating = True
End Sub
 
Bonjour,

C'est ne pas une macro Excel mais Word. Normal qu'excel ne connaisse pas ActiveDocument et encore moins son .Content.

bon après-midi

Edit: Re- Bing @Staple1600 🙂

Merci pour vos réponses rapides, y aurait-il un moyen de l'adapter à excel? auriez-vous une macro plus simple que pourrais adapter s'il vous plaît? cela fait deux jours que je cherche 🙂
Merci
MU
 
Re

Essaies cette macro basique
(je viens de le faire -test OK)
VB:
Sub EnRougeEtRouge_JeanneMas_Tribute()
Dim c As Range
Application.ScreenUpdating = False
    For Each c In ActiveSheet.UsedRange
        If InStr(c.Value, "toto") > 0 Then
          c.Interior.Color = vbRed
        End If
    Next c
End Sub
 
Re

Une autre pour le fun
(et/ou pour les oreilles cf commentaires en vert 😉)
VB:
Sub RoteRosen_roteLippen_roterWein()
Dim c As Range
Application.ScreenUpdating = False
For Each c In ActiveSheet.UsedRange
c.Interior.Color = Choose(InStr(c.Value, "toto") + 1, xlNone, vbRed)
Next c
'petit bonus pour les curieux:https://www.youtube.com/watch?v=ixjKO4OwICw
End Sub
 
Re

Essaies cette macro basique
(je viens de le faire -test OK)
VB:
Sub EnRougeEtRouge_JeanneMas_Tribute()
Dim c As Range
Application.ScreenUpdating = False
    For Each c In ActiveSheet.UsedRange
        If InStr(c.Value, "toto") > 0 Then
          c.Interior.Color = vbRed
        End If
    Next c
End Sub

Merci Staple1600
Je te remercie pour cette proposition, j'ai l'erreur 13 "incompatibilité de type" sur la ligne "If InStr(c.Value, "toto") > 0 Then"
Merci
MU
 
Re

Alors pour le fun mais pas que
Ci-dessous une macro avec parametres
Lance la macro nommée Macro_Rougissante
VB:
Sub Macro_Rougissante()
MakeMe_Red ActiveSheet.UsedRange, "toto"
End Sub
Private Sub MakeMe_Red(Vamos_A_LA_Playa As Range, LeMot As String, Optional PurpleRainOrNOt As XlColorIndex = 3)
Dim c As Range
Application.ScreenUpdating = False
For Each c In Vamos_A_LA_Playa
If InStr(c.Value, LeMot) > 0 Then
c.Characters(InStr(c.Value, LeMot), Len(LeMot)).Font.ColorIndex = PurpleRainOrNOt
End If
Next c
End Sub

PS: Si tu as des questions sur la syntaxe, elles sont les bienvenues 😉

NB: test OK sur mon PC.
 
Re

Alors pour le fun mais pas que
Ci-dessous une macro avec parametres
Lance la macro nommée Macro_Rougissante
VB:
Sub Macro_Rougissante()
MakeMe_Red ActiveSheet.UsedRange, "toto"
End Sub
Private Sub MakeMe_Red(Vamos_A_LA_Playa As Range, LeMot As String, Optional PurpleRainOrNOt As XlColorIndex = 3)
Dim c As Range
Application.ScreenUpdating = False
For Each c In Vamos_A_LA_Playa
If InStr(c.Value, LeMot) > 0 Then
c.Characters(InStr(c.Value, LeMot), Len(LeMot)).Font.ColorIndex = PurpleRainOrNOt
End If
Next c
End Sub

PS: Si tu as des questions sur la syntaxe, elles sont les bienvenues 😉

NB: test OK sur mon PC.

Merci Staple1600
Cela marche parfaitement sur des cellules non fusionnées, aurais tu la solution pour des cellules fusionnées stp et si je veux rajouter plusieurs "string" exemple: (toto1) (toto2).
C'est déjà un très bon début pour moi 🙂
Merci encore
MU
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
400
Réponses
4
Affichages
358
Réponses
5
Affichages
605
Réponses
9
Affichages
382
Réponses
2
Affichages
337
Retour