Rechercher un nom dans une liste dans les cellules et plus

Bonjour.

Je sèche sur une ou plusieurs formules permettant d'afficher une donnée dans une colonne face à un nom. Je précise :

- une feuille "BDD" rassemble des données provenant d'un formulaire rempli chaque semaine. Celui-ci renseigne des participants à une thématique à une certaine date.

PARTICIPANTS //THEMATIQUE //Date

Paul, Jacques, Francis //TH1 //01/01/2000

Eric, Mathieu, Victor //TH2 //02/01/2000

Paul, Mathieu, Eric //TH3 //03/01/2000

Hector, Francis, Mathieu //TH4 //04/01/2000

- une feuille "SUIVI" permet d'afficher les thématiques suivies par participant.

-> je souhaite sur une feuille de suivi, qu'un tableau se remplisse automatiquement en fonction des infos de BDD.

-> les PARTICIPANTS sont listés dans les lignes de la colonne A et les THEMATIQUES dans la ligne 1

-> exemple : je souhaite que si Paul a suivi la thématique TH3, que dans le SUIVI s'affiche dans la colonne où apparaît TH3 et sur la ligne de Paul, la date correspondante.

Document de travail accessible via le lien suivant :

https://drive.google.com/open?id=1tDV6tywTuZ6a4yKjqESDRdM15y7CXMgToc6kAir7mLQ

Je remercie d'avance ceux qui pourront m'aider.

Cdlt

Salut Chirod,

quelque chose comme ça ?

Le code est dans le module VBA de la feuille 'BDD'.

Un double-clic démarre la macro, résultats en 'SUIVI'.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim tSplit, iRow%, iRowT%, iCol%
'
Cancel = True
'
iRow = Range("A" & Rows.Count).End(xlUp).Row
With Worksheets("SUIVI")
    .Cells.Delete
    iRowT = 2
    .Range("B1").Resize(1, iRow - 1).Value = WorksheetFunction.Transpose(Range("A2:A" & iRow))
    For x = 2 To iRow
        .Range("A" & iRowT).Resize(UBound(Split(Range("B" & x), ", ")) + 1, 1).Value = WorksheetFunction.Transpose(Split(Range("B" & x), ", "))
        iRowT = .Range("A" & Rows.Count).End(xlUp).Row + 1
    Next
    .Range("A:A").RemoveDuplicates Columns:=1
    iRowT = .Range("A" & Rows.Count).End(xlUp).Row
    iCol = .Cells(1, Columns.Count).End(xlToLeft).Column
    .Range("A2:A" & iRowT).Sort key1:=.Range("A2"), order1:=xlAscending, Orientation:=xlByRows
    .Range("A1:" & Chr(64 + iCol) & iRowT).Borders.LineStyle = xlContinuous
    .Range("A1:" & Chr(64 + iCol) & iRowT).BorderAround Weight:=xlMedium
    .Range("B2:" & Chr(64 + iCol) & iRowT).Interior.ColorIndex = 45
    .Range("B2:" & Chr(64 + iCol) & iRowT).NumberFormat = "dd/mm/yyyy"
    For x = 2 To iRow
        tSplit = Split(Range("B" & x), ", ")
        For y = 0 To UBound(tSplit)
            .Cells(.Columns(1).Find(what:=tSplit(y), lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlNext).Row, _
                    .Rows(1).Find(what:=Cells(x, 1), lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlNext).Column) = Cells(x, 3)
        Next
    Next
    .Columns.AutoFit
    .Activate
End With
'
Application.ScreenUpdating = True
'
End Sub

A+

7chirod.xlsm (24.14 Ko)
Rechercher des sujets similaires à "rechercher nom liste"