Note: The other languages of the website are Google-translated. Back to English
English English

Comment trouver et mettre en évidence des paragraphes en double dans un document Word?

En supposant que vous ayez un grand document Word qui peut avoir des centaines de pages, vous voulez maintenant vérifier s'il y a des paragraphes en double, puis les mettre en surbrillance pour les rendre exceptionnels, afin que vous puissiez gérer les phrases en double. Comment pouvez-vous trouver et mettre en évidence les paragraphes en double rapidement et facilement dans un document Word?

Recherchez et mettez en surbrillance les paragraphes en double dans un document Word avec le code VBA


Recherchez et mettez en surbrillance les paragraphes en double dans un document Word avec le code VBA

Pour rechercher et mettre en évidence les paragraphes en double dans un document Word, le code VBA suivant peut vous rendre service, procédez comme suit:

1. Maintenez le ALT + F11 clés pour ouvrir le Microsoft Visual Basic pour applications fenêtre.

2. Et puis, cliquez insérer > Module, copiez et collez le code ci-dessous dans le module vide ouvert:

Code VBA: recherchez et mettez en surbrillance les paragraphes en double dans un document Word:

Sub highlightdup()
    Dim I, J As Long
    Dim xRngFind, xRng As Range
    Dim xStrFind, xStr As String
    Options.DefaultHighlightColorIndex = wdYellow
    Application.ScreenUpdating = False
    With ActiveDocument
        For I = 1 To .Paragraphs.Count - 1
            Set xRngFind = .Paragraphs(I).Range
            If xRngFind.HighlightColorIndex <> wdYellow Then
                For J = I + 1 To .Paragraphs.Count
                    Set xRng = .Paragraphs(J).Range
                    If xRngFind.Text = xRng.Text Then
                        xRngFind.HighlightColorIndex = wdBrightGreen
                        xRng.HighlightColorIndex = wdYellow
                    End If
                Next
            End If
        Next
    End With
End Sub

3. Et puis appuyez sur F5 clé pour exécuter ce code, toutes les phrases en double sont mises en surbrillance en même temps, les premiers paragraphes en double affichés sont surlignés en vert et les autres doublons sont surlignés en jaune, voir capture d'écran:

doc surligner les phrases dup 1


Outils de productivité Word recommandés

 

Kutools For Word - Plus de 100 fonctionnalités avancées pour Word, économisez 50% de votre temps

  • Les opérations compliquées et répétées peuvent être effectuées une seule fois en quelques secondes.
  • Insérez simultanément plusieurs images dans des dossiers dans un document Word.
  • Fusionner et combiner plusieurs fichiers Word dans des dossiers en un seul avec l'ordre souhaité.
  • Divisez le document actuel en documents séparés selon l'en-tête, le saut de section ou d'autres critères.
  • Convertissez des fichiers entre Doc et Docx, Docx et PDF, collection d'outils pour les conversions et la sélection courantes, etc.
Commentaires (15)
Noté 4.5 hors 5 · évaluations 1
Ce commentaire a été minimisé par le modérateur sur le site
Tentei e não funcionou, só da que parou de funcionar.
Ce commentaire a été minimisé par le modérateur sur le site
J'ai essayé, et ça marche bien !
Je voulais juste savoir - pourrais-je faire la même chose - mais pas un paragraphe entier, mais une phrase avec quelques mots que j'aurais mis en place - comme 10 mots ?
Ce commentaire a été minimisé par le modérateur sur le site
Il lance une erreur de compilation : erreur de syntaxe, le code est à 100 % comme exemple.
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour

Merci pour l'aide

Mais comment retrouver les mêmes phrases dans mon texte ?

Cordialement
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour



Merci pour l'aide



Mais comment retrouver les mêmes phrases dans mon texte ?



Cordialement
Ce commentaire a été minimisé par le modérateur sur le site
J'avais un très long document à traiter, le code ci-dessus prenait au moins 100 jours pour se terminer et bloquait tout pendant que j'y travaillais. Le principal coupable est le "Set xRng = .Paragraphs(J).Range" qui est très lent. J'ai fait une version alternative qui a fonctionné en seulement 4 heures et présente un rapport continu sur l'état du traitement et le temps de fin. (Pour voir le rapport en temps réel, vous devez ouvrir la "fenêtre immédiate" en appuyant sur Ctrl+G dans la fenêtre Microsoft Visual Basic pour Applications.) Le code fonctionne bien, sauf qu'il prédit un temps de fin plus long qu'en réalité cas (selon le document). Le code est comme suit:

Sous-surbrillanceup()
Dim StartTime, SecondsElapsed As Date
Dim secondsPerComparison As Double
Dim I, J, PC, totalComparisons, comparisonsDone, C, secondsToFinish As Long
Dim xRngFind, xRng As Range
Dim xStrg, minutesToFinish As String
Dim currentParag, nextParag As Paragraph
'Options.DefaultHighlightColorIndex = wdYellow
Application.ScreenUpdating = Faux
Avec ActiveDocument
HeureDébut = Maintenant()
C = 0
PC = .Paragraphes.Nombre
totalComparaisons = CLng((PC * (PC + 1)) / 2)
Définissez currentParag = .Paragraphs(1)
Pour I = 1 Vers PC - 1
'Debug.Print "traite le paragraphe " & I & " d'un total de " & PC & " " & currentParag.Range.Text
'Debug.Print Len(currentParag) & currentParag
Si currentParag.Range.HighlightColorIndex <> wdYellow Alors
Si currentParag.Range.HighlightColorIndex <> wdBrightGreen Alors
Définissez nextParag = currentParag
Pour J = I + 1 Vers PC
Définissez nextParag = nextParag.Next
Si currentParag.Range.Text = nextParag.Range.Text Alors
currentParag.Range.HighlightColorIndex = wdBrightGreen
nextParag.Range.HighlightColorIndex = wdYellow
Debug.Print "trouvé un !! " & " I = " & I & " J = " & J & nextParag.Range.Text
Si fin
Suivant
Si fin
Si fin
DoEvents
comparaisonsFait = PC * (I - 1) + (J - I)
SecondsElapsed = DateDiff("s", StartTime, Now())
secondsPerComparison = CLng(SecondsElapsed)/comparaisonsDone
secondsToFinish = CLng(secondsPerComparison * (totalComparisons - comparisonsDone))
minutesToFinish = Format(secondsToFinish / 86400, "hh:mm:ss")
TempsEcoulé = Format(SecondesEcoulées / 86400, "hh:mm:ss")
Debug.Print "Paragraphe de traitement terminé " & I & " de " & PC & ". Temps écoulé = " & elapsedTime & ". Temps pour terminer = " & minutesToFinish
Définissez currentParag = currentParag.Next
Suivant
Terminer par
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Monsieur, merci de bien vouloir et s'il vous plaît avoir de bons vents dans votre vie.
Ce commentaire a été minimisé par le modérateur sur le site
merci beaucoup, ça fonctionne parfaitement et très rapidement !

Paul (de France)
Ce commentaire a été minimisé par le modérateur sur le site
Merci, vous avez sauvé ma journée déjà deux fois. Ce travail comme par magie.
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour à tous! Merci beaucoup pour ce code. Lorsque j'ai essayé de l'utiliser pour la première fois, une erreur de syntaxe apparaissait sans cesse. Mais, en regardant le code ci-dessus et ce code, j'ai trouvé un moyen de le faire fonctionner et j'ai pensé que cela pourrait aider quelqu'un d'autre: (Suivez simplement les instructions ci-dessus mais copiez et collez ceci à la place) si vous trouvez que le vôtre a un Erreur de syntaxe comme la mienne.

PC = .Paragraphes.Nombre
totalComparaisons = CLng((PC * (PC + 1)) / 2)
Définissez currentParag = .Paragraphs(1)
Pour I = 1 Vers PC - 1
'Debug.Print "traite le paragraphe " & I & " d'un total de " & PC & " " & currentParag.Range.Text
'Debug.Print Len(currentParag) & currentParag
Si currentParag.Range.HighlightColorIndex <> wdYellow Alors
Si currentParag.Range.HighlightColorIndex <> wdBrightGreen Alors
Définissez nextParag = currentParag
Pour J = I + 1 Vers PC
Définissez nextParag = nextParag.Next
Si currentParag.Range.Text = nextParag.Range.Text Alors
currentParag.Range.HighlightColorIndex = wdBrightGreen
nextParag.Range.HighlightColorIndex = wdYellow
Debug.Print "trouvé un !! " & amp; " je = " & amp; Je & amp; " J = " &amp; J & amp; nextParag.Range.Text
Si fin
Suivant
Si fin
Si fin
DoEvents
comparaisonsFait = PC * (I - 1) + (J - I)
SecondsElapsed = DateDiff("s", StartTime, Now())
secondsPerComparison = CLng(SecondsElapsed)/comparaisonsDone
secondsToFinish = CLng(secondsPerComparison * (totalComparisons - comparisonsDone))
minutesToFinish = Format(secondsToFinish / 86400, "hh:mm:ss")
TempsEcoulé = Format(SecondesEcoulées / 86400, "hh:mm:ss")
Debug.Print "Paragraphe de traitement terminé" & amp; Je & amp; " de " & amp; PC &amp; ". Temps écoulé = " & amp; temps écoulé & amp; ". Il est temps de finir = " & amp; minutesToFinish
Définissez currentParag = currentParag.Next
Suivant
Terminer par
End Sub
Noté 4.5 hors 5
Ce commentaire a été minimisé par le modérateur sur le site
J'ai essayé ceci pour mon livre dans MS Word. Tout d'abord, cela ne fonctionnerait pas parce que j'avais des puces. Je les ai supprimés, puis il n'a trouvé que 2 instances "page vierge" et "table des matières". J'ai volontairement répété plusieurs phrases, et cette macro ne les a pas trouvées. Merci d'avoir essayé, mais je dirais que cela ne fonctionne pas.
Ce commentaire a été minimisé par le modérateur sur le site
Merci beaucoup. Un article très précieux, m'a aidé avec mes copies en double et mes paragraphes collés ! Vous êtes génial.
Ce commentaire a été minimisé par le modérateur sur le site
Salut, quelqu'un peut-il me suggérer de préparer une macro dans MS Word pour trouver une erreur dans le paragraphe.
Comme :- "et ou" "que cela" "du du" "Fin de la phrase sans point (.)" "La nouvelle phrase commence par des majuscules initiales sans terminer l'envoi".
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, mình chạy đoạn code trên nhưng không thấy ra kết quả giống bài viết, mình dùng word 2019, Ad support giúp mình nhé 
Ce commentaire a été minimisé par le modérateur sur le site
Pouvez-vous m'aider cela ne fonctionne pas pouvez-vous m'aiderhttps://1drv.ms/w/s!Aja8bo-tfhqb-FVWcGUyvYPv07cX?e=lgJ4i1
Il n'y a pas encore de commentaires postés ici
Laisser vos commentaires
Publier en tant qu'invité
×
Évaluez cet article:
0   Personnages
Emplacements suggérés