Sub Test()
Dim t, i&, n&, TabLigne(), s
' -----> construction du tableau des lignes avec anomalie
ReDim Preserve TabLigne(0 To 0) ' on crée le tableau résultat à une dimension avec un indice commeçant à zéro
t = Range("a1").CurrentRegion ' lecture des valeurs
For i = 1 To UBound(t) ' boucle sur les lignes de t
If t(i, 1) + t(i, 2) > t(i, 3) + t(i, 4) Then
' la condition d"sirée n'est pas vérifiée
n = n + 1 'on incrémente le nombre de lignes concernées
' si n = 1, c'est le premier élément. On redimensionne le tableau résultat à un élément
' mais cette fois ci l'indice de base est 1
' si n > 1, Il y a déjà des éléments. On redimensionne le tableau résultat à n élément
' mais cette on garde l(indice de base 'et les valeurs déjà présentes)
If n = 1 Then ReDim TabLigne(1 To 1) Else ReDim Preserve TabLigne(1 To n)
TabLigne(UBound(TabLigne)) = i 'on rajoute la ligne au dernier élément deu tablreau qu'on vient de créé
End If
Next i
'Exemple d'utilisation de Tabligne
If LBound(TabLigne) = 0 Then
' si l'indice de base du tableau est 0, cela signifie qu'on y a mis aucun numéro de ligne
MsgBox "Aucune ligne hors de la condition"
Else
' si l'indice de base du tableau est 1, cela signifie qu'on y a mis au moins un numéro de ligne
' En tout, on y a même mis Ubound(TabLigne) numéros de lignes
s = UBound(TabLigne) & " cellules concernées : " & vbLf
For i = 1 To UBound(TabLigne)
s = s & vbLf & Space(11) & Cells(TabLigne(i), "A").Address(0, 0) & " à " & Cells(TabLigne(i), "D").Address(0, 0)
Next i
MsgBox s
End If
End Sub