Bonjour à tous ,
Pour le fun, une généralisation à n colonnes. On examine les lignes à partir de la ligne 1.
La fonction s'appelle : Function LigneSansVide(X1, X2, X3, ..., Xn) avec Xi qui est soit une cellule soit une plage de cellules.
Que Xi soit une plage ou une cellule, on va considérer toutes les colonnes de la feuille qui correspondent aux colonnes de Xi.
Voir les exemples de formules en colonne J dans le classeur. Bien sûr, la fonction peut aussi s'utiliser directement dans du code VBA.
Le code de la fonction :
Function LigneSansVide(ParamArray xrg())
Application.Volatile
Dim x, nbcol&, maxlig&, y, i&, j&, avecVide As Boolean
If IsMissing(xrg) Then Exit Function
For Each x In xrg: nbcol = nbcol + x.Columns.Count: Next
ReDim t(1 To nbcol)
maxlig = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count
For Each x In xrg
For Each y In x.EntireColumn.Columns.Resize(maxlig)
i = i + 1: t(i) = y.Formula
Next y
Next x
For i = 1 To maxlig
avecVide = False
For j = 1 To UBound(t)
If t(j)(i, 1) = "" Then avecVide = True: Exit For
Next j
If Not avecVide Then LigneSansVide = i: Exit Function
Next i
End Function