Supprimer les Mots en double mais pas les nombres + Blacklist

Bonjour à tous,

J'avais déjà fait un post Supprimer les mots en double d'une cellule, et curulis57 avait créer une macro parfaite, mais j'aurais besoin d'une amélioration

https://forum.excel-pratique.com/viewtopic.php?f=2&t=99876&p=584251#p584251

Donc toujours le même problème, j'ai un énorme fichier de 120000 lignes, avec des titres de produits en colonne A, et dans certaines cellules de ma colonne titre j'ai des mots en double, exemple avec ces 3 titres de produit en A1 et A2 :

A1 >>> Endoscope numérique 720P Waterproof USB endoscope Caméra d'inspection de tube de serpent avec 6 LED

A2 >>> Tablette numérique Android tablette Full HD tablette

A3 >>> Housse pour iPhone 6 & 6 S & pour iPhone 5 & 5 S et iPhone 3S

J'ai besoin d'une macro Excel qui me permettrai de supprimer les mots en double ou en triple de la colonne A et de ne garder que le 1er des mots en double.

Mais j'ai besoin que la macro ne supprime pas les nombres en double.

Et j'aurais également besoin de pouvoir en page 2 établir une blacklist de mot ou expression à ne pas effacer mêmes s'ils sont en double.

Et en page 3 une liste de mot à rechercher remplacer mêmes s’ils ne sont pas en double.

Donc imaginons la blacklist de mot à ne pas effacer suivante en page 2 :

S

&

Pour

Et la liste suivante de mot à rechercher remplacer mêmes s’ils ne sont pas en double

"et" à remplacer par "&"

Après la macro les titres deviendraient :

A1 >>> Endoscope numérique 720P Waterproof USB Caméra d'inspection de tube serpent avec 6 LED

A2 >>> Tablette numérique Android tablette Full HD

A3 >>> Housse pour iPhone 6 & 6 S & pour 5 & 5 S & 3S

La casse n'est pas respectée, par exemple Endoscope et endoscope sont identique.

Voilà n'hésitez pas à me demander des précisions. L'idéale serait un bouton pour déclencher la macro.

J'ai mis en PJ, le fichier Excel exemple et n'hésitez pas à vous servir de la macro de curulis57 que j'ai également remis en PJ.

Merci d'avance

Salut yptsba,

Salut le forum!

quelque chose comme ça... ? Avec un petit bouton rouge!

Une seule feuille suffit pour renseigner les exceptions.

Private Sub cmdGO_Click()
'
Dim tData, tDataDD, tDataSW, tSplit
Dim iFlag As Integer, sData As String
'
iRow = Range("A" & Rows.Count).End(xlUp).Row        'Données à traiter
tData = Range("A2:A" & iRow).Value
With Worksheets("Exceptions")
    iRow = .Range("A" & Rows.Count).End(xlUp).Row        'Données doublables
    tDataDD = .Range("A2:A" & iRow).Value
    iRow = .Range("B" & Rows.Count).End(xlUp).Row        'Données à remplacer
    tDataSW = .Range("B2:C" & iRow).Value
End With
'
For x = 1 To UBound(tData)
    tData(x, 1) = Replace(tData(x, 1), Chr(160), Chr(32))
    For y = 1 To UBound(tDataSW, 1)
        tData(x, 1) = Replace(tData(x, 1), Chr(32) & tDataSW(y, 1) & Chr(32), Chr(32) & tDataSW(y, 2) & Chr(32))
    Next
    tSplit = Split(tData(x, 1), " ")
    For Z = 0 To UBound(tSplit) - 1
        For y = Z + 1 To UBound(tSplit)
            If UCase(tSplit(Z)) = UCase(tSplit(y)) And Not (IsNumeric(tSplit(Z))) Then
                iFlag = 0
                For k = 1 To UBound(tDataDD, 1)
                    If tSplit(Z) = tDataDD(k, 1) Then
                        iFlag = 1
                        Exit For
                    End If
                Next
                If iFlag = 0 Then tSplit(y) = ""
            End If
        Next
    Next
    sData = ""
    For y = 0 To UBound(tSplit)
        sData = sData & IIf(tSplit(y) <> "" And tSplit(y) <> " ", tSplit(y) & " ", "")
    Next
    tData(x, 1) = sData
Next
Range("B2").Resize(UBound(tData), 1) = tData
'
End Sub

Joyeuses Pâques à tous!

A+

Salut à tous,

J'en attendez pas moins, ça m'a l'air parfait, merci curulis57

Bonne journée tout le monde

Bonjour à tous,

J’ai encore besoin de votre aide car j’aurais besoin d’une nouvelle fonction sur cette macro 😊

Que ça ne supprime que les mots en double que j’aurais listé par exemple en colonne D de la page « Exceptions », et toujours pareil que ça garde le 1er des mots en double.

Donc toujours avec mes exemples, si j’ai la liste suivante en colonne D de la page 2 « exception » :

Endoscope

iPhone

Alors pour les exemples suivants :

A1 >>> Endoscope numérique 720P Waterproof USB endoscope Caméra d'inspection de tube de serpent avec 6 LED

A2 >>> Tablette numérique Android tablette Full HD tablette

A3 >>> Housse pour iPhone 6 & 6 S & pour iPhone 5 & 5 S et iPhone 3S

J’obtiendrais :

A1 >>> Endoscope numérique 720P Waterproof USB Caméra d'inspection de tube de serpent avec 6 LED

A2 >>> Tablette numérique Android tablette Full HD tablette

A3 >>> Housse pour iPhone 6 & 6 S & pour 5 & 5 S et 3S

>>>>> Les mots en double pas compris dans ma liste reste.

Merci d’avance

Salut yptsba,

il me faudrait plus d'explications car ça sent le conflit voire un traitement imprécis de tes listes.

Par défaut, déjà, seuls les 1ers mots en double d'un item sont conservés sauf s'ils figurent en colonne [A] de la feuille 'Exceptions' auquel cas ils restent tous.

Cela impliquerait une liste [D] à rallonge dont il ne faudra pas oublier un seul élément!

Par exemple : le mot "tablette".

S'il ne figure pas dans la colonne [A] existante (à conserver) et que tu l'oublies en colonne [D] (garder le 1er), il va être zappé par le test et de toute façon conservé en double comme s'il avait été inscrit en colonne [A].

Vérifier et compléter minutieusement les exceptions de la colonne [A] reviendrait exactement au même!

Ou alors, je n'ai pas saisi ou très mal, ta demande!

A+

Salut,

Effectivement les exceptions rentre en conflit avec la nouvelle fonction.

Alors je pense que le plus simple serait une nouvelle macro. Avec juste la nouvelle fonction.

Si un des mots de la liste est trouvé par la macro alors seul le 1er mot en double est conservé.

Donc au lieu de supprimer tous les mots en double, ça ne supprime que ce qui sont dans la liste en page 2.

Je sais pas si je suis clair dans mes explications?

Merci

Salut yptsba,

au final, hormis les données de contrôle à sélectionner via les deux boutons rouge et vert, un seul chiffre à changer dans la procédure, laquelle se trouve bonne pour le service dans les deux cas.

J'ai cependant conservé par défaut le changement de certains mots par d'autres 'Exceptions' [BC] ainsi que l'exclusion des chiffres du test.

  • Bouton rouge : cas déjà réalisé ;
  • Bouton vert : demande du jour.

En passant, je me suis amusé avec les bordures de la feuille 'Exceptions'...

A+

Salut,

Comme d'habitude, rien à redire c'est parfait, exactement ce dont j'avais besoin

Merci encore Curulis57

Bonjour,

Alors désolé, les idées me viennent au fur et à mesure.

1) Serait-il possible d'ajouter un bouton, ou cette fois la macro n'effectuerez que le rechercher remplacer ?

2) Serait-il possible d'ajouter un 4éme bouton ou cette fois la macro ferait un extract des mots en double et les listerai dans une nouvelle colonne en page 2 ?

En fait avec ce 4ème bouton, les mots en double ne serait pas supprimé, il serait juste repéré et listé dans une nouvelle colonne en page 2.

>>> Cela me permettra d'avoir un aperçu des mots en doublon, et de pouvoir en copier certain dans la liste des exceptions avant de cliquer sur le bouton 1.

J'espère que c'est possible, ça m'aiderai beaucoup .

Merci d'avance

Salut yptsba,

voilà ton fichier!

Il m'a fallu un peu de travail, certaines petites erreurs m'ayant échappé précédemment.

Tu as 3 boutons en 'BDD' :

  • rouge : mots remplacés, exclusion des chiffres, élimination de tous les doublons sauf Mots non-limités 'Exceptions' [A] ;
  • vert : mots remplacés, exclusion des chiffres, mais élimination des seuls doublons figurant en 'Exceptions' [D] ;
  • orange : mots remplacés uniquement.

Tu as plein de choses en 'Exceptions'...

2 boutons :

  • bleu : recherche des doublons de ta BDD avec affichage en [E] ;
  • blanc : effacer la liste en [E].

3 OptionButtons en [A], (B) et [D] :

  • quand la liste est affichée en [E], la macro y affiche en rouge les mots figurant dans la section sélectionnée ;
  • choisir un autre OptionButton actualise l'affichage en rouge des mots figurant dans cette nouvelle sélection.

1 CheckBox en [E] :

  • cocher la CheckBox autorise, d'un clic sur un mot de la liste en [E] de copier ce mot directement dans la section sélectionnée avec actualisation de l'affichage en rouge en [E] ;
  • cliquer sur un mot en rouge ne copiera pas ce mot une deuxième fois, évidemment.
  • copier un mot dans la section (B) entraîne le positionnement du curseur sur la cellule-miroir en [C] pour préciser le mot remplaçant.

Quand une cellule change :

  • la colonne se trie ascendante, histoire de retrouver facilement ses données ;
  • les bordures jouent toutes seules et s'adaptenten fonction du remplissage ou vidage des colonnes ;
  • ne sélectionne qu'un mot à la fois pour l'effacer d'une colonne, même en [BC] - uniquement en (B) d'ailleurs- (je ne me suis pas cassé le der... à prévoir le cas d'une sélection multiple) ;
  • dans ce cas d'effacement, la colonne remonte pour combler le vide.

J'espère avoir tapé juste!

Avec plaisir!

A+

Waaaahhooouuu super curulis57, ta assuré, c'est exactement ce dont j'avais besoin, ça marche parfaitement.

Merci beaucoup, encore une fois mission plus que accomplie

Rechercher des sujets similaires à "supprimer mots double pas nombres blacklist"