Impossible de supprimer des doublons

  • Initiateur de la discussion Initiateur de la discussion Maddad
  • Date de début Date de début

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 !

M

Maddad

Guest
Bonjour,

Voila, j'ai la colonne "A:A" contentant des cellules avec des mots séparés par des virgules, j'ai réussi à les extraire vers la colonnes "B:B" avec un seul mot par ligne, mais je n'arrive pas à supprimer les doublons, le but c'est d'alimenter un combobox

Merci

Voir fichier joint
 

Pièces jointes

Re : Impossible de supprimer des doublons

Bonjour,
Il y dans la colonne B des Mots avec des espaces au début, c'est pour cela je dois faire une formule un peu longue pour extraire les mots sans doublons,
en D2 :
Code:
=SI(LIGNES($2:2)<=NB(1/FREQUENCE(EQUIV(SUPPRESPACE(B$2:B$30);SUPPRESPACE(B$2:B$30);0);LIGNE(INDIRECT("1:"&LIGNES(B$2:B$30)))));INDEX(SUPPRESPACE(B$2:B$30);MIN(SI(NB.SI(D$1:D1;SUPPRESPACE(B$2:B$30))=0;LIGNE(INDIRECT("1:"&LIGNES(B$2:B$30))))));"")
@ valider par Ctrl+Maj+Entree
@ tirer vers le bas
Amicalement
 
Re : Impossible de supprimer des doublons

Bonjour Maddad, bonjour le forum,

Ton fichier modifié en pièce jointe avec le code ci-dessous :
Code:
Option Compare Text 'le méthode de comparaison est le texte (A=a) 

Private Sub UserForm_Initialize()
Dim dl As Long 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim dico As Object 'déclare la variable dico (DICtiOnnaire)
Dim cel As Range 'déclare la variable cel (CELLule)
Dim temp As Variant 'déclare la variable temp (tableau TEMPoraire)
Dim x As Integer 'déclare la variable x (incrément)
Dim lvd As String 'déclare la variable lvd(Liste de Validation de Données)

Set dico = CreateObject("Scripting.Dictionary") 'définit le dictionnaire dico
With Sheets("Feuil1") 'prend en compte l'onglet "Feuil1"
    dl = .Cells(Application.Rows.Count, 2).End(xlUp).Row 'définit la dernière ligne dl de la colonne B
    Set pl = .Range("B2:B" & dl) 'définit la plage pl
End With 'fin de la prise en compte de l'onglet "Feuil1"
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
    cel.Value = Trim(cel.Value) 'supprime les espaces avant et/ou après
    dico(cel.Value) = "" 'alimente le dictionnaire
Next cel 'prochaine cellule de la boucle
temp = dico.keys 'récupère le dictionnaire sans doublons
Call tri(temp, LBound(temp), UBound(temp)) 'lance la procédure de tri croissant du tableau temp
Me.ComboBox1.List = temp
End Sub


Sub tri(a As Variant, gauc As Integer, droi As Integer) 'tiré du site de Jacques BOISGONTIER [url=http://boisgontierjacques.free.fr/]Formation Excel VBA JB[/url]
Dim ref As Variant
Dim g As Integer, d As Integer
Dim tmp As Variant
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
    Do While a(g) < ref: g = g + 1: Loop
    Do While ref < a(d): d = d - 1: Loop
    If g <= d Then
        tmp = a(g): a(g) = a(d): a(d) = tmp
        g = g + 1: d = d - 1
    End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub
Le fichier :
 

Pièces jointes

- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
428
Réponses
6
Affichages
568
Retour