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 :

Egalite de array / Recherche de doublons


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 10
    Par défaut Egalite de array / Recherche de doublons
    Bonjour,

    je cherche a comparer des tableaux de meme taille sans passer par des comparaisons de cellule a cellule.
    J'ai deja regarder des posts pour eliminer les doublons mais j'ai rien trouve pour des arrays.

    D'avance merci

    Pour info voici un bout de mon code:
    'Verifier que le precedent Get Fullstatus ne contient pas dejà l'information

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For j = 0 To WorksheetFunction.Min(MaxNmot - 1, tabelL(2, TempErr.NMot))
         If TTErr() = tabelL(tabelL(2, TempErr.NMot) - j + 3, TempErr.NMot) Then GoTo dejala
    Next j
    'Si l'erreur n'est pas connue, l'enregistrer et implementer le nombre d'erreurs
     
         tabelL(2, TempErr.NMot) = tabelL(2, TempErr.NMot) + 1
         tabelL(tabelL(2, TempErr.NMot) + 2, TempErr.NMot) = TTErr()
    Dans ce code TTErr est un tableau à une ligne et 5 colonnes

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Supprimer les doublons dans un tableau revient à créer un tableau intermédiaire (Temp) dans lequel les données du tableau d'origine (A) sont recopiées sans doublon.
    Pour ça, tu prends chaque donnée de A et tu vérifies qu'elle n'est pas déjà dans Temp. Si elle n'y est pas, tu renseignes ton tableau Temp en incrémentant son index.
    Une fois A traité, tu fais A = Temp et tu passes à ton tableau B
    Un fois A et B traités, tu as deux solutions :
    soit tu les traites de la même manière en comparant chaque donnée de A à toutes les données de B
    soit tu utilises Join(Tableau "A") et Instr(B(i) dans une boucle
    ok = true
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For i = 0 to Ubound(B)
         ok = ok and instr(Join(A), B(i))<>0
    Next
    If ok then
         msgbox "C'est tout bon"
       else
         msgbox "C'est pas bon"
    Endif
    Tu adaptes et tu nous dis si tu as des difficultés
    A+
    NB - Pense aux balises code

    PS - Si au départ tes données étaient classées de la même manière, tu pouvais dans la deuxième partie comparer de tableau à tableau sans boucle

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 10
    Par défaut
    Merci pour la reponse.

    Entre temps, j'ai un autre probleme, c'est que je ne peux pas placer mes types dans le tableau et il faudrait que je declare mes types de variables je ne sais où.

    Je vais regarder ces fonctions instr et join que je n'utilise pas. Merci pour le tuyau.

    Mais en fait ma question n'etait pas tout a fait sur le comment trier des doublons mais surtout sur la possibilite de comparer directement des tableaux entre eux, sans les comparer cellule apres cellule.

    Voili voilou.

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Bêtement, si tu es sûr de ne pas avoir de doublon dans l'un ou (exclusif) l'autre tableau, en comparant les chaînes que représente chaque tableau. Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Liste, Truc
        Liste = Array("NomBook1.xls", "NomBook1.xls", "NomBook1.xls", "NomBook1.xls")
        Truc = Array("NomBook1.xls", "NomBook1.xls", "NomBook1.xls", "NomBook1.xls")
        MsgBox Join(Liste) = Join(Truc) ' => Vrai
    A+

Discussions similaires

  1. [array] enlever les doublons
    Par FFF dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 01/11/2005, 10h43
  2. Recherche de doublons "non strict"
    Par Oluha dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/01/2005, 09h21
  3. [VBA] Algo de recherche de doublons
    Par guams dans le forum VBA Access
    Réponses: 6
    Dernier message: 27/07/2004, 17h10
  4. recherche de doublons dans un fichier texte
    Par portu dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 07/10/2003, 14h13
  5. Réponses: 2
    Dernier message: 19/08/2003, 18h04

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