Private Sub CommandButton2_Click()
Dim tablo, derlig&, resu$(), i&, x$, j&, n&
On Error Resume Next 'si aucun tiret n'est trouvé
derlig = [I:M].Find("-", , xlValues, xlPart, xlByRows, xlPrevious).Row
tablo = Range("I1:M" & derlig) 'matrice, plus rapide
On Error GoTo 0
ReDim resu(1 To Rows.Count, 1 To 1)
For i = 3 To derlig
x = tablo(i, 1)
If x <> "" Then
For j = 3 To derlig
If tablo(j, 5) <> "" Then
n = n + 1
resu(n, 1) = x & "-" & tablo(j, 5) 'concaténation
End If
Next j
End If
Next i
'---restitution---
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [N3] '1ère cellule de restitition, à adapter éventuellement
If n Then
.Resize(n) = resu
.Resize(n).Borders.Weight = xlThin 'bordures
End If
.Offset(n).Resize(Rows.Count - n - .Row + 1).Delete xlUp 'RAZ en dessous
End With
With UsedRange: End With 'ajuste la barre de défilement verticale
End Sub