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 :

VBA Aide pour tri et regroupement complexe


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Par défaut VBA Aide pour tri et regroupement complexe
    Bonjour,
    J'ai un fichier avec beaucoup de ligne que je dois trier en respectant une logique un peu complexe...
    Je n'arrive pas à l'automatiser.

    Je vais essayer de m'expliquer.
    En entrée j'ai une table
    Nom : 1.jpg
Affichages : 284
Taille : 38,1 Ko

    Je dois créer une liste de valeurs de la colonne "Candidat" sans doublons mais qui me remonte pour chaque "Candidat" les candidats qui le précédent lui même...
    Exemple :
    Je commence à la ligne 1 et je trouve Robert.
    Pour tous les Articles de la liste (colonne A), je constate que Robert est en position 1 alors pas de problème, J'ajoute Robert dans un nouveau tableau. Robert peut être supprimé du tableau d'origine :
    Nom : 2.jpg
Affichages : 283
Taille : 45,3 Ko

    Ensuite, le candidat suivant est Toto
    Mais ça devient compliqué car pour l'Article2, Toto est précédé de Tata et Tata est lui même précédé de Titi pour l'Article 3, qui lui même pourrait être précédé par un autre et cet autre pourrait être précédé par un autre etc etc etc etc.....
    Nom : 3.jpg
Affichages : 241
Taille : 29,6 Ko


    Je ne suis même pas sur d'avoir réussi à m'expliquer clairement... C'est tordu comme truc, mais dans le doute je viens jeter une bouteille à la mer si quelqu'un à une idée.
    Merci d'avance pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jojo86 Voir le message
    Bonjour,

    J'ai essayé de piger votre raisonnement. Pourquoi Jean-Louis n'est pas avant Robert ?

    Pièce jointe 307989

  3. #3
    Membre éprouvé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Par défaut
    Bonjour,
    Merci de vous être intéressé à mon problème.
    En réalité, la colonne candidat correspond à des opérations de travaille qui doivent suivre l'ordre d'apparition que nous voyons sur le 1er tableau. C'est un enchaînement d'opération logique.
    Nous constatons que Robert est en 1ere position sur tous les Articles c'est donc Robert qui doit commencer à travailler le premier. Jean-louis ne peu donc pas être devant lui puisque dans tous les cas, c'est Robert qui est le 1er.
    Ensuite vient Toto mais Toto pour Article2 est précédé de Tata cela signifie que Tata doit forcement être avant Toto. Mais Tata est précédé de Titi pour Article3 Donc Titi doit forcement être avant Tata, mais Titi pourrait être précédé d'un autre candidat pour un autre article et cette autre candidat pourrait lui aussi être précédé par un autre article etc...

    Si tu veux raisonner en partant de la fin, il faut donc partir de Richard, puis pour chaque candidat, il faut regarder si ce candidat est présent pour un autre article et si ce candidat est suivi d'un autre candidat pas encore traité dans la nouvelle liste...
    Richard est le premier en partant du bas pour article3 et article1 Richard est donc le 1er.
    Ensuite vient Maurice mais Maurice pour Article 1 est suivi de Jean-Louis et Jean-Louis pourrait lui même être suivi d'un autre candidat pour un autre article etc etc...

    En inverse, l'ordre serait :

    Nom : 4.jpg
Affichages : 221
Taille : 53,7 Ko

  4. #4
    Membre émérite

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    Mars 2002
    Messages
    649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 649
    Billets dans le blog
    1
    Par défaut
    Je n'ai pas la solution mais une méthode:
    construire autant de colonnes qu'il y a d'articles;
    La personne choisie est une de celles en tête de colonnes.
    La bonne est en tête ou absente dans les autres. On l'ajoute à notre nouvelle liste
    Lorsqu'on l'a trouvé, on la supprime de toutes les colonnes (assez facile elle ne peut être que le premier élément d'une colonne).
    Et on recommence
    Nom : Capture du 2017-08-31 18:44:54.png
Affichages : 217
Taille : 72,4 Ko
    etc (remarque j'ai oublié de régler le correcteur or tôt graphique d'où les petites vagues sous les mots)

  5. #5
    Membre émérite

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    Mars 2002
    Messages
    649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 649
    Billets dans le blog
    1
    Par défaut
    petite remarque supplémentaire.
    Il manque des éléments de décision dans ce problème.
    Soit deux listes non vides; si le premier de la liste 1 est le deuxième de la liste 2 et inversement le deuxième de la liste1 est le premier de la liste 2 le choix est impossible.
    On pourrait aussi avoir plusieurs candidats possibles (en tête et présents uniquement dans deux listes distinctes par exemple)

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    Une proposition en vba, mes tentatives par formules n'ayant rien donné. A tester...
    65000 candidats maxi.

    Théoriquement si plusieurs candidats se trouvent à égalité leur rang est complété par une décimale. Ex :
    1
    2
    3
    3.2
    3.3
    6
    7
    Non testé, je te laisse le soin de construire une telle liste pour le faire si le besoin existe.
    eric

    edit : 14:40 fichier changé, prise en compte du séparateur décimal régional
    15:00 : contrôle et correction d'un bug si égalité entre candidats
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [XL-2003] Vba Aide pour faire un calcul
    Par Ropie94 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/07/2009, 16h41
  2. Besoin d'aide pour une jointure SQL complexe
    Par Naruto-uzumaki dans le forum Langage SQL
    Réponses: 10
    Dernier message: 21/02/2008, 15h58
  3. debutant en VBA aide pour créer un formulaire
    Par vince_ballad dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/07/2007, 22h41
  4. [VBA] Aide pour code
    Par Virgile59 dans le forum Access
    Réponses: 2
    Dernier message: 22/05/2006, 14h16
  5. Aide pour écrire une requête complexe
    Par julienbdx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/11/2005, 16h58

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