VBA: searchz des occurrences en fonction de la valeur d'une autre colonne

Tout d'abord, j'aimerais savoir si la lettre "A" est incluse dans la colonne A, et deuxièmement si au less une des occurrences a un 1 dans la colonne B.

Column A | Column B A | 0 B | 1 A | 1 C | 0 A | 0 

Avec mes faibles compétences, je peux à peine savoir s'il y a une telle valeur dans la colonne.

 Set Obj = Sheets("Sheet 1").Range("Column A") If Not IsError(Application.Match("A", ObjColumn, 0)) Then MsgBox("There is at least one occurrence") If Application.Vlookup("A", ObjTable, 2, False) = 1 Then MsgBox("At least one A has 1 as value") 

Malheureusement, avec Application.Vlookup je ne peux que explorer la valeur de la première apparition.

J'ai fait des searchs, mais je viens de find des codes excesivement compliqués pour un problème aussi simple.

Merci d'avance!

vous pouvez utiliser WorksheetFunction.CountIf() et WorksheetFunction.CountIfs()

 Sub main() With Sheets("Sheet 1") '<--| reference your sheet If Application.WorksheetFunction.CountIf(.Columns(1), "A") > 0 Then MsgBox ("There is at least one occurrence") If Application.WorksheetFunction.CountIfs(.Columns(1), "C", .Columns(2), 1) > 0 Then MsgBox ("At least one A has 1 as value") End If End With End Sub 

ou, si vous avez des en-têtes en première rangée, vous pouvez utiliser les AutoFilter() et Find() :

 Option Explicit Sub main() With Sheets("Sheet 1") '<--| reference your sheet With Intersect(.Range("A:B"), .UsedRange) '<--| reference its columns A and B used cells .AutoFilter Field:=1, Criteria1:="A" '<--| filter referenced cells on its 1st column (ie column "A") with value "A" If Application.WorksheetFunction.Subtotal(103, .Resize(, 1)) > 1 Then '<--| if any cell filtered other than header MsgBox ("There is at least one occurrence") If Not .Resize(.Rows.count - 1, 1).Offset(1, 1).SpecialCells(xlCellTypeVisible).Find(what:=2, LookIn:=xlValues, lookat:=xlWhole) Is Nothing Then MsgBox ("At least one A has 1 as value") '<--|search 2nd column filtered cells for "1") End If End With End With End Sub 

Merci @ user3598756

Vos suggestions m'ont aidé à find une solution à mes besoins, car j'ai une troisième colonne qui vide va également activer le code.

 Column A | Column B | Column C A | 0 | "" B | 1 | 0 A | 0 | 1 C | 1 | "" A | 0 | "" A | Column A | Column B | Column C A | 0 | "" B | 1 | 0 A | 0 | 1 C | 1 | "" A | 0 | "" 0 | Column A | Column B | Column C A | 0 | "" B | 1 | 0 A | 0 | 1 C | 1 | "" A | 0 | "" 1 | Column A | Column B | Column C A | 0 | "" B | 1 | 0 A | 0 | 1 C | 1 | "" A | 0 | "" A | Column A | Column B | Column C A | 0 | "" B | 1 | 0 A | 0 | 1 C | 1 | "" A | 0 | "" 0 | Column A | Column B | Column C A | 0 | "" B | 1 | 0 A | 0 | 1 C | 1 | "" A | 0 | "" 1 | Column A | Column B | Column C A | 0 | "" B | 1 | 0 A | 0 | 1 C | 1 | "" A | 0 | "" 

Ci-dessous fait partie du code:

  Set Obj1 = Sheets("Sheet 1").Range("Table[Column A]") Set Obj2 = Sheets("Sheet 2").Range("Table[Column B]") Set Obj3 = Sheets("Sheet 3").Range("Table[Column C]") If Not IsError(Application.Match("A", Obj1, 0)) Then If Application.CountIfs(Obj1, "A", Obj2, "1") Or Application.CountIfs(Obj1, "A", Obj3, "<>") > 0 Then MsgBox ("At least one occurrence has either an 1 in B or an empty field in C.") End If 

Merci beaucoup!