1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
Function SerchXls(MyRange As Range, MyCellule As Range, strRecherche, EntierCell As Boolean) As Long '
On Error Resume Next
SerchXls = 0
Dim myxLookAt As Integer
If EntierCell = True Then myxLookAt = xlWhole Else myxLookAt = xlPart
SerchXls = MyRange.Cells.Find(What:=strRecherche, After:=MyCellule, LookIn:=xlFormulas, LookAt _
:=myxLookAt, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, MatchByte:=False).Row
If SerchXls <= MyCellule.Row Then SerchXls = 0
End Function
Sub scanner()
Dim MyRange As Range
Dim I As Long
Dim scan As String
Dim ligne As Long
Dim SaveLinge As Long
Dim catégorieOk As Boolean
Dim QuitteSerchXls As Boolean
Dim Trouve As Boolean
Application.EnableEvents = False
Set MyRange = ActiveWorkbook.Worksheets("Feuil1").UsedRange
For I = 2 To MyRange.Rows.Count
If Trim("" & MyRange(I, 1)) <> "" Then
ligne = 0: SaveLinge = 1: QuitteSerchXls = False: catégorieOk = False
While QuitteSerchXls = False
SaveLinge = SerchXls(ActiveWorkbook.Worksheets("ModèlesMarques").Columns("A:A"), ActiveWorkbook.Worksheets("ModèlesMarques").Range("A" & SaveLinge), MyRange(I, 1), True)
If SaveLinge = 0 Then QuitteSerchXls = True
If SaveLinge > 0 And Trouve = False Then
Trouve = True
ligne = SaveLinge
End If
If SaveLinge > 0 And Trouve = True Then
If MyRange(I, 3) = ActiveWorkbook.Worksheets("ModèlesMarques").Cells(SaveLinge, 3) Then
ligne = SaveLinge
catégorieOk = True
QuitteSerchXls = True
End If
End If
Wend
If ligne > 0 Then MyRange(I, 1) = ActiveWorkbook.Worksheets("ModèlesMarques").Cells(ligne, 2)
If ligne > 0 And catégorieOk = True Then
'ton traitement.
End If
End If
Next
Application.EnableEvents = True
End Sub |
Partager