Comment mettre en évidence le texte ou les mots en double dans une cellule Excel ?

  • Partage Ça
Michael Brown

Ce tutoriel montre comment mettre en évidence les mots ou les chaînes de texte en double dans une cellule à l'aide de VBA.

La mise en forme conditionnelle d'Excel permet de mettre en évidence les doublons de toutes les manières possibles et imaginables : avec ou sans 1ère occurrence, dans une seule ou plusieurs colonnes, dans des cellules dupliquées consécutives et dans des lignes entières basées sur des valeurs identiques dans une colonne clé. Mais, comme d'habitude, il y a un "mais". Les règles de mise en forme conditionnelle fonctionnent au niveau de la cellule, alors que vous pouvez vouloir mettre en évidence les doublons...Cela ne peut se faire qu'avec des macros. Même si vous n'avez aucune expérience de VBA, ne vous précipitez pas pour fermer cette page. Vous y trouverez des exemples de codes prêts à l'emploi et des instructions détaillées sur la façon de les utiliser dans vos feuilles de calcul.

    Mettre en évidence les mots en double dans une cellule en ignorant la casse du texte

    Cet exemple montre comment ombrager les mots ou les chaînes de texte dupliqués dans une cellule avec une couleur de police rouge comme dans l'image ci-dessous. Veuillez noter que les lettres minuscules et majuscules sont traitées comme les mêmes caractères. Par exemple, orange , ORANGE et Orange sont considérés comme étant le même mot.

    Le code de la macro est le suivant :

    Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Enter the delimiter that separates values in a cell" , "Delimiter" , ", " ) For Each Cell In Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, False ) Next End Sub HighlightDupeWordsInCell(Cell As Range, Optional Delimiter As String = " " , Optional CaseSensitive AsBoolean = True ) Dim text As String Dim words() As String Dim word As String Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive Then words = Split(Cell.Value, Delimiter) Else words = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (words) To UBound (words) - 1 word = words(wordIndex) matchCount = 0 For nextWordIndex = wordIndex + 1 To UBound (words) If word =words(nextWordIndex) Then matchCount = matchCount + 1 End If Next nextWordIndex If matchCount> ; 0 Then text = "" For Index = LBound (words) To UBound (words) text = text & ; words(Index) If (words(Index) = word) Then Cell.Characters(Len(text) - Len(word) + 1, Len(word)).Font.Color = vbRed End If text = text & ; Delimiter Next End If Next wordIndex End Sub

    Mettez en évidence le texte en double dans une cellule en respectant la casse.

    Dans la plupart des cas, nous avons tendance à ignorer la casse des lettres lorsque nous travaillons avec des entrées de texte dans Excel. Dans certaines circonstances, cependant, la casse du texte est importante. Par exemple, si vous traitez des identifiants, des mots de passe ou d'autres enregistrements de ce type, les chaînes de caractères telles que 1-AA , 1aa et 1-Aa ne sont pas des doublons et ne doivent pas être mis en évidence :

    Dans ce cas, utilisez la version suivante du code :

    Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Enter the delimiter that separates values in a cell" , "Delimiter" , ", " ) For Each Cell In Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, True ) Next End Sub HighlightDupeWordsInCell(Cell As Range, Optional Delimiter As String = " " , Optional CaseSensitive AsBoolean = True ) Dim text As String Dim words() As String Dim word As String Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive Then words = Split(Cell.Value, Delimiter) Else words = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (words) To UBound (words) - 1 word = words(wordIndex) matchCount = 0 For nextWordIndex = wordIndex + 1 To UBound (words) If word =words(nextWordIndex) Then matchCount = matchCount + 1 End If Next nextWordIndex If matchCount> ; 0 Then text = "" For Index = LBound (words) To UBound (words) text = text & ; words(Index) If (words(Index) = word) Then Cell.Characters(Len(text) - Len(word) + 1, Len(word)).Font.Color = vbRed End If text = text & ; Delimiter Next End If Next wordIndex End Sub

    Comment utiliser les macros pour mettre en évidence les mots en double dans Excel ?

    Si vous êtes un débutant dans l'utilisation de VBA, les instructions pas à pas ci-dessous vous guideront confortablement. Les utilisateurs expérimentés peuvent simplement choisir le lien de téléchargement et sauter le reste :)

    Ajoutez le code à votre classeur

    Vous commencez par insérer le code de la macro dans votre classeur Excel, en procédant comme suit :

    1. Ouvrez le classeur dans lequel vous souhaitez mettre en évidence les doublons.
    2. Appuyez sur Alt + F11 pour ouvrir l'éditeur Visual Basic.
    3. Dans le volet de gauche, cliquez à droite sur Ce manuel de travail et sélectionnez Insérer > ; Module dans le menu contextuel.
    4. Collez le code dans la fenêtre Code.
    5. Pour conserver la macro en vue d'une utilisation ultérieure, veillez à enregistrer votre classeur en tant que fichier .xlsm compatible avec les macros.

    Vous pouvez également télécharger notre classeur type et exécuter la macro à partir de celui-ci. Le classeur type contient les macros suivantes :

    • HighlightDupesCaseInsensitive - ombrage les doublons dans une cellule en ignorant la casse des lettres.
    • HighlightDupesCaseSensitive - met en évidence les doublons dans une cellule en tenant compte de la casse des lettres.

    Pour plus d'informations, veuillez consulter la section Comment insérer un code VBA dans Excel.

    Exécuter la macro

    Une fois le code ajouté à votre propre classeur ou notre fichier d'exemple téléchargé et ouvert, exécutez la macro de cette manière :

    1. Dans votre feuille de calcul, sélectionnez les cellules dans lesquelles vous souhaitez mettre en évidence le texte en double, qu'il s'agisse d'une plage ou de plusieurs plages non adjacentes.
    2. Appuyez sur Alt + F8 .
    3. Sélectionnez la macro qui vous intéresse et cliquez sur Exécuter .

    4. La macro vous demandera de spécifier le délimiteur qui sépare les valeurs dans les cellules sélectionnées. Le délimiteur prédéfini (une virgule et un espace dans notre cas) apparaîtra automatiquement dans le champ de saisie. Selon vos besoins, vous pouvez laisser le délimiteur par défaut ou en taper un autre, puis cliquer sur OK.

    Un instant plus tard, toutes les chaînes en double dans les cellules sélectionnées seront ombrées en rouge (ou toute autre couleur de police définie dans votre code).

    Conseil. Pour rapidement supprimer les doublons dans une cellule, vous pouvez utiliser la fonction Supprimer les sous-chaînes dupliquées, l'un des nombreux outils de gain de temps inclus dans notre Ultimate Suite.

    Comment adapter le code à vos besoins

    Avec ces notes d'utilisation et les connaissances de base de VBA (ou en suivant de près les instructions ci-dessous), vous pouvez facilement modifier les codes en fonction de vos besoins.

    Placer sur le même module

    Comme vous pouvez le remarquer, les deux macros ( HighlightDupesCaseSensitive et HighlightDupesCaseInsensitive ) appelle le HighlightDupeWordsInCell La différence entre les deux macros ci-dessus réside uniquement dans le troisième paramètre (CaseSensitive) transmis à ladite fonction.

    Pour une recherche sensible à la casse, il est défini à TRUE :

    Appeler HighlightDupeWordsInCell(Cell, Delimiter, True)

    Pour une recherche insensible à la casse, il est défini à FALSE :

    Appeler HighlightDupeWordsInCell(Cell, Delimiter, False)

    Pour que les macros fonctionnent, le code de l'élément HighlightDupeWordsInCell doit être placée sur le même module que les macros.

    Délimiteur

    Lors de son exécution, la macro vous demandera de spécifier le délimiteur qui sépare les mots/chaînes dans les cellules sélectionnées. Le délimiteur par défaut est une virgule et un espace (", ") et il est prédéfini dans l'InputBox :

    Delimiter = InputBox("Spécifiez le délimiteur qui sépare les valeurs dans une cellule", "Delimiter", ", ")

    Dans votre code, vous êtes libre d'utiliser tout autre caractère comme délimiteur prédéfini.

    Couleur

    Par défaut, le HighlightDupeWordsInCell La fonction ombrage les doublons avec une couleur de police rouge. La couleur est définie dans cette ligne :

    Cell.Characters(positionInText, Len(word)).Font.Color = vbRed

    Ici, vbRed est une sorte de constante de couleur VBA. Pour afficher les doublons dans une couleur différente, vous pouvez remplacer vbRed par une autre constante telle que vbGreen, vbYellow, vbBlue, etc. T La liste des constantes de couleur prises en charge se trouve ici.

    Voilà comment mettre en évidence les mots en double dans les cellules Excel. Je vous remercie de votre lecture et j'espère vous voir sur notre blog la semaine prochaine !

    Téléchargements disponibles

    Exemples de code pour mettre en évidence les doublons dans une cellule (fichier .xlsm)

    Ultimate Suite 14 jours version entièrement fonctionnelle (fichier .exe)

    Michael Brown est un passionné de technologie passionné par la simplification de processus complexes à l'aide d'outils logiciels. Avec plus d'une décennie d'expérience dans l'industrie de la technologie, il a perfectionné ses compétences dans Microsoft Excel et Outlook, ainsi que dans Google Sheets et Docs. Le blog de Michael est dédié au partage de ses connaissances et de son expertise avec les autres, en fournissant des conseils et des tutoriels faciles à suivre pour améliorer la productivité et l'efficacité. Que vous soyez un professionnel chevronné ou un débutant, le blog de Michael offre des informations précieuses et des conseils pratiques pour tirer le meilleur parti de ces outils logiciels essentiels.