Pb : comment surligner des noms "communs" ds 1 tab

Bonjour à tous,

A partir d'un tableau excel contenant entre autres les 2 colonnes suivantes :

colonne 1 : Identifiant colonne 2 : nom des gènes

J'aimerais qu'excel m'affiche (peu importe la manière d'affichage...surligner, dans une autre feuille, etc) les gènes qui sont communs entre les différents patients. En effet, au lieu d'avoir à regarder les patients 1 à 1, existe t il une fonction ou une application dédiée à résoudre ce problème ?

Je pense qu'en théorie c'est possible...donc merci à tous ceux qui pourront m'aider à ce sujet.

PS: Bien entendu si je n'ai pas été assez clair sur mon problème, je peux détailler davantage.

Samuel

Bonjour et bienvenue

Merci de joindre ton fichier (un extrait s'il est trop important)

Amicalement

Nad

Voici l'adresse à laquelle tu pourras télécharger le fichier (version excel 2007)

https://www.excel-pratique.com/~files/doc/LMMJ_LOH_et_genes_2.xlsx

Le tableau contient des filtres pour chaque colonne (histoire de gagner un peu de temps).

Il y a une colonne "sample ID" qui contient le nom de l'échantillon et la colonne "overlapping feature" qui contient les gènes d'intérêt. Le but est de pouvoir visualiser les gènes qui apparaissent dans des patients différents, ou autrement dit qui soient communs.

Merci de ton aide,

Samuel

Bonsoir,

ton souci, pas trop simple

et même si :

  • Je pense qu'en théorie c'est possible...

regarde le fichier joint

ton sujet m'a intéressé, je suis passé de 16 secondes, à 14, puis 8 secondes, avec ton fichier joint.....

fichier :

https://www.excel-pratique.com/~files/doc/Copie_de_LMMJ_LOH_et_genes_2.zip

Ah, clique sur le rectangle rouge, dans la cellule C1

Si erreur, n'hésite pas à revenir

Edit :

le code :

Sub les_genes()
Dim DerCel As Range, NumCol As Integer, DerLig As Long
Dim Genes As Object, Cel As Range, Plg As Range, Itm
Dim Cle
With Application
    .DisplayAlerts = False
    .ScreenUpdating = False
End With
On Error Resume Next
ActiveSheet.ListObjects("Tableau2").Unlist
On Error GoTo 0
Columns("F:F").Copy Range("G1")
DerLig = [A65000].End(xlUp).Row
Range("G2:G" & DerLig).TextToColumns Destination:=Range("G2"), _
    DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Other:=True, OtherChar:="}", _
    FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
Set DerCel = Cells.Find("*", , , , xlByColumns, xlPrevious)(, 2)
NumCol = DerCel.Column
Set Plg = Range(Cells(2, 7), Cells(DerLig, NumCol))
With Plg
    .Replace What:="{", Replacement:="", LookAt:=xlPart
End With
Set Genes = CreateObject("Scripting.Dictionary")
    For Each Cel In Plg.SpecialCells(xlCellTypeConstants, 23)
        If Not Genes.Exists(Cel.Value) Then Genes.Add Cel.Value, Cel.Value
    Next Cel
With Sheets("Feuil2")
    .Cells.ClearContents
    .[A1].Resize(Genes.Count, 1).Value = Application.Transpose(Genes.items)
    For Each Cel In .Range("A1:A" & .[A65000].End(xlUp).Row)
        If Cel.Value <> "None" Then
        Set c = Range("F2:F" & DerLig).Find(Cel.Value, LookIn:=xlValues, LookAt:=xlPart)
            If Not c Is Nothing Then
                Firstaddress = c.Address
                i = 2
                Do
                    If Application.CountIf(.Range(.Cells(Cel.Row, 2), .Cells(Cel.Row, i)), Cells(c.Row, 4).Value) = 0 Then
                        .Cells(Cel.Row, i).Value = Cells(c.Row, 4).Value
                        i = i + 1
                    End If
                    On Error Resume Next
                    Set c = Range("F2:F" & DerLig).FindNext(c)
                    On Error GoTo 0
                Loop While Not c Is Nothing And c.Address <> Firstaddress
            End If
        End If
    Next Cel
    .Range("C1:C" & .[A65000].End(xlUp).Row).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    .Cells.EntireColumn.AutoFit
End With
Range(Columns("G:G"), Columns("G:G").End(xlToRight)).Delete
End Sub

Bonsoir

Juste pour dire que la réponse se trouve en feuille 2 une fois que tu as cliqué sur le rectangle rouge. C'est bête, mais je me suis posé la question sur ce qu'il s'était passé !

Amicalement

Nad

Bonjour et merci bcp pour ton aide précieuse.

Justement j'allais venir te poser la question : ou sont les résultats ? lol donc merci pour ta réponse.

Autre chose, l'exemple que je t'ai donné est un exemple parmi d'autres d'où ma question, que dois je faire faire pour obtenir ce résultat à partir d'un autre tableau sans avoir à venir te rechercher sur le forum ? quel est la procédure pour installer ce "macro" ?

Encore merci

Samuel

Re,

J'ai essayé de faire "betement" un copier/coller d'un autre tableau dans le fichier que tu m'as renvoyé...sauf que ça ne marche pas.

Je pense pas qu'il suffit d'insérer le code de la macro dans un nouveau fichier pour que cela fonctionne. Il y a des paramètres dans le code qui doivent surement être retouchés...notamment redéfinir les colonnes par exemple.

Voilà ou j'en suis actuellement. Si ce nouveau problème n'a pas été clairement expliqué, n'hésites pas à me poser les questions!

Merci,

Samuel

up

Bonsoir,

le principe :

Comme tu peux avoir plusieurs gênes, et que tu les colles dans une seule cellule, de la colonne "F", dans ton exemple...

Je copie cette colonne dans la colonne G, pour ne pas toucher à ton tableau....

Columns("F:F").Copy Range("G1")

Je convertis cette colonne, pour les séparer, et ensuite je supprime les accolades ouvrantes

DerLig = [A65000].End(xlUp).Row
Range("G2:G" & DerLig).TextToColumns Destination:=Range("G2"), _
    DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Other:=True, OtherChar:="}", _
    FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
Set DerCel = Cells.Find("*", , , , xlByColumns, xlPrevious)(, 2)
NumCol = DerCel.Column
Set Plg = Range(Cells(2, 7), Cells(DerLig, NumCol))
With Plg
    .Replace What:="{", Replacement:="", LookAt:=xlPart
End With

Ensuite, je mets tous les gênes dans un objet (tableau VBA), puis fait le traitement...

Reste à voir la structure finale de ton tableau.....

Si tu mets un quote ( ' ) devant la ligne :

Range(Columns("G:G"), Columns("G:G").End(xlToRight)).Delete[quote]

(la ligne passe en vert), tu verras dans ton onglet initial tous tes gênes, de la colonne G à la colonne FV (dernière cellule remplie : FV246)

Reviens si tu as toujours des problèmes (PS, pas là ce W-E....)
[/quote]
Rechercher des sujets similaires à "comment surligner noms communs tab"