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 :

Problème de trie sur un tableau


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 74
    Points : 44
    Points
    44
    Par défaut Problème de trie sur un tableau
    Bonjour,

    J'essaie de créer un code pour trier un tableau.

    J'ai un tableau rempli avec 5 champs dedant
    Le nom, le prénom, la date,un emploi, et un chiffre

    mon but est de supprimer les noms en doublon tout en additionnant les chiffres associés

    exemple
    le tableau ci dessous :

    tonton jacques 1968 charcutier 5
    tata Ginette 1970 poissonnière 10
    tonton jacques 1968 charcutier 20
    tata Ginette 1970 poissonnière 15

    Doit donner

    tonton jacques 1968 charcutier 25
    tata Ginette 1970 poissonnière 25


    Pour le faire je compare ligne par ligne mon tableau et j'envoie dans un autre tableau le résultat

    j'ai un code mais ca ne fonctionne pas et je ne sais pas comment m'en sortir
    Pouvez vous m'aider a trouver le ou les erreurs

    nomdemontableau est mon tableau avec les données
    nomdemontableau2 est mon tableau ou je dois avoir le résultat

    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
       For k = 0 To w
               For l = 0 To w
     
               ' je compare le nom de la personne et son métier
               If nomdemontableau(k, 0) = nomdemontableau(l, 0) And nomdemontableau(k, 3) = nomdemontableau(l, 3) Then
     
     
               nomdemontableau2(k, 0) = nomdemontableau(k, 0)
               nomdemontableau2(k, 1) = nomdemontableau(k, 1)
               nomdemontableau2(k, 2) = nomdemontableau(k, 2)
               nomdemontableau2(k, 3) = nomdemontableau(k, 3)
               ' si le nom et le métier correspondent alors j'additionne les chiffres
               Nbheure1 = Val(nomdemontableau2(k, 4))
     
               Nbheure2 = Val(nomdemontableau(k, 4))
               Nbheure3 = Val(Nbheure1 + Nbheure2)
     
               nomdemontableau2(k, 4) = Nbheure3
     
               ' je supprime les lignes traitées car sinon le prg va créer des doublons
               If l > k Then
     
               nomdemontableau(k, 0) = ""
               nomdemontableau(k, 1) = ""
               nomdemontableau(k, 2) = ""
               nomdemontableau(k, 3) = ""
               nomdemontableau(k, 4) = ""
     
                End If
     
               End If
     
               Next
            Next
    Le résultat n'est pas top pour le moment

    Merci d'avance de votre aide

  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
    Points : 15 543
    Points
    15 543
    Par défaut
    Où as-tu pris ce code ? Ce n'est pas du VBA.
    Ceci dit, on peut t'aider pour ton pb.
    Comme tu utilises deux tableaux, c'est assez simple.
    par contre nous avons besoin de connaître l'organisation de tes données.
    Quelle colonne contient quoi ?
    Où se trouvent tes tableaux ? Dans deux feuilles différentes ?
    Tu dis
    A+

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 74
    Points : 44
    Points
    44
    Par défaut re
    Si si c'est bien du vb(a) mais j'ai fait un peu n'importe quoi en postant ce message ( j'ai mis entre quote pour mettre du commentaire ), j'avais pas pré visualiser avant de poster, et étant un peu nouveau ici j'ai mal géré ... sorry

    Pour mon pb je m'en suis sorti. et ca prendrai trop de temps a expliquer ma logique de développement, je ne suis meme pas sur qu'il fonctionne sans erreur.

    A la base j'avais un tableau a plusieurs dimension du type TAB(i,j)
    J'avais des données a l'intérieur
    Je voulais mettre ces données dans un nouveau tableau en supprimant les doublons.

    Aussi simple que ca.

    Si tu as une idée je suis preneur car j'aimerai bien voir une bonne façon de faire. j'ai pas trouvé d'aide sur internet.

    Ca aurait peut etre été plus simple avec les collections mais je ne sais pas m'en servir.

    Merci de ton aide

  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
    Points : 15 543
    Points
    15 543
    Par défaut
    Pour supprimer les boublons dans un tableau, quelque soit le nombre de dimensions, je passerais par les collections.
    Chaque fois que tu ajoutes un item à une collection, "il" est vérifié que l'item n'existe pas déjà sinon, celà génère une erreur (à gérer dans le code)
    Quand tu as parcouru tout ton tableau, il reste les données dans doublon dans la collection.
    Si c'était un tableau à une dimension, je te dirais "pourquoi ne pas passer directement par une collection ?" Mais comme c'est un tableau à plusieurs dimensions, tu dois créer ta collection pour chaque dimension.
    Comme ta question m'intéresse, je teste.
    A+

  5. #5
    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
    Points : 15 543
    Points
    15 543
    Par défaut
    Regarde ici, réalisé à la suite de ta demande

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 74
    Points : 44
    Points
    44
    Par défaut re
    J'ai testé ta méthode, elle fonctionne bien.

    Celle que j'ai utilisé fonctionne aussi meme si elle est un peut plus tordu, pour l'instant aucun bug... donc je la garde

    En tout cas merci beaucoup de ton aide,

    A bientot

  7. #7
    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
    Points : 15 543
    Points
    15 543
    Par défaut
    Donne ta méthode, si elle est meilleure que la mienne, et même si c'est le contraire, on l'ajoutera en réponse à la mienne dans Contribuez. Ainsi les lecteurs auront le choix

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

Discussions similaires

  1. [WD15] Trie sur un tableau à 2 dimensions
    Par rednight dans le forum WinDev
    Réponses: 6
    Dernier message: 19/11/2010, 08h46
  2. [MySQL] Problème de trie sur une colonne date
    Par vince851 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 28/04/2010, 11h02
  3. Réponses: 2
    Dernier message: 24/09/2007, 21h09
  4. Réponses: 13
    Dernier message: 03/04/2006, 10h01
  5. Réponses: 3
    Dernier message: 24/09/2005, 09h34

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