Supprimer des doublons en respectant la casse

24doublons.xlsx (11.35 Ko)

Bonjour,

J'ai vraiment besoin de votre aide,

J'ai un tableau de 16 000 lignes, je fais un concatener des quelques premières colonnes pour me donner la chaîne de texte que je désire, j'aboutis donc avec 16 000 chaînes de texte (dont certaine sont des doublons)

Ce que j'aimerais :

1. d'abord, pour chaque doublons, j'aimerais combien il y en a (exemple: si j'ai A,A,A,A, j'aimerais que ça me donne A=4)

2. ensuite, j'aimerais qu'il supprime les valeurs en double pour ensuite aboutir avec seulement les valeurs uniques (exemple: A,a,C,e,A,D,E,C,E j'aimerais qu'il me reste A,a,C,D,E,e)

3. Puis quand tout ceci est fait, j'aimerais qu'elle me dissocie les donner (un genre de concatener, mais à l'envers!)

Et le tout doit respecter la casse!!!!!

Je suis certaine que ça ce fait, mais là je m'y retrouve plus..

Merci!!!

Je vous ai mis un exemple en pièce jointe!

Bonjour,

Ton fichier en retour.

99doublons.xlsx (12.02 Ko)

J'ai simplement utilisé les fonctionnalités d'Excel "Supprimer les doublons" et "Convertir".

A+

Bonjour,

Effectivement, ça marche super bien sur quelques données, mes sur 16 000 données, je ne sais pas pourquoi, ça ne me donne pas toutes les valeurs

Savez-vous pourquoi?

Je vous ai joins le même fichier, je voulais mettre les 16 000- données mais le fichier est trop gros, j'ai donc mis 1000 données que j'ai copier coller, ensuite, j'ai fait supprimer les doublons et il me manque beaucoup de données!

Merci beaucoup!!

19doublons.xlsx (295.53 Ko)

Bonjour,

J'ai fait le test sur les 717 lignes de données et j'obtiens 64 lignes sans doublon.

Je ne vois aucune anomalie.

28doublons.xlsx (67.18 Ko)

A+

Salut,

On dirait que tout est OK, mais quand on le regarde plus attentivement, on voit qu'il manque toute les valeurs qu'il commence par dw (en minuscule).

Même quand on enlève la mise en majuscule automatique.

Bizarre non?!

13doublons.xlsx (67.53 Ko)

Bonjour,

Une proposition.

Cdlt

32doublons.xlsm (106.33 Ko)
Option Explicit
Private Sub cmdTest_Click()
Dim ws As Worksheet
Dim lastRow As Long, i As Long
Dim rng As Range, c As Range
Dim strValue As String
Dim monDico As Object
Dim a, d

    Application.ScreenUpdating = False
    Set ws = ActiveSheet
    Set monDico = CreateObject("Scripting.Dictionary")
    With ws
        .[K1:R1].EntireColumn.Delete
        lastRow = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = 1 To lastRow
            strValue = ""
            Set rng = .Range(.Cells(i, 1), .Cells(i, 9))
            For Each c In rng
                strValue = strValue & c.Value & " "
            Next c
            monDico(Left(strValue, Len(strValue) - 1)) = ""
        Next i

        i = 1
        For Each d In monDico.keys
            a = Split(d, " ")
            .Cells(i, 11).Resize(, UBound(a)) = a
            i = i + 1
        Next d
        .[K1:R1].EntireColumn.AutoFit
    End With

    Set monDico = Nothing
    Set rng = Nothing
    Set ws = Nothing

End Sub

J'ai essayer votre macro, lorsque je cliques sur le bouton test, il ne se passe rien, pour la faire fonctionner, il faut que je cliques sur le bouton play dans le mode où je vois le code, comment on fait pour relier la macro à un bouton, si je crée un bouton et que je cliques sur affecter une macro, la macro ne s'y trouve pas...

Et si je voulais qu'elle me renvoie les données à la colonne "S" à la place de la colonne "K", qu'est-ce que je devrais changer??

Merci beaucoup, à part ces deux détails, elle fonctionne vraiment bien!

Bonjour,

Voir fichier modifié.

Tu dois avoir un message à l'ouverture du fichier.

Si ce n'est pas le cas, modifie les paramètres des macros dans le centre de gestion de la confidentialité.

Cdlt.

26doublons-1.xlsm (107.25 Ko)

Bonjour Jean-Eric,

Je crois comprendre que khristine34 souhaite que la procédure soit placée dans un module standard afin de pouvoir la lancer avec un bouton de formulaire.

J'en profite pour te signaler qu'il manque la recopie des données de la dernière colonne .

Salutations.

Re,

Bonjour Frangy,

Remarques pertinentes

Le fichier est modifié en conséquence.

Cdlt.

54doublons-2.xlsm (106.19 Ko)

Rebonjour,

La macro va super bien, mais je dois ajouter un tableau à sa droite qui tient compte du résultats de la macro. Seulement, si je fais mon tableau et que j'«active» la macro, soit sa me met #REF! ou sinon mon tableau est décaler. En lisant la macro, je crois avoir compris pourquoi, au début, elle supprime les colonnes, ce qui les fait décaler. Je ne suis pas très bonne en VBA, mais il n'y aurait pas un moyen de juste «vider» les colonnes comme ça lorsque les résultats changerait, mon tableau n'aurait simplement qu'à recalculer les valeurs??

Merci à tous!!

Bonjour,

J'ai modifié la partie surlignée dans le code ci-dessous.

A te relire.

Cdlt.

43doublons-v3.xlsm (103.67 Ko)
Option Explicit
'Option Private Module
Public Sub Supprimer_doublons()
Dim ws As Worksheet
Dim lastRow As Long, i As Long
Dim rng As Range, c As Range
Dim strValue As String
Dim monDico As Object
Dim a, d

    Application.ScreenUpdating = False
    Set ws = ActiveSheet
    Set monDico = CreateObject("Scripting.Dictionary")
    With ws
       .[S1].CurrentRegion.ClearContents
        lastRow = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = 1 To lastRow
            strValue = ""
            Set rng = .Range(.Cells(i, 1), .Cells(i, 9))
            For Each c In rng
                strValue = strValue & c.Value & " "
            Next c
            monDico(strValue) = ""
        Next i

        i = 1
        For Each d In monDico.keys
            a = Split(d, " ")
            .Cells(i, "S").Resize(, UBound(a)) = a
            i = i + 1
        Next d
        .[S1:AA1].EntireColumn.AutoFit
    End With

    Set monDico = Nothing
    Set rng = Nothing
    Set ws = Nothing

End Sub
Rechercher des sujets similaires à "supprimer doublons respectant casse"