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)
Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
TV = O.Range("B2").CurrentRegion 'définit le tableau des valeurs TV (à adapter à ton cas)
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
If TV(I, J) <> "" Then D(TV(I, J)) = "" 'si la donnée ligne I colonne J de TV n'est pas vide, alimente le dictionnaire D avec la donnée
Next J 'prochaine colonne de la boucle 2
Next I 'prochaine ligne de la boucle 1
O.Range("I11").Resize(1, D.Count).Value = D.keys 'renvoie dans I11 (cellule à adapter) redimensionnée de l'onglet O les éléments du dictionanire D asns doublon
End Sub
Robert concernant le VBA je suis nul...
Pour le module pas de soucis mais comment faire pour adapter a mon besoin ?
Les données à extraire font partie d'une feuille et je ne souhaite pas lancer le VBA sur toute la feuille mais juste sur une partie de celle-ci
Je pense que je dois préciser ou se trouve la plage a extraire et lui donner un endroit ou inscrire le résultat
Pierre Jean
En fait je souhaite obtenir toute les valeurs uniques et la macro me donne les doublons
En fait la MFC sur mon tableau n'était présente que pour m'aider à trouver les valeurs non en double...
Maintenant je m'aperçois que je me suis peut être mal exprimé...
En fait je souhaite obtenir une liste dédoublonnée et incluant les autres valeurs aussi
Bonjour @pierrejean
Pouvez-vous s'il vous plaît nous indiquer comment modifier la macro pour avoir les résultats sur une colonne et non sur une ligne?
Merci d'avance pour votre précieuse aide.
Sub test()
Set d = CreateObject("Scripting.dictionary")
Range("B2:G5").Select
For Each cel In Selection
If cel.Value <> "" Then
x = cel.Value
d(x) = x
End If
Next
Range("I11").Resize(, UBound(d.keys)) = d.keys
End Sub