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

Excel Discussion :

Boucle de tri un peu tordu


Sujet :

Excel

  1. #1
    Membre régulier Avatar de GESCOM2000
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 107
    Points : 79
    Points
    79
    Par défaut Boucle de tri un peu tordu
    Bonjour
    besoin d'un coup de main
    point attribution 18 17 16 15 14 13 12 ...2 1

    premier serie 14 12=18 7 9=15 10=2=8 1
    deuxieme serie 11 10=3=16 14=7=9 12=15 18

    Attibution des points avec la 1er et 2eme serie
    exemple le 14 aura 18points (premiere position) dans la premier serie + 16 points (3eme position) dans la 2eme serie.

    14 = 18+16 14=34
    12 = 17+14 12=31
    18 = 17+13 18=30
    7 = 16+16 7=32
    9 = 15+16 9=31
    15 = 15+14 15=29
    10 = 14+17 10=31
    2 = 14+0 2=14
    8 = 14+0 8=14
    1 = 13+0 1=13

    11 = 18+0 11=18
    3 = 17+0 3=17
    16=17+0 16=17

    Qui donne
    *****************Resultat voulu => 14 7 12=9=10 18 15 11 3=16 2=8 1 (si 12-9-10 ordre différent pas grave car attribué points, sinon rajouter un CRIT sur une 4eme ou 5eme COL...)

    J'ai une Tab3D (la 3d pour determiner la position du tri 12=18, 9=15,10=2=3 etc..)
    je récupere les billes dans ma Tab3D

    TABDB(1 to 20, 1 to 3)

    Dans la feuille
    1er tri colB dans la feuille ou dans TABDB
    ColA ColB
    14 19
    12 17
    18 17
    7 15
    9 14
    15 14
    10 12
    2 12
    8 12
    1 11
    2eme tri colC dans la feuille ou dans TABDB
    ColA ColC
    11 1
    10 2
    3 2
    16 2
    14 3
    7 3
    9 3
    12 3.5
    15 3.5
    18 4

    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
     
    function TriSerie(Tablo,Optional ResulTab, Optional LigTri)
    'Pour faire le Tablo de travail
    Dim I as integer
    Dim Tab3D()
    Redim Tab3D(1 to 18, 1 to 2 , 1 to 2)
    'ou les récupere dans la fauille Tab3D=Sheets("Feuille").Cells(1, 1).Resize(10, 3).value...
    Call tri(Tab3D, 1, 2) 'tri xlAscending... ' Quick sort....ou n'importe
    For I = 1 To UBound(Tab3D)
        Tab3D(I, 1, 1) = TABDB(I, 1)
        Tab3D(I, 1, 2) = TABDB(I, 2)
    Next I
    Call tri(Tab3D, 2, 1)  'tri xlAscending... ' Quick sort....ou n'importe
    For I = 1 To UBound(Tab3D) 'tri xlDescending...
        Tab3D(I, 2, 1) = TABDB(I, 1)
        Tab3D(I, 2, 2) = TABDB(I, 3)
    Next I
     
    'Donc je me retrouve avec mon tablo de travail
    'La apres je cale....
     
    ResulTab=Tab3D
    End function
    Code un peut difficile mais intéréssant pour les codeurs de TAB.
    peut-être plus facile avec du DO ?
    Merci pour votre aide

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Je ne sais pas si tu te rends compte que tout ce que tu écris avec si peu d'explication est complètement incompréhensible pour quelqu'un étranger au contexte de ton processus.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre régulier Avatar de GESCOM2000
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 107
    Points : 79
    Points
    79
    Par défaut
    Désolé pour faire plus simple dans l'explication
    J'ai 2 series de nombre (Peut en avoir plusieur...)

    ColA1 a A10
    Premier serie 14 12=18 7 9=15 10=2=3 1
    ColB1 a A10 (détermine l'ordre de la colonne A1 à A10)
    19 17 17 15 14 14 12 12 12 11

    ColC1 C10
    Deuxieme serie 11 10=3=16 14=7=9 12=15 18
    ColD1 a D10 (détermine l'ordre de la colonne C1 à C10)
    1 2 2 2 3 3 3 3.5 3.5 4



    La le besoin daide par code a trouver pour l'attribution des points
    14 12=18... veut dire que 14(colA)=19(colB) et 12(ColA)=17(ColB) et 18(ColA)=17(ColB)
    11 10=3... veut dire que 11(colC)=1(colD) et 10(ColC)=2(ColD) et 3(ColC)=2(ColD)

    J'attribu des points de 18 à 0 sur les 2 series , dans l'exemple de la premiere serie 14=18, 12 et 18 = 17 et 7=16....et la 2eme serie 11=18, 10=17 3=17 16=17 14=16...

    18 17 16 15 14 13 Point attribué
    14 12=18 7 9=15 10=2=8 1

    18 17 16 15 14 Point attribué
    11 10=3=16 14=7=9 12=15 18

    14 = 18+16 total 14=34
    12 = 17+14 total 12=31
    18 = 17+13 total 18=30
    7 = 16+16 total 7=32
    9 = 15+16 total 9=31
    15 = 15+14 total 15=29
    10 = 14+17 total 10=31
    2 = 14+0 total 2=14
    8 = 14+0 total 8=14
    1 = 13+0 total 1=13

    11 = 18+0 total 11=18
    3 = 17+0 total 3=17
    16=17+0 total 16=17

    Puis dernier tri
    qui donne resultat rechercher 14 7 12=9=10 18 15 11 3=16 2=8 1 (34-32-31-31-31-31-30-29-18-17-14-14-13)

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Ca y est ... j'ai tout compris de ces fabuleuses et très claires explications.
    La solution est simple : --->> prendre une série hors série, la mettre au 3ème rang de la série en cours et mettre en rang 1 la énième série. Recommencer cette opération jusqu'à ce que la série de rang 4 et la série de rang 2 se retrouvent en rang 1.

    PS : il n'y a rien de "tordu", là dedans.
    Commence sur ces bases.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  5. #5
    Membre régulier Avatar de GESCOM2000
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 107
    Points : 79
    Points
    79
    Par défaut
    Non c'est pas ca
    Serie pris en compte pour le résultat A et C (tjs 1 a 18 et sera en ordre en fonction de la B et D)
    Donc J'attribu des points avec une trame de 18 à 0 (vari si prend que 10 élements de la serie A donc B 10 élement) à la serie A en fonction de la serie B (Numéro aléatoire en decroissant ou croissant).
    Pareil avec la 2eme ligne serie B et D
    Puis ajoute les points des 2 series qui determinera un ordre decroissant du resultat voulu.

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Non c'est pas ca
    Dommage.
    A moins que tu n'aies rien compris au mécanisme simple et très clair que je t'ai exposé.
    Il est vrai qu'il est toujours difficile, voire impossible, de comprendre ce qui n'est pas exposé de manière technique et claire (ce que j'ai des difficultés à faire)
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  7. #7
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    c'est pour un classement de pétanque?
    j'ai l'impression à la lecture des explication d'avoir reçus des boules de pétanque sur la tête re

  8. #8
    Membre régulier Avatar de GESCOM2000
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 107
    Points : 79
    Points
    79
    Par défaut
    Arrêté c'est tout simple à comprendre
    J'ai 2 series à qui j'attribue des points et les rassemble entre elles pour leur donner l'ordre.
    Simple sur le papier, mais plus dur à coder.
    En gros par CODE je travaille avec le tablo et la Col1 qui sera celle que je prends en compte en fonction des tris des autres Col2,Col3....

  9. #9
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par GESCOM2000 Voir le message
    Arrêté c'est tout simple à comprendre
    ben!!
    non

  10. #10
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par GESCOM2000 Voir le message
    Arrêté c'est tout simple à comprendre

    Le problème c'est que tu sembles être le seul à comprendre tes explications.

    Il y a donc trois possibilités :
    - Soit c'est une farce (hypothèse dont la probabilité commence à grandir dans mon esprit).
    - Soit ce forum n'est consulté que par des imbéciles qui ne comprennent rien (ce n'est pas impossible mais c'est plutôt improbable).
    - Soit tes explications ne sont pas claires (ce qui, il faut bien l'avouer, à une probabilité plus grande étant donné le nombre de personnes impliquées).

    Je te recommande une expérience : va lire tes explication à une personnes IRL qui ne connait rien à ton problème.
    Tant qu'elle ne te dit pas qu'elle a compris, tu ajoutes des explication, éclaircissements et détails.
    Une fois qu'elle a compris, tu viens ajouter tous ces éléments.

    Une chose est sûre : tant que tes explications ne seront pas claires, tu ne pourras pas avoir d'aide pour résoudre ton problème.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  11. #11
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Déjà : exposer une difficulté technique ne nécessite absolument pas de parler de "points d'attribution", etc ...
    on expose :
    -- les tenants :
    ----- les valeurs X que l'on a et où elles se trouvent (la nature de ces valeurs est ton affaire et ne nous intéresse pas). --->> on parle là de cellules (ou autres à préciser clairement)
    ----- les valeurs Y servant de facteurs d'intervention/calcul et où elles se trouvent ((la nature de ces valeurs est ton affaire et ne nous intéresse pas) --->> on parle là de cellules (ou autres à préciser clairement)
    ----- le mécanisme clairement et techniquement défini d'intervention/calcul des "facteurs" Y sur les valeurs X
    -- les aboutissants :
    ---- où (plage de cellule ou autre à préciser) afficher les résultats --->> on parle là de cellules (ou autres à préciser clairement)

    Voilà m'sieu.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  12. #12
    Membre régulier Avatar de GESCOM2000
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 107
    Points : 79
    Points
    79
    Par défaut
    Autant pour moi, j'ai rectifier les explications il y avait des erreurs maintenant c'est plus claire.
    Reliser les et là ou ça coinçait devrait être logique maintenant.
    Aller trop vite dans ces explications cache forcément des erreurs...

  13. #13
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Veux-tu bien s'il te plait ne répondre que très exactement comme je te l'ai demandé par mon message précédent ?
    A défaut de le faire (comme demandé, pas comme toi, tu le "sens") - et ce : dès ton tout prochain message - , tu voudras bien comprendre pourquoi je quitte cette discussion.
    A toi de voir, donc ...
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  14. #14
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par GESCOM2000 Voir le message
    maintenant c'est plus claire.
    Reliser les et là ou ça coinçait devrait être logique maintenant.
    Je crois que tu ne parviens pas à comprendre que ta demande n'est pas assez explicative et qu'elle est donc incompréhensible.
    Mais je pense que ça t'a été dit suffisamment. Si tu n'es pas parvenu à le comprendre, je n'insisterai pas plus.

    Bonne chance
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

Discussions similaires

  1. Outer Join un peu tordu
    Par Nico57 dans le forum Oracle
    Réponses: 4
    Dernier message: 29/03/2007, 16h17
  2. Un tri un peu particulier
    Par GregPeck dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/06/2006, 15h32
  3. [XSL] cas un peu tordu...
    Par ziller dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/12/2005, 10h30
  4. requette sql un peu tordue
    Par maxidoove dans le forum Langage SQL
    Réponses: 3
    Dernier message: 26/08/2005, 14h52
  5. Contraintes un peu tordu
    Par Jovial dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 15/04/2004, 16h57

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