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 :

Tri particulier dans excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 25
    Par défaut Tri particulier dans excel
    Il y a quelques temps j'avais demandé de l'aide pour optimiser le changement de canette et de bobine sur la piqure sur de produits (le fil du dessus est prioritaire car plus pénible à changer). Tout cela était en sql.
    Aujourd'hui j'aurai besoin de le transposer en vba sur excel mais ca n'est pas évident.

    Le top serait de se dire je prend tous les produits prend le 1er fil dessus qui est le blanc car il a le plus de produit à piquer, ensuite je regarde mon fil du dessous et je prend une ligne qui une canette de même couleur, pour ensuite continuer avec son fil du dessus sur la même logique.

    Ce qui pourrait donner ça une fois trié :

    BLANC | GRIS
    BLANC | VERT CLAIR
    BLANC | VERT CLAIR
    BLANC | BLEU FONCE
    BLANC | NOIR
    BLANC | NOIR
    BLANC | NOIR
    BLANC | BLANC
    BLANC | BLANC
    BLANC | BLANC
    BLANC | BLANC
    BLANC | BLANC
    BLANC | BLANC
    BLEU MOYEN | BLANC
    GRIS | BLANC
    ORANGE | BLANC
    ORANGE | BLANC
    ORANGE | JAUNE
    ORANGE | BLEU FONCE
    ORANGE | BLEU FONCE
    VIOLET | BLEU FONCE
    VIOLET | BLANC
    VIOLET | GRIS
    VIOLET | ORANGE
    BLEU FONCE | ORANGE
    BLEU FONCE | ORANGE
    BLEU FONCE | BLANC
    BLEU FONCE | BLANC
    BEIGE | BLANC
    BEIGE | BLANC
    BEIGE | NOIR
    ROUGE | NOIR
    NOIR | BLANC
    NOIR | BLEU MOYEN
    NOIR | ROSE
    BLEU CLAIR | ORANGE
    BLEU CLAIR | BLANC
    VERT FONCE | BEIGE

    Ça n'est pas évident à expliquer et il n'y a pas qu'un seul tri possible, mais en gros il faudrait avoir le moins de fois de bobine (fil dessus) et de canette (fil dessous) à changer.
    Serait-il possible d'avoir de l'aide pour transcrire le tri de ces 2 colonnes en vba sous excel? une ligne représente un produit, avec en 1ere colonne le fil du dessus et en seconde colonne le fil du dessous.

    Par avance merci pour votre aide et bonne journée

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ça n'est pas évident à expliquer et il n'y a pas qu'un seul tri possible, mais en gros il faudrait avoir le moins de fois de bobine (fil dessus) et de canette (fil dessous) à changer.
    Serait-il possible d'avoir de l'aide pour transcrire le tri de ces 2 colonnes en vba sous excel? une ligne représente un produit, avec en 1ere colonne le fil du dessus et en seconde colonne le fil du dessous.
    Si vous avez difficile à expliquer quelques choses qui vous est familier, comment voulez-vous que l'on vous aide.
    Publiez une illustration en deux parties. A gauche par exemple, l'état avant le tri et à droite la manière dont vous souhaitez l'obtenir mais d'après le peux que je comprenne, je suppose qu'il s'agit d'un tri hiérarchique (multi-colonnes)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour,

    premières réflexions :

    1. si le fil du dessus est prioritaire, on a comme contrainte de regrouper les lignes sur la première colonne (les blancs ensemble, les orange ensemble etc.) On aura donc dans l'exemple quoi qu'il arrive 11 changements de cannette du dessus puisqu'on a 11 couleurs différentes en colonne 1;

    2. du coup les lignes en double ne comptent pas ; comme on a déjà regroupé sur la colonne 1, on va forcément les laisser ensemble (sinon on ajoute un changement de bobine) donc elles se comportent comme une seule ligne.

    3. les lignes orphelines (couleur unique dessus/dessous comme VERT FONCE | BEIGE coutent quoi qu'il arrive 2 changements de bobine. On les regroupe à la fin pour ne pas qu'elles coupent par ailleurs une chaine d'optimisation.

    4. Ce qui est important pour les autres lignes, c'est qu'une des couleurs de dessous (colonne de droite) soit partagée avec une autre couleur de dessus (qu'elles aient un "voisin" possible) pour gagner un changement de bobine, et même 2 voisins (un avant et un après) pour n-2 couples de couleur (ou aura quoi qu'il arrive 2 chargements pour la première ligne, et pas de changement après la dernière).


    4. Le nombre de lignes dans une couleur du dessus n'a pas d'importance, du moment qu'on a décidé de les traiter à la suite. Donc la remarque " je prends tous les produits avec le 1er fil dessus qui est le blanc car il a le plus de produit à piquer" n'est pas pertinente. Là par exemple il est plus pertinent de commence par le NOIR dessus, parce qu'il a une seule couleur dessous (BLANC) qui permet de gagner un changement de bobine.

    5. Le nombre optimal de changement de bobine mini est égal au nombre de couples de couleurs (dans l'exemple 25), +1 pour le premier couple, +1 pour les orphelins (dans l'exemple : 1) ; donc dans l'exemple 27, dont 11 pour la bobine du dessus.

    6. Ce nombre ne pourra pas être atteint dans tous les cas : il faut que la configuration des "voisins" permette une chaine ininterrompue ; à la main j'ai réussi avec les données de l'exemple (sauf erreur), ce qui est 2 de mieux que la solution proposée :

    NOIR | BLEU MOYEN
    NOIR | ROSE
    NOIR | BLANC
    BLEU CLAIR | BLANC
    BLEU CLAIR | ORANGE
    BLEU FONCE | ORANGE
    BLEU FONCE | ORANGE
    BLEU FONCE | BLANC
    BLEU FONCE | BLANC
    BLEU MOYEN | BLANC
    GRIS | BLANC
    ORANGE | BLANC
    ORANGE | BLANC
    ORANGE | JAUNE
    ORANGE | BLEU FONCE
    ORANGE | BLEU FONCE
    VIOLET | BLEU FONCE
    VIOLET | ORANGE
    VIOLET | BLANC
    VIOLET | GRIS
    BLANC | GRIS
    BLANC | BLANC
    BLANC | BLANC
    BLANC | BLANC
    BLANC | BLANC
    BLANC | BLANC
    BLANC | BLANC
    BLANC | VERT CLAIR
    BLANC | VERT CLAIR
    BLANC | BLEU FONCE
    BLANC | NOIR
    BLANC | NOIR
    BLANC | NOIR
    ROUGE | NOIR
    BEIGE | NOIR
    BEIGE | BLANC
    BEIGE | BLANC
    VERT FONCE | BEIGE

    Reste à voir comment automatiser ça

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 25
    Par défaut
    Oui voila c'est exactement @tête de chat
    Ça n'est pas que c'est compliqué à expliquer, le but est d'avoir un minimum de changement de bobine et de canette, c'est plutôt que c'est compliqué à mettre en œuvre en vba.
    L’ordre initial n'a pas d'importance, les lignes pourraient être toute mélangées.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 25
    Par défaut
    Par contre je n'arrive pas à comprendre comment vous en êtes venu à vous dire qu'en commençant par le noir, on optimisait plus.
    En réalité oui je vois que vous avez raison, mais la logique pour y arriver, je n'ai pas compris.

    Quelqu'un aurait une idée pour retranscrire cela en vba ?
    Au départ je partais sur un tableau temporaire par coloris de dessus, mais le nombre de tableau ne sera pas toujours le même.
    Ensuite j'allais comparer les deux 1er tableau en regardant essentiellement le cuir du dessous et si je trouve une correspondance, c'est par cette ligne que je termine.
    Ensuite même chose avec les tableaux 2 et 3 en excluant le coloris de correspondance sur la boucle d'avant pour ne pas qu'il me rebouge ces lignes. et ça sur tous les tableaux temporaire.
    Mais c'est beaucoup moins optimisé, et je n'arrive pas à aller au bout de la démarche.

  6. #6
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour,

    le noir a comme couleurs de dessous bleu moyen, rose, et blanc. Seul blanc est partagé avec d'autres couleurs je ne pourrai optimiser qu'une seule fois. Pour qu'une optimisation soit possible complétement sur une couleur, il faut qu'elle ait 2 couleurs de dessous partagées pour pouvoir faire un truc du style

    ...
    C1|CA
    C2|CA
    ...
    C2|CX
    C3|CX
    ...

    (ce que j'essayais d'expliquer dans mon point 4)

    Sinon on peut en avoir 2 sans "perte" avec une seule couleur partagée : une au début, et une à la fin de la séquence, les orphelines venant ensuite dans tous les cas.

    Je n'ai pas encore attaqué le code mais je compte tenter, a priori par force brute

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 25
    Par défaut
    Ah oui d'accord! en effet cette fois ci je comprend votre raisonnement.

Discussions similaires

  1. Tri particulier dans une requête
    Par guilou339 dans le forum PL/SQL
    Réponses: 29
    Dernier message: 17/11/2022, 09h42
  2. Tri particulier dans un état
    Par clonezoë dans le forum IHM
    Réponses: 5
    Dernier message: 28/11/2007, 12h30
  3. Problème de tri dans excel
    Par fabou3377 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/10/2006, 06h20
  4. Réponses: 6
    Dernier message: 01/06/2006, 15h11
  5. Tri dans excel ?
    Par Paulkouhan dans le forum C++Builder
    Réponses: 9
    Dernier message: 11/10/2005, 08h27

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