Doublons dans tableau

Bonjour à tous,

Je cherche à renvoyer, à partir d'un tableau A1:L1600 (oui, c'est un gros tableau) la liste des valeurs unique, sur une seule colonne d'une autre feuille de mon classeur.

Passer sur une autre feuille est important car je fais une suite de calculs assez lourds, et ça me permet de séquencer les taches pour arriver au bout (sinon, j'obtiens une fin de non recevoir de la part de mon PC...)

Quelqu'un aurait une idée pour m'aider? J'ai essayé tant bien que mal une formule INDEX + EQUIV, mais je ne m'en sort pas du fait que ma source est sur plusieurs colonnes.

Merci par avance!

bonjour,

Les valeurs uniques de quelle colonne ?

Sinon si toutes les colonnes doivent être examinées :

Sub ListeSansDoublons()
   Set mondico = CreateObject("Scripting.Dictionary")
   For Each c In Range("A1:L1600")
     mondico(UCase(c.Value)) = ""
   Next c
   Worksheets("Feuil2").[A1].Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
End Sub

A+

Bonjour,

Tu peux nous joindre ton tableau ?

Si dans ton Tableau tu as

5

5

5

5

2

Tu ne veux envoyer en deuxième feuille une fois 5 et une fois 2 ou une fois deux uniquement ( 5 étant pas une valeur unique ... ) ?

Cordialement

Merci pour ces réponses rapides.

J'ai effectivement besoin d'examiner toutes les colonnes, et de comparer chaque valeur avec toutes les autres valeurs de toutes les colonnes pour ne remonter qu'une seule fois chaque valeur.

Dans ton exemple, VBABEGINNER, je remonterai donc 5 et 2

Galopin01, ta réponse porte sur du code VBA, j'imagine... Je n'ai jamais fait ça, alors je vais potasser un peu le forum pour comprendre comment ça marche et j'essayerai d'appliquer ta solution.

Merci beaucoup en tout cas à tous les 2.

Copier le texte de la macro.

Depuis la feuille source de ton classeur (celle qui comporte la plage "A1:L1600") :

Faire un Clic Droit sur l'onglet de le feuille puis choisir Visualiser le Code

Coller le texte de la macro et...

remplacer Worksheets("Feuil2").... Par

Worksheets("LeVéritableNomDeTaFeuilleCible")....

...sans oublier les guillemets.

et appuyer sur la touche [F5]

C'est tout. ça peut prendre quelques secondes et... C'est terminé !

Tu peux alors supprimer la macro... ou la garder pour une prochaine utilisation !

A+

Désolé Galopin01, j'ai une erreur d'exécution de type '13' : incompatibilité de type.

En lançant le débogage, j'ai constaté que l'erreur se produit sur le pas sortant. Autrement dit, si je comprend bien, le contrôle de doublon se fait, mais ça bloque à l'écriture...?

Bonjour,

Pour supprimer les doublons ... une piste très rapide ...

http://www.pcastuces.com/pratique/astuces/3333.htm

Bonjour James007,

Je connais cette fonction, mais elle ne correspond pas à ma problématique. L'étape qui m'amène ici n'est qu'un rouage d'un mécanisme plus large. Aussi, les données de mon tableau à dédoublonner sont-elles apportées par des formules, que je dois calculer régulièrement pour actualiser le tableau. Il faut qu'ensuite j'obtienne une liste de données uniques, sur une seule colonne, sur laquelle viendront travailler d'autres formules.

En utilisant la fonction de dédoublonnage, au mieux, j'arrive en enregistrant manuellement une macro à obtenir 12 colonnes de données éparses.

Pour ne rien simplifier, j'ai besoin que la liste de données que j'obtiens soit classé dans l'ordre d'étude du tableau d'origine, et pas trié de façon alphabétique, et que les cases vides soient écartées, choses que la fonction de dédoublonnage ne permet pas à ma connaissance.

l'erreur se produit sur le pas sortant

kézako ? Qu'elle est la ligne en surbrillance ?

Tu as bien mis la macro dans le module de la feuille Source.

Après il faut voir exactement le type des données. parce que tu parles de formules alors là... moi j'ai pas de boule de cristal !

Un petit classeur démo avec quelques lignes pertinentes seraient les bienvenues comme d'habitude...

A+

Galopin01,

Quand je lance le déboguer, il met en surbrillance le première ligne. Ensuite, je fais maj + F8 et il met en surbrillance la ligne suivante, etc jusqu'à faire des allers et retours entre les lignes 4 et 5.

Je fais alors ctrl + maj + F8 pour aller directement à la fin l'exécution (pas sortant), et là j'obtiens l'erreur '13'.

Les données de mon tableau sont apportées par une formule simple de concatener du style

SI(ESTVIDE(A2);"";CONCATENER(A2;" - ";A1;" - ";A3)) les cases A1, A2 et A3 provenant d'une autre feuille de ce même classeur.

Quoiqu'il en soit, j'ai essayé d'appliquer ton code sur une feuille sur laquelle j'ai fais une copie de mes valeurs (sans les formules, donc, valeurs brutes), sans succès.

Je vais essayer de faire un fichier type rapidement.

Bonjour à tous,

Les filtres élaborés sont aussi très efficaces pour supprimer des doublons ... Tu as essayé ?

Cordialement,

Tu dois être en mode "Option Explicit" :

Modifie la macro comme suit...

Code: Tout sélectionner

Sub ListeSansDoublons()
Dim c, Mondico
   Set mondico = CreateObject("Scripting.Dictionary")
   For Each c In Range("A1:L1600")
     mondico(UCase(c.Value)) = ""
   Next c
   Worksheets("Feuil2").[A1].Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
End Sub

En faisant bien attention de mettre la macro dans le module de ta feuille source et en modifiant

Worksheets("Feuil2")... avec le vrai nom de ta feuille cible.

A+

Bonsoir à tous,

Peut-être comme ceci :

Option Explicit

Sub elements()
Dim a, e, x, n As Long
    With Sheets(1).Range("a1").CurrentRegion
        a = .Value
        With CreateObject("Scripting.Dictionary")
            .CompareMode = 1
            For Each e In a
                If e <> "" Then .Item(e) = .Item(e) + 1
            Next
            x = Application.Transpose(.keys)
            n = .Count
        End With
    End With
    With Sheets(2).Range("a1").Resize(n, 1)
        .CurrentRegion.ClearContents
        .Value = x
    End With
End Sub

klin89

Rechercher des sujets similaires à "doublons tableau"