Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

supprimer mots ou expressions en double dans une cellule

7 réponses
Avatar
jipeache
Bonjour,

j'ai dans une colonne, parfois, des mots ou groupes de mots en double
dans la m=EAme cellule, avec d'autres mots, s=E9par=E9s par une virgule.
Comment supprimer les doublons dans la cellule et garder bien sur un
exemplaire du mot.

Exemple :
"Viol, Vol d'argent, Rien au dossier, Coups mortels, Coups mortels,
Attentats =E0 la pudeur, Incendie volontaire, Attentats =E0 la pudeur"
doit devenir :
"Viol, Vol d'argent, Rien au dossier, Coups mortels, Attentats =E0 la
pudeur, Incendie volontaire".

Merci d'avance.

7 réponses

Avatar
Mgr Banni
pas drôle le contenu de cette colonne....
je n'ai pas la réponse à la question posée mais voudrais juste soulever un
problème de sémantique : selon moi, "coups mortels" ne peut s'écrire au
pluriel ; supposons, en effet, que le premier coup ait donné la mort, les
suivants ne sont plus mortels....
ça me fait penser à ce que j'avais pu lire, il y a longtemps et je ne sais
plus où, au sujet de Timisoara : les nombreux morts ont été tués par balles
Mgr T.B.

"jipeache" a écrit dans le message de news:

Bonjour,

j'ai dans une colonne, parfois, des mots ou groupes de mots en double
dans la même cellule, avec d'autres mots, séparés par une virgule.
Comment supprimer les doublons dans la cellule et garder bien sur un
exemplaire du mot.

Exemple :
"Viol, Vol d'argent, Rien au dossier, Coups mortels, Coups mortels,
Attentats à la pudeur, Incendie volontaire, Attentats à la pudeur"
doit devenir :
"Viol, Vol d'argent, Rien au dossier, Coups mortels, Attentats à la
pudeur, Incendie volontaire".

Merci d'avance.
Avatar
Daniel.C
Bonjour.
Sur une idée de JB :

Sub test()
Dim Dico, c As Range
Set Dico = CreateObject("Scripting.Dictionary")
On Error Resume Next
For Each c In Range("A1", Range("A65536").End(xlUp))
tablo = Split(c, ",")
For Each Item In tablo
Item = Application.Trim(Item)
Dico.Add Item, Item
Next Item
c = ""
For Each k In Dico.keys
c = c & ", " & k
Next
c = Left(Right(c, Len(c) - 2), Len(c) - 2)
Next c
End Sub

Cordialement.
Daniel
"jipeache" a écrit dans le message de news:

Bonjour,

j'ai dans une colonne, parfois, des mots ou groupes de mots en double
dans la même cellule, avec d'autres mots, séparés par une virgule.
Comment supprimer les doublons dans la cellule et garder bien sur un
exemplaire du mot.

Exemple :
"Viol, Vol d'argent, Rien au dossier, Coups mortels, Coups mortels,
Attentats à la pudeur, Incendie volontaire, Attentats à la pudeur"
doit devenir :
"Viol, Vol d'argent, Rien au dossier, Coups mortels, Attentats à la
pudeur, Incendie volontaire".

Merci d'avance.
Avatar
jipeache
On 26 oct, 12:02, "Daniel.C" wrote:
Bonjour.
Sur une idée de JB :

Sub test()
Dim Dico, c As Range
Set Dico = CreateObject("Scripting.Dictionary")
On Error Resume Next
For Each c In Range("A1", Range("A65536").End(xlUp))
tablo = Split(c, ",")
For Each Item In tablo
Item = Application.Trim(Item)
Dico.Add Item, Item
Next Item
c = ""
For Each k In Dico.keys
c = c & ", " & k
Next
c = Left(Right(c, Len(c) - 2), Len(c) - 2)
Next c
End Sub

Cordialement.
Daniel
Bonjour,

Merci mais ca marche et ca marche pas ;-)
L'élimination des doublons présents en Col1 se fait bien dans les
cellules en col2 mais le résultat obtenu est ajouté au résultat
suivant et ainsi de suite.
Il y a cumul des résultats., vers la fin j'obtiens tous les mots
possibles une seule fois.
Merci d'avance
.

Avatar
Daniel.C
Exact. Essaie :

Sub test()
Dim Dico, c As Range
Set Dico = CreateObject("Scripting.Dictionary")
On Error Resume Next
For Each c In Range("A1", Range("A65536").End(xlUp))
tablo = Split(c, ",")
For Each Item In tablo
Item = Application.Trim(Item)
Dico.Add Item, ""
Next Item
c = ""
For Each k In Dico.keys
c = c & ", " & k
Next
c = Left(Right(c, Len(c) - 2), Len(c) - 2)
For Each k In Dico.keys
Dico.Remove k
Next
Next c
End Sub

Daniel
"jipeache" a écrit dans le message de news:

On 26 oct, 12:02, "Daniel.C" wrote:
Bonjour.
Sur une idée de JB :

Sub test()
Dim Dico, c As Range
Set Dico = CreateObject("Scripting.Dictionary")
On Error Resume Next
For Each c In Range("A1", Range("A65536").End(xlUp))
tablo = Split(c, ",")
For Each Item In tablo
Item = Application.Trim(Item)
Dico.Add Item, Item
Next Item
c = ""
For Each k In Dico.keys
c = c & ", " & k
Next
c = Left(Right(c, Len(c) - 2), Len(c) - 2)
Next c
End Sub

Cordialement.
Daniel
Bonjour,

Merci mais ca marche et ca marche pas ;-)
L'élimination des doublons présents en Col1 se fait bien dans les
cellules en col2 mais le résultat obtenu est ajouté au résultat
suivant et ainsi de suite.
Il y a cumul des résultats., vers la fin j'obtiens tous les mots
possibles une seule fois.
Merci d'avance
.

Avatar
JB
Bonjour,
Sous forme d'une fonction:

Function SansDoublonsCellule(c)
Set mondico = CreateObject("Scripting.Dictionary")
tbl = Split(c, ",")
For Each i In tbl
If Not mondico.Exists(Trim(i)) Then mondico.Add Trim(i), Trim(i)
Next i
temp = ""
For Each e In mondico.items
temp = temp & e & ","
Next
SansDoublonsCellule = Left(temp, Len(temp) - 1)
End Function

http://cjoint.com/?kAoPvWHkSI

JB

On 26 oct, 09:13, jipeache wrote:
Bonjour,

j'ai dans une colonne, parfois, des mots ou groupes de mots en double
dans la même cellule, avec d'autres mots, séparés par une virgule.
Comment supprimer les doublons dans la cellule et garder bien sur un
exemplaire du mot.

Exemple :
"Viol, Vol d'argent, Rien au dossier, Coups mortels, Coups mortels,
Attentats à la pudeur, Incendie volontaire, Attentats à la pudeur"
doit devenir :
"Viol, Vol d'argent, Rien au dossier, Coups mortels, Attentats à la
pudeur, Incendie volontaire".

Merci d'avance.


Avatar
jipeache
On 26 oct, 14:41, JB wrote:
Bonjour,
Sous forme d'une fonction:

Function SansDoublonsCellule(c)
Set mondico = CreateObject("Scripting.Dictionary")
tbl = Split(c, ",")
For Each i In tbl
If Not mondico.Exists(Trim(i)) Then mondico.Add Trim(i), Trim(i)
Next i
temp = ""
For Each e In mondico.items
temp = temp & e & ","
Next
SansDoublonsCellule = Left(temp, Len(temp) - 1)
End Function

http://cjoint.com/?kAoPvWHkSI

JB


Merci à vous 2.
Les 2 fonctionnent, (chacun ses petits inconvénients ;-))) :
la macro remplace la version initiale
la fonction ne remet pas l'espace après la virgule.)

Parfait et encore merci.

Avatar
JB
Function SansDoublonsCellule(c)
Set mondico = CreateObject("Scripting.Dictionary")
tbl = Split(c, ",")
For Each i In tbl
If Not mondico.Exists(Trim(i)) Then mondico.Add Trim(i), Trim(i)
Next i
temp = ""
For Each e In mondico.items
temp = temp & e & ", "
Next
SansDoublonsCellule = Left(temp, Len(temp) - 2)
End Function

http://cjoint.com/?kApTvexUkV

JB


On 26 oct, 15:36, jipeache wrote:
On 26 oct, 14:41, JB wrote:





Bonjour,
Sous forme d'une fonction:

Function SansDoublonsCellule(c)
Set mondico = CreateObject("Scripting.Dictionary")
tbl = Split(c, ",")
For Each i In tbl
If Not mondico.Exists(Trim(i)) Then mondico.Add Trim(i), Trim(i)
Next i
temp = ""
For Each e In mondico.items
temp = temp & e & ","
Next
SansDoublonsCellule = Left(temp, Len(temp) - 1)
End Function

http://cjoint.com/?kAoPvWHkSI

JB


Merci à vous 2.
Les 2 fonctionnent, (chacun ses petits inconvénients ;-))) :
la macro remplace la version initiale
la fonction ne remet pas l'espace après la virgule.)

Parfait et encore merci.- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -