Aide avec l'objet dictionnary

  • Initiateur de la discussion Initiateur de la discussion arthurho
  • 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 !

A

arthurho

Guest
Bonjour,

Je souhaite utiliser l'objet dictionnary pour enlever les doublons dans une liste.

Cette liste est présente dans l'onglet "Feuil2", et j'execute le script sur "Feuil1"

Je souhaite obtenir le resultat sur une range différente de la range que je parcours.

J'ai réalisé le script suivant :

Code:
Sub test()
    
Dim DicoVersion As Object, VersionRange As Range, item As Variant, VersionNb As Long

Set DicoVersion = CreateObject("Scripting.Dictionary")
    Application.ScreenUpdating = False
VersionNb = 20
        With Sheets("Feuil2").Select
        'Récupération du nom de la version pour chaque item'
            Selection.Range("AI1:A" & Range("AI65536").End(xlUp).Row + 1).ClearContents
                MsgBox "test"
                '.Range("AI1:A" & Range("AI65536").End(xlUp).Row + 1).ClearContents
                'boucle cellules colonne A
                
                For Each VersionRange In Range("A2:A" & Range("A65536").End(xlUp).Row)
                               
                    If Not DicoVersion.Exists(VersionRange.Value) Then DicoVersion.Add VersionRange.Value, VersionRange.Value
        
                Next VersionRange
                For Each item In DicoVersion.items
                    Selection.Range("AI" & VersionNb) = item
                    VersionNb = VersionNb + 1
                Next
                'tri ascendant'
                    Range("AI20:AI" & Range("AI65536").End(xlUp).Row).Sort Key1:=Range("AI20"), Header:=xlGuess
                End With
                Set DicoVersion = Nothing
                Application.ScreenUpdating = True
                
End Sub

Malheureusement, mes item sont vides.

Avez vous une solution ?

Merci

Cdt,

Arthur HO.
 

Pièces jointes

Dernière modification par un modérateur:
Re : Aide avec l'objet dictionnary

bonjour arturho

une macro pour ce que tu souhaites

Code:
Sub essai()
Set dico = CreateObject("scripting.dictionary")
For n = 2 To Sheets("Feuil2").Range("A65536").End(xlUp).Row
 x = Sheets("Feuil2").Range("A" & n)
 dico(x) = x
Next n
Range("AI1").Resize(dico.Count) = Application.Transpose(dico.keys)
End Sub

Edit : Salut Flyonets
 
Re : Aide avec l'objet dictionnary

Bonsoir, Boisgontier, Pierrejean , Flyonets44, Le fil, Le forum.

J'ai une question par rapport a "Boigontier" est votre code pour comprendre quelque choses :

- a = Range("a2", [a65000].End(xlUp)).Value ' ici a c'est la plage de A2:A (a la dernière cellule non vide de la colonne A)

a = correspond a toutes les valeurs de cette plage.

Quelle différence entre :

a = toute les valeurs de la plage

Ou

dim a() as variant
a = toutes les valeurs de la plage

C'est à dire que "a" est une variable qui contient des données dans les deux cas (j'aurais aimé savoir si "a" avait était déclarer comme un tableau, votre code aurais fonctionner :

Différemment ?
Ou
Ce n’est pas possible ?
Ou
C'est les mêmes choses car est forcément un tableau de type variant ? (dans les 2 cas)
Ou
Il y a une autre astuce ?

Merci à vous est vos réponses, Mr Boigontier ou Mr Pierrejean

Laurent
 
Dernière édition:
Re : Aide avec l'objet dictionnary

Bonsoir,

Le tableau a() peut être déclaré ou non. Il est du type variant et à 2 dimensions (1 To n,1 To 1)

Code:
Sub essai()
  'Dim a() As Variant
  Set mondico = CreateObject("Scripting.Dictionary")
  a = Range("a2", [a65000].End(xlUp)).Value    ' lecture dans tableau + rapide
  For Each c In a
    mondico(c) = ""
  Next c
  [c2].Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
  MsgBox TypeName(a)
  MsgBox UBound(a, 1)
  MsgBox UBound(a, 2)
End Sub

JB
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
914
Réponses
7
Affichages
454
Réponses
4
Affichages
735
Réponses
4
Affichages
756
Retour