Concatainer du texte avec condition sur différentes lignes

Bonjour le Forum !

je suis nouveau ...j'ai déjà par mal chercher sur le web des info pour ce que je veux faire, j'ai rine trouvé alors je viens ici !

Alors voila la question; j'ai des données organisées en 3 colonnes, les titres sont en A1, A2, A3 (Numero, Analyse, Diluant)

la colonne 1 reprend des numéro (par exemple 15241001,...)

la colonne 2 reprend des analyses (par exemple staph, ecoli, salm,...)

la colonne 3 reprend des diluants (EPT, F1/2, SPE)

Ce tableau reprend simplement des listes d'échantillons avec l'analyse et leur diluant

par exemple

152410001, staph, EPT

152410001, Ecoli, EPT

152410001, Salm, EPT

152410001, Lmono, F/12

152410001, VTEC, SPE

152410002, Staph, EPT

152410002, Ecoli, EPT

Mon objectif est d'éliminer les doublons pour avoir:

152410001, EPT

152410001, F1/2

152410001, SPE

152410002, EPT

=> cela ne me pose pas de problème, c'est facile à faire avec 'suppression des doublons' (en cochant colone 1 et 3)

Le truc que je n'arrive pas a faire , c'est l'étape suivante

152410001, EPT, staph Ecoli Salm

152410001, F1/2, Lmono

152410002, EPT, Salm Ecoli

Donc il s'agit en fait de regrouper (concatainer) au final dans les cellunes de la colonne 3, les analyses qui ont le même diluant

Comment puis je faire cela?

merci d'avance

Bonjour

ci joint une proposition avec des formules qui

  • extraient le texte de ta cellule
  • recomposent les parties
  • repèrent les vrais doublons

A tester

Cordialement

FINDRH

Merci je teste ca ce soir

Comment fait on pour joindre un fichier sur le forum ?

Bonjour FINDRH, franckdef, le forum

Tes données en Feuil1 sur 3 colonnes avec une ligne d'en-têtes.

On commence en A1.

Option Explicit

Sub test()
Dim a, b(), i As Long, n As Long, txt As String
    a = Sheets("Feuil2").Range("a1").CurrentRegion.Value
    ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2))
    a(1, 2) = "Diluant": a(1, 3) = "Analyse"
    With CreateObject("Scripting.Dictionary")
        .CompareMode = 1
        For i = 2 To UBound(a, 1)
            txt = Join$(Array(a(i, 1), a(i, 3)), Chr(2))
            If Not .exists(txt) Then
                n = n + 1
                b(n, 1) = a(i, 1)
                b(n, 2) = a(i, 3)
                b(n, 3) = a(i, 2)
                .Item(txt) = n
            Else
                b(.Item(txt), 3) = b(.Item(txt), 3) & _
                                   ", " & a(i, 2)
            End If
        Next
    End With
    Application.ScreenUpdating = False
    On Error Resume Next
    Application.DisplayAlerts = False
    Sheets("Resultat").Delete
    Sheets.Add().Name = "Resultat"
    On Error GoTo 0
    With Sheets("Resultat").Cells(1)
        .Resize(, UBound(a, 2)).Value = a
        With .Offset(1).Resize(n, UBound(b, 2))
            .Value = b
        End With
        With .CurrentRegion
            .Font.Name = "calibri"
            .Font.Size = 10
            .VerticalAlignment = xlCenter
            .BorderAround Weight:=xlThin
            .Borders(xlInsideVertical).Weight = xlThin
            With .Rows(1)
                .Font.Bold = True
                .BorderAround Weight:=xlThin
                .Interior.ColorIndex = 38
            End With
            .Columns.AutoFit
        End With
    End With
    Application.ScreenUpdating = True
End Sub

klin89

9franckdef.zip (17.06 Ko)

Oula. Merci aussi pour cette reponse.....sans doute efficace mais moi s compréhensible pour moi. Ne teste aussi ce soir.

.....enfin deja ne ne sais pas ce que je sois faire. Hn copier coler de ton texte dans....quoi en fait ?

Encore merci

Bonsoir

pour ajouter un fichier inférieur à 300ko, sous la ligne "Envoyer" tu as

Options et a coté Ajouter des fichiers joints.

Clic sur Ajouter..., puis sur choisissez un fichier, l'explorateur s'ouvre et tu sélectionne le fichier a ajouter, dont le nom va apparaitre à la place de Aucun fichier choisi

Clic sur Ajouter le fichier , son nom apparaît sous le message , c'est prêt à envoyer

Pour tester ma proposition tu mets tes données en colonne A et tu recopies ma formule sur toute les lignes à partir de la colonne B

A ta dispo

Cordialement

FINDRH

Ps Franckdef te demandera surement d'envoyer une partie de fichier plus longue pour valider sa macro qui fait tout tout seul !

Bonjour, encore un grand merci pour vos idées!

j'ai testé l'option de FINDRH...c'est celle que je comprend le mieux.

Cette option n'arrive pas encore au résultat que je souhaite, en effet dans le ficher de FINDRH je me retrouve au final avec 1 ligne par échantillon, alors qu'en fait je dois me retrouver avec une ligne par échantillon et par diluant utilisé.

j'ai mis un fichier excell avec des exemples et ce vers quoi je veux arriver.

Bonne journée à tous

13essai-xls.xlsx (9.00 Ko)

Bonjour

ci, joint une version corrigée Feuil V2

Une fois les formules posées et les données triées, il suffit de sélectionner les colonnes D,E,F , les copier puis faire un collage spécial valeur pour en récupérer le résultat

Cordialement

FINDRH

Merci FINDRH pour tes idées.

Ta version 2 n'arrive pas encore au résultat que je veux. mais en me basant sur ta logique je suis arrivé à un résultat correcte. cfr annexe

Si on fait in tri sur la colonne F alors j'ai mon résultat final.

9essai-xls.xlsx (10.65 Ko)

Klink 89

merci pour ta macro, elle tourne bien aussi et j'arrive au bon résultat.

Après dans la pratiiue j'ai tendance a utiliser ce que je comprend...histoire d'etre autonome dans ce que je fais dans excell et eviter de redemander dans un forum de refaire une macro si j'ajoute une colone.

Donc je vais garder la macro....et je vais essayer aussi de la comprendre....si quelqu'un à le temps de me l'expliquer c'est super !

encore merci

Bonjour

effectivement il faut trier comme je l'avais indiqué... dans mes post

La solution de klink 89 est automatisée..... dans toutes ses phases d'ou son avantage

Cordialement

FINDRH

Rechercher des sujets similaires à "concatainer texte condition differentes lignes"