Le code du post #14 effectivement fonctionne uniquement pour le cas présenté;
c'est le souci avec une présentation initiale incomplète et pas assez claire, on se retrouve limité par un contexte fermé !
Ceci est ma dernière intervention, si le besoin n'est toujours pas atteint ou en cas d'évolution,
tout a déjà été écrit, tu sais donc ce qu'il te restera à accomplir …
Toujours via le B-A-BA d'Excel, à savoir une encore plus simple formule de calculs
et la séquence de touches CTRL + Flèche vers le bas, la propriété End(xlDown) en VBA :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| Sub Demo3()
Const D = ", ", F = "TRANSPOSE(IF(#>"""",#))"
Dim Rg As Range, Rf As Range, V, W
V = Filter(Evaluate(Replace(F, "#", ActiveSheet.UsedRange.Columns(1).Address)), False, False)
If UBound(V) < 0 Then [D4].ClearContents: Exit Sub
Set Rg = IIf([B1].Value > "", [B1], [B1].End(xlDown))
Do Until Rg.Value = ""
Set Rf = IIf(Rg(2).Value > "", Rg.End(xlDown), Rg)
W = Application.Match(Rg(1, 0).Value, V, 0)
If IsNumeric(W) Then
If Rf Is Rg Then V(W - 1) = V(W - 1) & " (" & Rg.Value & ")" _
Else V(W - 1) = V(W - 1) & " (" & Join(Application.Transpose(Range(Rg, Rf).Value), D) & ")"
End If
Set Rg = Rf.End(xlDown)
Loop
Set Rg = Nothing: Set Rf = Nothing
[D4].Value = Join(V, D)
End Sub |
Évidemment ceci a des chances de ne pas rentrer dans le cadre des cours d'un étudiant car
souvent c'est de l'algorithmie classique qui est attendue (et non pas du spécifique Excel) et,
dans un tel cas, mon code pourtant fonctionnel rapportera un joli zéro (déjà vu !) surtout
lorsque l'étudiant n'aura même pas pris la peine de comprendre et donc de pouvoir justifier ce code …
___________________________________________________________________________________________________________
Merci de cliquer sur
en bas à droite de chaque message ayant aidé puis sur
pour clore cette discussion …
___________________________________________________________________________________________________________Heureux l'étudiant qui, comme la rivière, suit son cours sans quitter son lit …
Partager