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

SUPPRIMER des mots en double dans des cellules

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

cephalotus

XLDnaute Occasionnel
Bonsoir le forum,

😕 J'ai une colonne avec un certain nombre de lignes. Dans certaines des cellules de cette colonne, j'ai des mots en qui se répètent un certain nombre de fois.

Je voudrais qu'il y ne reste qu'un mot de chaque sorte par cellule.

exemple:
mot-va-erreur-mot-ne

🙂 Résultat:
mot-va-erreur-ne
 
Re : Je n'arrive pas à faire marcher la macro !!!

Bonsoir cephalotus, allegro50, pierrejean, lacorse33, ODVJ,

A mon avis, tant qu'à faire une fonction personnalisée, autant qu'elle puisse être utilisée directement depuis la feuille de calcul.

Dans un module de code standard ("Module1" par exemple) :
Code:
[SIZE=2][COLOR=GRAY][B][I]DANS UN MODULE DE CODE STANDARD[/I][/B][/COLOR]

[COLOR=NAVY]Function[/COLOR] EpureDoublon(R [COLOR=NAVY]As[/COLOR] Range) [COLOR=NAVY]As String[/COLOR]
[COLOR=GREEN]'myDearFriend! -  www.mdf-xlpages.com[/COLOR]
[COLOR=NAVY]Dim[/COLOR] Dbl [COLOR=NAVY]As New[/COLOR] Collection
[COLOR=NAVY]Dim[/COLOR] TabTemp [COLOR=NAVY]As Variant
Dim[/COLOR] L [COLOR=NAVY]As Byte[/COLOR], N [COLOR=NAVY]As Byte[/COLOR]
    [COLOR=GREEN]'Crée un tableau de mots (séparateur "-")[/COLOR]
    TabTemp = Split(R.Text, "-")
    [COLOR=GREEN]'Reconstitue la chaine en extrayant les mots doublons[/COLOR]
    [COLOR=NAVY]For[/COLOR] L = 0 [COLOR=NAVY]To UBound[/COLOR](TabTemp, 1)
        N = Dbl.Count
        [COLOR=NAVY]On Error Resume Next[/COLOR]
        Dbl.Add TabTemp(L), [COLOR=NAVY]CStr[/COLOR](TabTemp(L))
        [COLOR=NAVY]On Error GoTo[/COLOR] 0
        [COLOR=NAVY]If[/COLOR] Dbl.Count > N [COLOR=NAVY]Then[/COLOR]       [COLOR=GREEN]'Si pas de doublon alors alimente la chaine résultat[/COLOR]
            EpureDoublon = EpureDoublon & IIf(EpureDoublon <> "", "-", "") & TabTemp(L)
        [COLOR=NAVY]End If
    Next[/COLOR] L
[COLOR=NAVY]End Function[/COLOR][/SIZE]
Puis en cellule B2, tu saisies =EpureDoublon(A2)
Et tu tires ensuite cette formule vers le bas.

La détection des doublons se fait grâce à un objet collection. Méthode de J.Walkenbach (basée sur une astuce de J.G. Hussey)

Cordialement,
 

Pièces jointes

Re : SUPPRIMER des mots en double dans des cellules

Bonsoir le forum et cephalotus,

Voici une essai avec une autre fct VBA, j'ai désactivé la macro évenementielle

Bonne soirée,

Ninbihan

Edit: Bonsoir MDF, désolé, je ne t'avais pas vu !!
Reedit: J'ai modifié la macro qui ne prenait pas en compte une chaine avec seulement 2 mots identiques
 

Pièces jointes

Dernière édition:
Re : SUPPRIMER des mots en double dans des cellules

Bonsoir ninbihan,
ninbihan à dit:
Edit: Bonsoir MDF, désolé, je ne t'avais pas vu !!
il n'y a pas de mal 😉

Je vois que nous faisons tous deux la même analyse du problème (avec cependant une différence quant au traitement).

Mais tu as raison de préciser que la macro évènementielle (Worksheet_Change en Feuille 1) n'a plus lieu d'être. Je l'ai aussi désactivée sans toutefois le préciser. C'est pourtant une précision importante.

Cordialement,
 
Re : SUPPRIMER des mots en double dans des cellules

Bonsoir myDearFriend, ninbihan, le forum,

Je vous remercie pour vos réponses. Vos macros fonctionnent parfaitement toutes les deux !!!

gracie mille, et bonne soirée à tous les et vous tous.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
19
Affichages
867
Réponses
17
Affichages
876
Réponses
5
Affichages
173
Réponses
4
Affichages
521
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…