Advertisement
Igorlegor

Extract Unique Values

Dec 11th, 2024
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Sub ExtractUniqueValues()
  2.     Dim ws As Worksheet
  3.     Dim wsTarget As Worksheet
  4.     Dim rng As Range
  5.     Dim cell As Range
  6.     Dim dict As Object
  7.     Dim outputRow As Long
  8.    
  9.     ' Vérifie si la feuille "stuff" existe, sinon, la crée
  10.    On Error Resume Next
  11.     Set wsTarget = ThisWorkbook.Sheets("stuff")
  12.     If wsTarget Is Nothing Then
  13.         Set wsTarget = ThisWorkbook.Sheets.Add
  14.         wsTarget.Name = "stuff"
  15.     End If
  16.     On Error GoTo 0
  17.    
  18.     ' Efface les données existantes dans la colonne A de la feuille "stuff"
  19.    wsTarget.Columns("A").ClearContents
  20.    
  21.     ' Crée un dictionnaire pour stocker les valeurs uniques
  22.    Set dict = CreateObject("Scripting.Dictionary")
  23.     dict.CompareMode = vbTextCompare
  24.    
  25.     ' Parcourt toutes les feuilles du fichier
  26.    For Each ws In ThisWorkbook.Sheets
  27.         ' Ignore la feuille "stuff" pour éviter les boucles infinies
  28.        If ws.Name <> "stuff" Then
  29.             ' Parcourt toutes les cellules utilisées de chaque feuille
  30.            On Error Resume Next
  31.             Set rng = ws.UsedRange
  32.             On Error GoTo 0
  33.             If Not rng Is Nothing Then
  34.                 For Each cell In rng
  35.                     If Not IsEmpty(cell.Value) Then
  36.                         If Not dict.exists(cell.Value) Then
  37.                             dict.Add cell.Value, True
  38.                         End If
  39.                     End If
  40.                 Next cell
  41.             End If
  42.         End If
  43.     Next ws
  44.    
  45.     ' Insère les valeurs uniques dans la colonne A de la feuille "stuff"
  46.    outputRow = 1
  47.     For Each Key In dict.Keys
  48.         wsTarget.Cells(outputRow, 1).Value = Key
  49.         outputRow = outputRow + 1
  50.     Next Key
  51.    
  52.     ' Message de confirmation
  53.    MsgBox "Extraction terminée ! " & dict.Count & " valeurs uniques trouvées.", vbInformation
  54. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement