Bonjour Savalain, bonjour le forum,
Essaie comme ça :
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
TV = O.Range("B3:XEV29") 'définit le tableau des valeurs TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 1 To UBound(TV, 1) 'boucle 1 : sur toutes les lignes I du tableau des valeurs TV
For J = 1 To UBound(TV, 2) 'boucle 2 : sur toutes les colonnes J du tableau des valeurs TV
'si la donnée ligne I colonne J de TV n'est pas un nombre ou si elle n'est pas vide, aliente le dictionnaire D
If IsNumeric(TV(I, J)) = False Or TV(I, J) <> "" Then D(TV(I, J)) = ""
Next J 'prochaine colonne de la boucle 2
Next I 'prochaine ligne de la boucle 1
MsgBox D.Count 'message qui renvoie le nombres d'éléments du dictionanire D sans doublons
End Sub