Comparer les strings dans deux classurs différents

Je dois comparer le nom d'user de 2 classurs en Excel à l'aide de VBA. Comment est-que quelqu'un peut faire ça?

Par exemple :

  • Dans le classur 1: la colonne A contient 10 noms
  • Dans le classur 2: la colonne A contient 10 noms

Je dois faire en sorte que la cellule de la colonne B dans chaque classur soit colorée en vert ou en rouge en fonction de la correspondance.

Je "pense" que vous voulez dire quelque chose comme ça, mais je sais que je dois toujours être prudent. Le code ci-dessous devrait fonctionner, mais vous voudrez probablement définir les plages de manière plus dynamic.

 Option Explicit Sub Compare_Names() Dim oBook_1 As Excel.Workbook Dim oBook_2 As Excel.Workbook Dim oRange_1 As Range Dim iRange_1_Rows As Integer Dim oRange_2 As Range Dim iRange_2_Rows As Integer Dim vArray As Variant Dim vArray_Found As Variant Dim iCnt As Integer Dim iCnt_B As Integer Application.ScreenUpdating = False Application.DisplayAlerts = False Set oBook_1 = Workbooks.Open("U:/Names_1.xls") Set oRange_1 = oBook_1.Sheets(1).Range("A1:A5") 'Can be dynamically set when needed iRange_1_Rows = oRange_1.Rows.Count ReDim vArray(1 To iRange_1_Rows, 1 To 1) vArray = oRange_1 Set oRange_1 = Nothing oBook_1.Close Set oBook_1 = Nothing Set oBook_2 = Workbooks.Open("U:/Names_2.xls") Set oRange_2 = oBook_2.Sheets(1).Range("A1:A5") iRange_2_Rows = oRange_2.Rows.Count For iCnt = 1 To iRange_1_Rows For iCnt_B = 1 To iRange_2_Rows ReDim vArray_Found(1 To iRange_2_Rows, 1 To 1) If Trim(vArray(iCnt, 1)) = Trim(oRange_2(iCnt_B)) Then oRange_2(iCnt_B).Interior.Color = vbGreen vArray(iCnt_B, 1) = True End If Next iCnt_B Next iCnt For iCnt = 1 To iRange_2_Rows If vArray(iCnt, 1) <> True Then oRange_2(iCnt).Interior.Color = vbRed End If Next iCnt Set oRange_2 = Nothing oBook_2.Save oBook_2.Close Set oBook_2 = Nothing End Sub 

Si vous voulez une comparaison non mémorisée, vous pouvez utiliser:

 if UCase(Trim(vArray(iCnt, 1))) = UCase(Trim(oRange_2(iCnt_B))) Then