Créer une colonne de valeur unique à partir d'une autre colonne

Bonjour à tous,

ceci est mon premier message, il précède de nombreux autres

voici ma problématique.

Je dispose dans un tableau d'une colonne avec des noms, des cellules vides, des doublons... et je souhaiterais ranger automatiquement toutes les valeurs sans doublons dans un autre tableau en colonne sans utiliser de TCD.

Il n'y aurait alors plus que des données à valeurs uniques sans vide et sans doublons par rapport à la liste d'origine.

Merci d'avance pour votre aide.

VBL

C'est faisable mais il nous faut au moins l'ossature de ton fichier pour que les formules soient adaptées.

Leakim

Bonjour Leakim

Tu trouveras ci-joint un fichier pour illustrer ma difficulté.

Je vais t'en dire un peu plus en prenant mon fichier comme exemple.

Sur l'onglet "Programme" en colonne E se trouve un liste des intervenants externes et en colonne B le nombre de jours de formation qu'ils vont réaliser par module.

Je voudrais que dans l'onglet "Formateur Ext", le nom de tous les formateurs externes viennent se lister en colonne B avec le nombre de jours de formations en colonne D. Le nombre de jours devra être sommé par formateurs externes s'il font plusieurs modules, un critère de plus qui peut être enlevé si cela pose problème.

J'ai tenté avec un TCD masqué, mais la liste ne s'actualise pas forcément automatiquement et puis le tableau n'est pas propre avec des formules "lireslesdonnées" car il y a des vides (qui sont les formateurs internes dans mon exemple que je ne veux pas voir apparaitre...)

Je reste à disposition pour toutes sollicitations pour vous aider à m'aider.

30tableau-aide.xlsx (14.89 Ko)

Bonjour Leakim, VBL

Vois ceci :

Option Explicit
Sub test()
Dim a, b(), i As Long, n As Long, dico As Object
    Set dico = CreateObject("Scripting.Dictionary")
    dico.CompareMode = 1
    a = Sheets("Programme").Range("a3").CurrentRegion.Value
    ReDim b(1 To UBound(a, 1), 1 To 3)
    For i = 2 To UBound(a, 1)
        If Not IsEmpty(a(i, 5)) Then
            If Not dico.exists(a(i, 5)) Then
                n = n + 1
                b(n, 1) = a(i, 5): b(n, 3) = a(i, 2)
                dico(a(i, 5)) = n
            Else
                b(dico(a(i, 5)), 3) = b(dico(a(i, 5)), 3) + a(i, 2)
            End If
        End If
    Next
    With Sheets("Formateur Ext").Range("b2").CurrentRegion
        With .Offset(2)
            .Resize(.Rows.Count - 3, .Columns.Count - 1).ClearContents
            .Resize(n, UBound(b, 2)).Value = b
        End With
    End With
    Set dico = Nothing
End Sub

klin89

Salut klin89,

Tu vois VBL c'est bien ce que je disais, avec un fichier et une question bien posées, tu trouveras quelqu'un pour y répondre

Leakim

Bonjour Leakim, Bonjour Klin89,

Merci de vos réponses Tout est nickel !!!

Rechercher des sujets similaires à "creer colonne valeur unique partir"