Advertisement
Igorlegor

CheckUnexpectedABCombinations

Jan 17th, 2025 (edited)
670
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Sub CheckUnexpectedABCombinations()
  2.     Dim wsVisits As Worksheet
  3.     Dim wsFlags As Worksheet
  4.     Dim ws As Worksheet
  5.     Dim dictVisits As Object
  6.     Dim lastRow As Long, i As Long
  7.     Dim key As String
  8.     Dim outputRow As Long
  9.    
  10.     ' Associer l'onglet "visits"
  11.    On Error Resume Next
  12.     Set wsVisits = ThisWorkbook.Worksheets("visits")
  13.     If wsVisits Is Nothing Then
  14.         MsgBox "L'onglet 'visits' est introuvable. Veuillez vérifier.", vbExclamation
  15.         Exit Sub
  16.     End If
  17.     On Error GoTo 0
  18.    
  19.     ' Créer un dictionnaire pour stocker les combinaisons AB de l'onglet "visits"
  20.    Set dictVisits = CreateObject("Scripting.Dictionary")
  21.     lastRow = wsVisits.Cells(wsVisits.Rows.Count, "A").End(xlUp).Row
  22.     For i = 2 To lastRow ' Commencer à la ligne 2 pour ignorer les en-têtes
  23.        key = wsVisits.Cells(i, "A").Value & "|" & wsVisits.Cells(i, "B").Value
  24.         If Not dictVisits.exists(key) Then
  25.             dictVisits.Add key, True
  26.         End If
  27.     Next i
  28.    
  29.     ' Créer ou réinitialiser l'onglet "flags"
  30.    On Error Resume Next
  31.     Application.DisplayAlerts = False
  32.     Set wsFlags = ThisWorkbook.Worksheets("flags")
  33.     If Not wsFlags Is Nothing Then wsFlags.Delete
  34.     Application.DisplayAlerts = True
  35.     Set wsFlags = ThisWorkbook.Worksheets.Add
  36.     wsFlags.Name = "flags"
  37.     On Error GoTo 0
  38.    
  39.     ' Ajouter des en-têtes à l'onglet "flags"
  40.    wsFlags.Cells(1, 1).Value = "Onglet"
  41.     wsFlags.Cells(1, 2).Value = "Ligne"
  42.     wsFlags.Cells(1, 3).Value = "Colonne A"
  43.     wsFlags.Cells(1, 4).Value = "Colonne B"
  44.     outputRow = 2
  45.    
  46.     ' Parcourir tous les onglets sauf "visits" et "flags"
  47.    For Each ws In ThisWorkbook.Worksheets
  48.         If ws.Name <> "visits" And ws.Name <> "flags" Then
  49.             lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
  50.             For i = 2 To lastRow ' Commencer à la ligne 2 pour ignorer les en-têtes
  51.                key = ws.Cells(i, "A").Value & "|" & ws.Cells(i, "B").Value
  52.                 If Not dictVisits.exists(key) Then
  53.                     ' Ajouter la ligne dans l'onglet "flags"
  54.                    wsFlags.Cells(outputRow, 1).Value = ws.Name
  55.                     wsFlags.Cells(outputRow, 2).Value = i
  56.                     wsFlags.Cells(outputRow, 3).Value = ws.Cells(i, "A").Value
  57.                     wsFlags.Cells(outputRow, 4).Value = ws.Cells(i, "B").Value
  58.                     outputRow = outputRow + 1
  59.                 End If
  60.             Next i
  61.         End If
  62.     Next ws
  63.    
  64.     MsgBox "Vérification terminée. Résultats dans l'onglet 'flags'.", vbInformation
  65. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement