Identifier les cellules uniques et les concatener

Bonjour,

Je dispose d'une colonne dont la longueur est variable, et je souhaiterai identifier les cellules uniques et les concaténer sur une cellule cible.

BonjourBonjour
FranckBonjour
FranckBonjour
Franck

A titre d'exemple le traitement sur la première colonne me renverrait Bonjour Franck. le traitement sur la deuxième colonne renverrait également le même résultat.

Je ne maitrise pas VBA, mais en algorithme cela donnerait je balaie la colonne jusqu'à trouver la première ligne vide. avec une boucle for ou tant que je n'ai pas atteint la dernière ligne, je comparerai la valeur lue avec les cellules de ma colonne tampon, et s'il n'y ai pas je l'ajoute à la fin de la colonne tampon.
J'essaie de commencer en VBA.

derligne = sheets("feuil").cells(rows.count).end(xlup).row

 for i =1 to derligne

 if (je sais pas identifier la colonne tampon) =Range("A&i)

 (ajouter une cellule à la colonne tampon)

 next

 Range (cellule cible)= concatenate (colonne tampon avec des espaces)D'avance merci.

Salut à tester et adapater:

Public Sub test()
Dim resultat As String
Dim colonne As Long
colonne = 1 'a faire varier selon la colonne traité
Dim n As Long
Dim memoire As String
n = 1
memoire = Cells(n, colonne)
resultat = memoire
While Cells(n, colonne) <> ""
    If Cells(n, colonne) <> memoire Then
        resultat = resultat & " " & Cells(n, colonne)
        memoire = Cells(n, colonne)
    End If
n = n + 1
Wend
MsgBox resultat
End Sub

A+

Salut Gabin,

Merci pour ta réponse.

Je ne l'ai pas testé, mais en lisant le code j'ai li'impression, qu'il va concatener toutes les cellules de la colonnes, alors que moi je souhaiterai concaténer les cellules uniques.

sur tableau test que j'ai donné en exemple , ton code me sortirait "Bonjour Bonjour Franck".. non?

J'ai testé chez moi cela fonctionne.

If Cells(n, colonne) <> memoire Then

permet de tester si il y a eu changement de valeurs dans les lignes qui s'enchaines, donc cela evite la répétition.

Je l'ai testé et Si çà marche. Merci beaucoup.

J'ai encore un souci ma colonne sur laquelle je fais le test contient des cellules filtrées.

Comment lui dire de ne balayer que les cellules visibles de la colonne?

Mmmmmmmmmmmh

Ca ne fonctionne pas avec les cellules filtrées ? il devrait passer outre je crois ?

Un petit fichier exemple ? sinon je cherche de mon coté je n'ai pas encore la solution

Je pense que cela va complexifier les choses mais allons y. Voici le fichier.

Je voudrais mettre sur la cellule D19 de l'onglet MOSS, le résultat du traitement dont on parle qui serait appliqué sur les cellules visibles à partir de la ligne K6 de l'onglet Items.

Le code serait ajouté à la fin de la macro, après qu'elle ait fait son travail de tri sur la colonne K.

J'ai ajouté un bouton dans l'onglet MOSS avec ce code ca marche pour moi:

Public Sub test()
Dim resultat As String
Dim colonne As Long
colonne = 11 'a faire varier selon la colonne traité
Dim n As Long
Dim memoire As String
n = 6
While Sheets("ITEMS").Rows(n).Hidden = True
n = n + 1
Wend
memoire = Sheets("ITEMS").Cells(n, colonne)
resultat = memoire
While Sheets("ITEMS").Cells(n, colonne) <> ""
    If Sheets("ITEMS").Cells(n, colonne) <> memoire And Sheets("ITEMS").Rows(n).Hidden = False Then
        resultat = resultat & " " & Sheets("ITEMS").Cells(n, colonne)
        memoire = Sheets("ITEMS").Cells(n, colonne)
    End If
n = n + 1
Wend
Cells(19, 4) = resultat
End Sub

Attention que l'onglet actif soit bien MOSS quand tu éxécute le code. En fait avec rows(n).hidden = true/false on arrive a detecter les lignes filtrés sou non :)

Merci beaucoup Gabin.

C'est bizarre mais cela ne marche pas pour moi.

Ma cellule D19 reste vide.

J'ai pris le même fichier, ajouté le code et crée un bouton sur l'onglet MOSS. sur la colonne K j'ai testé de mettre différents type de valeurs, mais cela ne marche pas.

Est ce que ce serait possible de faire appel à ce code et d'ajouter des worksheets aux cellules et d'y faire appel à la fin de la macro déjà effectuée?

Merci encore

Rechercher des sujets similaires à "identifier uniques concatener"