bonjour,
1436 n'a pas de tonnage en feuil2 et certains rubriques qui ont tonnage="" ne sont pas considérés.
Sub yoga()
Dim aA, aB, aC, aD, SCA, aTon(1 To 2)
Set SCA = CreateObject("system.collections.arraylist")
With Sheets("Feuil2").UsedRange
aA = .Columns("A").Value2 'premiere colonne Feuil2
aB = .Resize(, 6).Value2 'les 6 colonnes de Feuil2
End With
With Sheets("Feuil1")
aC = .Range("A4:A" & .Range("A" & Rows.Count).End(xlUp).Row).Value2 'colonne A de feuil1
ReDim aD(1 To UBound(aC), 1 To 4) 'preparer matrice
For i = 1 To UBound(aC)
If Len(aC(i, 1)) > 0 Then
sp = Split(aC(i, 1), ";") 'divisé sur ";"
SCA.Clear 'RAZ
aTon(1) = "NC": aTon(2) = 1000000000# 'tonnage exagéré, rubrique NC
For j = 0 To UBound(sp) 'boucle les éléments
r = Application.Match(--sp(j), aA, 0) 'rechercher comme numeriqie
If Not IsNumeric(r) Then r = Application.Match(sp(j), aA, 0) 'rchercher comme string
If IsNumeric(r) Then 'trouvé
If Len(aB(r, 3)) > 0 Then 'tonnage connu
If aB(r, 3) < aTon(2) Then aTon(1) = sp(j): aTon(2) = aB(r, 3) 'tonnage inférieur au tonnage minimal jusqu'à maintenant
End If
If StrComp(aB(r, 4), "x") = 0 Then aD(i, 2) = IIf(Len(aD(i, 2)) = 0, "", ";") & sp(j) 'ajouter si marqué "X"
If StrComp(aB(r, 5), "x") = 0 Then aD(i, 3) = IIf(Len(aD(i, 3)) = 0, "", ";") & sp(j)
If StrComp(aB(r, 6), "x") = 0 Then aD(i, 4) = IIf(Len(aD(i, 4)) = 0, "", ";") & sp(j)
End If
Next
aD(i, 1) = aTon(1)
For j = 1 To UBound(aD, 2)
If aD(i, j) = "" Then aD(i, j) = "NC"
Next
End If
Next
End With
Sheets("feuil1").Range("B4").Resize(UBound(aD), UBound(aD, 2)).Value = aD
End Sub