Sub xxxxx()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim message As String
Dim b As Boolean
' Utiliser la feuille active
Set ws = ActiveSheet
' Trouver la dernière ligne avec des données dans la colonne B
lastRow = Application.Max(ws.Cells(ws.Rows.Count, "A").End(xlUp).Row, ws.Cells(ws.Rows.Count, "B").End(xlUp).Row) 'dernier ligne de A et B
' Boucle à travers les lignes
For i = 1 To lastRow
' Vérifier si la cellule dans la colonne B est égale à 0, vide ou #N/A
b = IsError(ws.Cells(i, 2).Value) ' c'est une erreur ?
If Not b Then b = IsEmpty(ws.Cells(i, 2).Value) Or ws.Cells(i, 2).Value = 0 'si ce n'était pas une erreur, est-ce vide ou zéro ?
If b Then 'un des 3
' Ajouter la valeur de la cellule correspondante dans la colonne A au message
message = message & ws.Cells(i, 1).Value & vbCrLf
End If
Next i
MsgBox IIf(Len(message) = 0, "VIDE !!!!!", message), vbInformation, "Contenu de A, si B est erreur, vide ou zéro"
End Sub
if faut séparer le test "erreur" des 2 autres tests, parce que ws.Cells(i, 2).Value avec une erreur dedans, cause l'arrêt de la macro