Re, bonjour l'Acide, bonjour le forum,
Avec un exemple aussi m***ique je n'ai pas vraiment le même résultat que notre ami corrosif. D'habitude je commente tous mes codes mais pas là (trop honte vu comment il a plié ça en deux coups de cuiller à pot)
Le code (m***ique lui aussi) :
Option Explicit
Sub Macro1()
Dim OA As Worksheet
Dim OB As Worksheet
Dim TV As Variant
Dim D As Object
Dim I As Integer
Dim J As Integer
Dim K As Integer
Dim L As Integer
Dim NP As Integer
Dim TMP As Variant
Dim TL() As Variant
Dim DEST As Range
Set OA = Worksheets("Actes")
Set OB = Worksheets("Reporting")
OB.Range("B4").CurrentRegion.ClearContents
TV = OA.Range("A2").CurrentRegion
Set D = CreateObject("Scripting.Dictionary")
For I = 2 To UBound(TV, 1)
NP = UBound(Split(TV(I, 1), " ; "))
Select Case NP
Case 0
D(TV(I, 1)) = ""
Case Else
For J = 0 To NP
D(Split(TV(I, 1), " ; ")(J)) = ""
Next J
End Select
Next I
TMP = D.Keys
For J = 0 To UBound(TMP)
Debug.Print TMP(J)
Erase TL: K = 0
For I = 2 To UBound(TV, 1)
NP = UBound(Split(TV(I, 1), " ; "))
Select Case NP
Case 0
If TV(I, 1) = TMP(J) Then
K = K + 1
ReDim Preserve TL(1 To 2, 1 To K)
TL(1, 1) = TMP(J)
TL(2, K) = "n° acte " & TV(I, 3)
End If
Case Else
For L = 0 To NP
Debug.Print Split(TV(I, 1), " ; ")(L)
If Split(TV(I, 1), " ; ")(L) = TMP(J) Then
K = K + 1
ReDim Preserve TL(1 To 2, 1 To K)
TL(1, 1) = TMP(J)
TL(2, K) = "n° acte " & TV(I, 3)
End If
Next L
End Select
Next I
If OB.Range("B4").Value = "" Then Set DEST = OB.Range("B4") Else Set DEST = OB.Cells(Application.Rows.Count, "C").End(xlUp).Offset(1, -1)
DEST.Resize(K, 2).Value = Application.Transpose(TL)
Next J
End Sub