Récupérer données d'un tableau complexe

Bonjour,

je suis novice en VBA et j'ai un travail à rendre dans le cadre de mon stage.

Je cale complétement !

A partir d'un tableau qui présente pour chaque date les activités d'une personne, je dois retrouver les personnes qui font une activité particulière à une date que je fixe. Le problème est qu'il y a plusieurs lignes pour un même jour et plusieurs colonnes pour une personne, etc...et que je ne peux pas modifier la présentation du tableau !!!

Dans mon exemple , je voudrais récupérer toutes les personnes ( ligne 4) qui pour une date( colonne c) que je pourrais choisir font l'activité "EV24h" . je rentre une date dans un formulaire et il m'affiche la liste des personnes avec le critère "EV24h" à cette date.

merci d'avance pour votre aide pour ce travail que je pense hypercomplexe et hors de ma portée !

22tableau-thibault.zip (142.45 Ko)

bonjour,

une solution via une macro

Sub test()
    d = InputBox("date jj/mm/aa")
    d = DateValue(d)
    a = UCase(InputBox("activité"))
    dl = Cells(Rows.Count, 3).End(xlUp).Row
    dc = Cells(4, Columns.Count).End(xlToLeft).Column
    For i = 8 To dl Step 4
        If Cells(i, 3) = d Then
            l = i - 2
            n = ""
            For j = 10 To dc
                If UCase(Cells(l, j)) = a Then n = n & Cells(4, j) & vbCrLf
            Next j
            If n = "" Then n = " activité " & a & " non trouvée à la date " & d
            MsgBox n
            pastrouvé = False
            Exit For
        End If
    Next i
    If pastrouvé Then
        MsgBox "date non trouvée"
    End If
End Sub

merci, ça marche super..

Par contre mon boss a modifié sa demande !!!!

Au lieu de voir apparaitre les noms sur la userform , il faudrait que les noms apparaissent sur une feuille de calcul.

De plus il faudrait faire la même démarche pour le jour sélectionné et les 6 jours qui suivent..

je m'explique, on choisit le jour, puis l'événement. le résultat apparait en "feuille1" avec :

en A2 : le jour sélectionné, en A3 : J+1..... jusque A8 : J+6

Sur chaque ligne apparait, les noms répondant à l'événement sélectionné pour ce jour.

J'ai essayé de créer une boucle mais rien ne fonctionne.. !

un grand merci d'avance pour votre aide

20tableau-thibault.zip (149.31 Ko)

Bonjour,

à tester ...

Sub test()
    Set wsp = Sheets("Plan")
    Set wsr = Sheets("Feuil1")
    wsr.Rows("2:6").ClearContents
    d = InputBox("date jj/mm/aa")
    d = DateValue(d)
    a = UCase(InputBox("activité"))
    dl = wsp.Cells(Rows.Count, 3).End(xlUp).Row
    dc = wsp.Cells(4, Columns.Count).End(xlToLeft).Column
    k = 1
    For i = 8 To dl Step 4
        If wsp.Cells(i, 3) = d Then
            trouvé = True
            l = i - 2
            k = k + 1
            wsp.Cells(i, 3).Copy
            wsr.Cells(k, 1).PasteSpecial Paste:=xlPasteValues
            wsr.Cells(k, 1).PasteSpecial Paste:=xlPasteFormats
            k1 = 1
            For j = 10 To dc
                If UCase(wsp.Cells(l, j)) = a Then
                    k1 = k1 + 1
                    If wsp.Cells(3, j) = "" Then
                        wsr.Cells(k, k1) = wsp.Cells(3, j - 1)
                    Else
                        wsr.Cells(k, k1) = wsp.Cells(3, j)
                    End If
                End If
            Next j
            ctr = ctr + 1
            d = d + 1
            If ctr = 6 Then Exit For
        End If
    Next i
    If trouvé Then Else MsgBox "Date non trouvée"
End Sub

merci beaucoup !!!!!!! CA marche

ca me sauve !

Rechercher des sujets similaires à "recuperer donnees tableau complexe"