[VBA] Supprimer doublon + alimenter tableau

suistrop

XLDnaute Impliqué
Salut,

je voudrais parcourir une colonne et garder les valeurs que je rencontre dans un tableau ( et non ailleurs sur la feuille ) sans doublons bien sur :)

Comme vous pouvez le voir au début je dois donnée une taille a mon tableau pour le déclarer avec que je le voudrais variable , je pourrais encore rajouter un autre tableau mais c est pas le probleme.

Code:
Sub toto()
    Dim tab1(15)
    For i = 1 To Range("A65536").End(xlUp).Row
            nomtab1 = Cells(i, 1)
            ajouter = True
        For Z = LBound(tab1) To UBound(tab1)
            If nomtab1 = tab1(Z) Then
                ajouter = False
            End If
        Next Z
        If ajouter = True Then
            tab1(t) = nomtab1
            t = t + 1
        End If
    Next i
boulet = 2
End Sub
JE VOUDRAIS QUELQUE CHOSE DE MOINS BARBARE !!!
je veux qu' a la fin je puisse utiliser mon tableau sans doublons sous vba :)


Merci a vous
 

Pièces jointes

  • suistrop.xls
    28 KB · Affichages: 258
  • suistrop.xls
    28 KB · Affichages: 263
  • suistrop.xls
    28 KB · Affichages: 280

skoobi

XLDnaute Barbatruc
Re : [VBA] Supprimer doublon + alimenter tableau

Bonsoir suistrop,

je te propose d'utiliser l'objet Dictionary:

Code:
Sub toto()
  Dim Tableau()
  Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In Range([A1], [A65536].End(xlUp))
'si la donnée n'existe pas encore dans le dictionnaire
     If Not MonDico.Exists(c.Value) Then
'on l'ajoute dans le dictionnaire...
        MonDico.Add c.Value, c.Value
'...et dans le tableau VBA ;-)
        ReDim Tableau(1 To MonDico.Count)
        Tableau(MonDico.Count) = c.Value
        Debug.Print MonDico.Count, Tableau(MonDico.Count)
      End If
  Next c
End Sub
Bonne soirée.

Edit: si tu ne connais pas Debug.Print, affiche la fenêtre d'exécution et regarde ce qu'il se passe.
 
Dernière édition:

JibseNew

XLDnaute Nouveau
Re : [VBA] Supprimer doublon + alimenter tableau

@skoobi,

Merci pour ton idée du Dictionary. C'est génial ! Pour remplir une ListBox avec les uniques d'un Array de 20.000 noms, si les uniques sont 10.000, par exemple, il me faut 10 secondes (en utilisant la propriété ListIndex=-1) alors qu'avec ton code c'est à peine une !
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 165
Messages
2 085 879
Membres
103 009
dernier inscrit
dede972