Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

supprimer les doublons texte

chifounou

XLDnaute Occasionnel
Bonjour, j'ai une cellule A1 qui contient une chaine de texte de cet accabit :
email1,email1,email2,email2,email3,email3,email4,email4

les emails sont en doubles et toujours 2 par 2 à la suite

quelle fonction appliquer pour que la chaine de texte soit transformée en :
email1,email2,email3,email4

merci d'avance !
 

Roland_M

XLDnaute Barbatruc
Bonsoir,

à condition que ce soit bien comme tu le montres dans cet ordre !?
exemple avec une fonction:
en A1 email1,email1,email2,email2,email3,email3,email4,email4
en A2 = TraiteAdresMail(A1)
ce qui donne: email1,email2,email3,email4

Function TraiteAdresMail(Chaine As Variant)
On Error Resume Next
Dim Tablo As Variant, M$
Tablo = Split(Chaine, ",")
For I = 1 To UBound(Tablo) Step 2: M$ = M$ & Tablo(I) & ",": Next
If Len(M$) > 1 Then M$ = Left(M$, Len(M$) - 1)
TraiteAdresMail = M$
End Function
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour chifounou, Roland_M ,

Une autre fonction qui permet des entrées dans n'importe quel ordre:
VB:
Function OterDoublons(x) As String
Dim T, D, i&
   T = Split(x, ",")
   Set D = CreateObject("scripting.dictionary"): D.comparemode = vbTextCompare
   For i = 0 To UBound(T)
      If Trim(T(i)) <> "" Then D(T(i)) = ""
   Next i
   OterDoublons = Join(D.keys, ",")
End Function
 

Pièces jointes

  • chifounou- ôter doublons- v1.xlsm
    14.8 KB · Affichages: 44

chifounou

XLDnaute Occasionnel
Bonsoir mapomme et Rolan_M,

Merci à vous deux pour le coup de main. J'ai donc appris qu'on pouvait créer des fonctions personnalisées : cool

Petit soucis: mon but est en fait de récupérer la liste d'emails - pas seulement de l'afficher visuellement - mais aussi de séparer les emails entre eux sous forme de colonne et que leur texte apparaisse à la place d'une fonction (pour pouvoir copier-coller les cellules ensuite).

Dans mon fichier joint, l'objectif est en rouge (depuis C6 vers le bas)

Merci d'avance si vous pouvez boucler la boucle (hors e mes cordes)
 

Pièces jointes

  • recupererTrierDoublons.xlsm
    168.3 KB · Affichages: 37

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour chifounou,

En utilisant la fonction OterDoublons de la v1, une macro nommée : Sub EnColonne()
Cettre macro comporte 4 constantes à adapter à votre cas réel.
VB:
Sub EnColonne()
Const FeuilSource = "helper", CellSource = "B3"
Const Feuilcible = "helper", CellCible = "C6"
Dim T

   T = Split(OterDoublons(Sheets(FeuilSource).Range(CellSource)), ",")
   With Sheets(Feuilcible)
      .Range(.Range(CellCible), .Cells(.Rows.Count, .Range(CellCible).Column)).ClearContents
      If UBound(T) >= 0 Then .Range(CellCible).Resize(UBound(T) + 1) = Application.Transpose(T)
   End With
End Sub

nota : Si la cellule source peut comporter plus de 65 536 mails différents, me le signaler pour adapter le code. En effet la fonction Transpose bogue au delà de 65 536 éléments à transposer. Comme la source est la valeur d'une seule cellule, je pense que ce cas ne se produira pas .
 

Pièces jointes

  • chifounou- ôter doublons- v2.xlsm
    172.8 KB · Affichages: 38
Dernière édition:

chifounou

XLDnaute Occasionnel


Y'aurait-il un moyen que dans la dernière macro, en plus :
* la casse des emails écrits en majuscules (je n'avais pas fait attention désolé) soit transformée en minuscules (symboles , et @ devant être laissés intacts évidemment)
* et que la colonne verticale d'emails soit triée alphabétiquement ?



Merci encore !
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir chifounou,

Voir fichier v3 joint.
 

Pièces jointes

  • chifounou- ôter doublons- v3.xlsm
    18.9 KB · Affichages: 41

Discussions similaires

Réponses
26
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…