Bonjour,
Je tente désespérément de trouver une solution à mon problème.
J'utilise une formule matricielle pour remplir un tableau. La formule a pour objectif de filtrer et classer des informations issues d'une base de données.
{=SI(LIGNES($1:1)<=NB.SI(Nom_site;F$1);INDEX(Nom_salle;PETITE.VALEUR(SI(ESTNUM(CHERCHE(F$1;Nom_site));LIGNE(INDIRECT("1:"&LIGNES(Nom_salle))));LIGNES($1:1)));"")}
J'ai besoin pour l'utilisation de listes déroulantes en cascades d'avoir des valeurs dans ces cellules plutôt que les formules d'où le fait de traduire cette formule en code.
Jusqu'à présent, d'après quelques recherches sur les forums (celui-ci en fait partie), je n'ai que ça mais ça ne fonctionne pas.
Private Sub Worksheet_Activate()
'Actualise les formules de la Feuil3 afin de prendre en compte les ajouts ou suppression de lignes dans le tableau de la feuille 'Liste'
'Dim i As Long
'ActiveWorkbook.Sheets("Tables").[A2:C400].Clear
'ActiveWorkbook.Sheets("Tables").[E2:BA2].Clear
'For i = 2 To 400
'ActiveWorkbook.Sheets("Tables").Cells(i, 1).FormulaR1C1 = ActiveWorkbook.Sheets("Liste").Cells(i, 1).Value & " - " & ActiveWorkbook.Sheets("Liste").Cells(i, 2).Value
'Next i
'ActiveWorkbook.Sheets("Liste").Range("A2:A400").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Worksheets("Tables").Range("C2"), Unique:=True
'Range("C2:C400").Copy
'Range("E2").PasteSpecial Paste:=xlPasteAll, Transpose:=True
Dim cell As Range
'Dim j As Integer
'Dim k As Integer
For Each cell In Range("F2:BA71")
'For j = 2 To 71
'For k = 6 To 80
Dim x
x = Evaluate([if(rowS($1:1)<=countif(Nom_site,F$1),INDEX(Nom_salle,small(if(isnumberM(search(F$1,Nom_site)),row(INDIRECT("1,"&rowS(Nom_salle)))),rowS($1:1))),"")])
cell = x
Next cell
'Set cell = cell.Offset(1, 0)
'Next j
'Next k
End Sub
Je teste le bout de code final sans résultat. Quelqu'un aurait-il une solution à mon problème ?
Merci