Pour l'amour de tout ce qui est bon, je n'arrive pas à faire fonctionner cela. Je reçois toujours l'erreur mentionnée ci-dessus.
J'ai cette table, et j'essaie de savoir si le code correspond à son propre sous-code quelque part dans l'autre colonne, mais c'est une erreur. Votre aide est grandement appréciée.
Sub testing()
Dim m1 As long
Dim myrange As Range
Set myrange = Worksheets("Sheet1").Range("B2:B23")
For e = 2 To 23
m1= Application.WorksheetFunction.Match(Cells(e, 1).Value, myrange, 0)
If m1 > 0 Then
Cells(e, 3).Value = "Yes"
Else
Cells(e, 3).Value = "No"
End If
Next e
MsgBox "Complete!"
End Sub
Utilisez le Application.Match
fonction qui permet de mieux capter les erreurs. Lorsque vous utilisez le WorksheetFunction.Match
, lorsqu'une correspondance n'est pas trouvée, elle renvoie une erreur, ce que vous rencontrez.
If Not IsError(Application.Match(Cells(e, 1).Value, myrange, 0)) Then
'Do stuff when the match is found
Cells(e, 3).Value = "Yes"
Else:
Cells(e, 3).Value = "No"
End If
Vous pouvez également potentiellement utiliser la fonction CountIf
:
If Application.WorksheetFunction.CountIf(myRange, Cells(e,1).Value) > 0 Then
Cells(e,3).Value = "Yes"
Else:
Cells(e,3).Value = "No"
End If
Aucune de ces approches ne vous oblige à utiliser le m1
variable, vous pouvez affecter cette variable dans la partie True
de la If/Then
, si vous devez identifier où la correspondance est trouvée.
Tout comme une autre option, cela peut également être fait en plaçant la formule ci-dessous dans la cellule C2 et en la faisant glisser vers le bas en C23.
=IF(COUNTIF($A$2:$A$23,B2)>=1,"YES","NO")