IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

fonction eliminant les doublons [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 70
    Par défaut fonction eliminant les doublons
    bonjour,
    j'ai besoin de votre aide,
    j'ai un tableau virtuel qui contient de doublon, j'aimerai savoir la fonction ou l'ecriture me permettant de l'eliminer les doublons. Je ne travaille pas dans une feuille mais plutôt dans vba excel
    expl: mon tableau vietuell contient a,b, c, c, d, e, e a, r et j'aimerai plutot transformer ce nouveau tableau virtuel doit contenir a,b,c,d,e,r.

    Merci de votre retour d'avance

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 652
    Par défaut
    Bonjour
    surtout intéressant si grand tableau....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub supprimer_doublons()
    Dim Dico As Object
    Dim T_in, cptr As Long, T_out
    Set Dico = CreateObject("scripting.dictionary")
    'pour faire un tableau pour la démo
    T_in = Array("a", "z", "e", "t", "r", "y", "a", "z", "e", "t", "r", "y", "q", "s", "d", "a")
     
    For cptr = 0 To UBound(T_in)
        If Not Dico.exists(T_in(cptr)) Then
            Dico.Add T_in(cptr), T_in(cptr)
        End If
    Next
    T_out = Dico.items
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 70
    Par défaut
    merci pour ta reponse, elle ne fonctionne pas dans mon cas.
    voici une partie de ma fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    n = UBound(line_list_new)
    ReDim caisse_usine(n)
    For i = 1 To n
         l = line_list_old(i)
         caisse_usine(i) = Tableau_PM_H79(l, 6) + Tableau_PM_H79(l, 7)
    Next i
    ReDim doublon(n)
    dans mon tableau caisse_usine, il y a des elts identique qui reviennent
    je veux que dans mon tableau doulon ne contient que les elts sans doublon

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2010
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 240
    Par défaut
    salut

    si tu as un doublon
    tu souhaites donc les réunir. as tu une autre opération à faire à coté genre une somme de la ligne avec le doublon?

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Par l'intermédiaire d'un dictionnaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    Function SupprimerDoublons(Tbl()) As Variant()
     
        Dim Dico As Object
        Dim Cle
        Dim T()
        Dim I As Long
     
        'crée l'objet
        Set Dico = CreateObject("Scripting.Dictionary")
     
        'inscrit les valeurs dans le dictionnaire
        'en affectant aussi cette valeur à la clé
        'une clé devant être unique, si on ne contrôle pas
        'son existance dans la collection, un erreur est générée
        For I = 1 To UBound(Tbl)
            If Dico.Exists(Tbl(I)) = False Then
                Dico.Add Tbl(I), Tbl(I)
            End If
        Next I
     
        I = 0
     
        'tranfert des valeurs uniques dans un tableau
        For Each Cle In Dico.keys
            I = I + 1
            ReDim Preserve T(1 To I)
            T(I) = Cle
        Next
     
        'passage de ce tableau à la fonction
        SupprimerDoublons = T
     
        'libère la mémoire
        Set Dico = Nothing
     
    End Function
     
    'il est alors possible de récupérer le tableau trié
    Tbl = SupprimerDoublons(Tbl)
    Hervé.

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Function Unic(Tb As Variant) As Variant
    Dim X, Res()
    Dim i As Integer, j As Integer
     
    ReDim Res(0 To 0)
    Res(0) = Tb(1)
    For i = 2 To UBound(Tb)
        X = Filter(Res, Tb(i), True)
        If UBound(X) = -1 Then
            j = j + 1
            ReDim Preserve Res(0 To j)
            Res(j) = Tb(i)
        End If
    Next i
    Unic = Res
    End Function

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. eliminer les doublons d'un tableau
    Par wided_instm dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 22/09/2006, 10h56
  2. TMemo : eliminer les doublons
    Par delphidebutant dans le forum Delphi
    Réponses: 4
    Dernier message: 28/08/2006, 18h13
  3. [XSL] Eliminer les doublons dans un noeud
    Par Shadow aok dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 13/04/2006, 15h17
  4. Eliminer les doublons dans un tableau d'entiers
    Par engi dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 21/03/2006, 13h59
  5. Eliminer les doublons d'un tableau de hachage
    Par dreydrey dans le forum Langage
    Réponses: 21
    Dernier message: 15/11/2005, 15h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo