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 !
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 Submerci, ç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
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 Submerci beaucoup !!!!!!! CA marche
ca me sauve !