Extraire valeurs Uniques d'une plage et mettre sur une seule ligne

  • Initiateur de la discussion Initiateur de la discussion Shpountz
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Bonjour Shpountz, bonjour le forum,

Essaie comme ça :

VB:
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
 
Bonjour Robert, Bonjour Pierre Jean

Merci pour votre aide.

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

si j'ai
1 2 3 4
et
1 2 3 5

le résultat devrait être 1 2 3 4 5

Merci encore pour votre aide
Amicalement
François
 
bonjour Francois

A tester

EDit : Salut ROBERT
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
 
Dernière édition:
Bonjour hamphilos,

pierrejean n'est peut-être pas disponible, je réponds à sa place.

Il suffit en fin de macro de remplacer :
VB:
Range("I11").Resize(, UBound(d.keys)) = d.keys
par :
VB:
Range("I11").Resize(d.Count) = Application.Transpose(d.keys)
Edit: pierrejean s'est trompé, il faut utiliser d.Count à la place de UBound(d.keys)

Attention, la fonction Transpose est limitée à 65536 lignes.

Au-delà il faut faire une boucle pour transposer le tableau.

A+
 
Dernière édition:
Bonjour hamphilos,

pierrejean n'est peut-être pas disponible, je réponds à sa place.

Il suffit en fin de macro de remplacer :
VB:
Range("I11").Resize(, UBound(d.keys)) = d.keys
par :
VB:
Range("I11").Resize(d.Count) = Application.Transpose(d.keys)
Edit: pierrejean s'est trompé, il faut utiliser d.Count à la place de UBound(d.keys)

Attention, la fonction Transpose est limitée à 65536 lignes.

Au-delà il faut faire une boucle pour transposer le tableau.

A+
Bonjour @job75
Je viens de tester et ça fonctionne super bien. Merci infiniment pour ton aide précieuse, c'est très apprécié.
Salutations.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
22
Affichages
914
Réponses
9
Affichages
222
Réponses
7
Affichages
214
Retour