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 :

Liste triée perturbant une recherche dichotomique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2013
    Messages : 11
    Par défaut Liste triée perturbant une recherche dichotomique
    Bonjour,

    Pour faire simple, proposant une extraction d'informations techniques issue d'une base de données Oracle, je mets en tableau des informations de caractéristique technique d'un équipement.
    Les concepteurs du logiciel de GMAO ont utilisés des astuces pour permettre d'optimiser les informations stockées.
    Chaque équipement dispose d'une classe et d'une sous classe renseignée ou non, sur chaque classe nous définissons des propriétés pour identifier une caractéristique technique.
    Seule les propriétés renseignées individuellement sont stockées. Par contre une sous classe hérite des propriétés de la classe, de ce fait une valeur associée à la propriété de la sous classe est affiché pour tous les équipements tout en étant stockée une seule fois - gain non négligeable.

    Lors de l'utilisation du programme Excel, selon les critères de sélection d'équipement, j'interroge la base Oracle sur plusieurs tables et effectue une mise en forme tabulaire des données.
    Pour extraire les données de propriétés techniques, je concatene le code de la propriété, le code de la classe, le code de l'équipement ou le code de la sous-classe, en regard de la valeur stockée.
    Soit : "propriété classe équipement" ou "propriété classe sous-classe"

    Une recherche dichotomique permet de trouver rapidement les informations, sauf quand il y a une aberration dans le tri !

    Ci-dessous une partie de la liste (il y a plus de 43000 lignes) :
    IDCNTRGLGREQFA-GR-000001246 ==> IDCNTRGL GR EQFA-GR-000001246 propriété classe équipement
    IDCNTRGLGREQFA-GR-000001247
    IDCNTRGLGREQFA-GR-000001248
    IDCNTRGLGRGR-BLINDALU ==> IDCNTRGL GR GR-BLINDALU propriété classe sous-classe
    IDCNTRGLGRGR-CAPALDI
    IDCNTRGLGRGR-FIRAC/MEMC
    IDCNTRGLGRGR-MEMC
    IDCNTRGLGRGR-S-CLEMESSY
    IDCNTRGLGRGR-S-CLEMESSY-V2
    IDCNTRGLGRGR-SEFALU
    IDCNTRGLGRGR-S-FIRAC-V2
    IDCNTRGLGRGR-S-SOTRALINOX ==> donnée recherchée
    IDCNTRGLGRGR-VERBOOM
    IDCNTRGLGSEQFA-GS-000000000
    IDCNTRGLGSEQFA-GS-000000001
    IDCNTRGLGSEQFA-GS-000000002

    Pour la sous classe GR-S-SOTRALINOX la réponse est "non-renseigné" or la ligne existe !
    Donc pourquoi un tri EXCEL ou SQL insère IDCNTRGLGRGR-SEFALU entre s-c et s-f ? quel est l'importance du signe moins par rapport aux lettres ?

    Pour contrer ce problème, lorsque l'écart de recherche est inférieur à 10, je teste chaque ligne entre les bornes et trouve la bonne occurence !

    Si vous avez une explication rationnelle ou si je n'ai pas été assez clair, j'attends vos avis.
    Cordialement Jean-Luc

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Bonjour,

    On dirait qu'il ignore le "-".
    on a bien se entre sc et sf.
    j'ai fait un test en rajoutant un sd et un s-d, les deux vont s'insérer entre s-c et se.

    edit: on remplaçant "-" par "_" là le tri se fait bien.

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2013
    Messages : 11
    Par défaut
    Oui en changeant le caractère, mais ce sont des codes utilisés dans la GMAO et le souligné ne se voit pas forcément dans des champs encadrés.

    Mais c'est bien la même conclusion, le signe moins n'est pas interprété lors d'un tri, CQFD.

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Il y a d'autres caractères que tu peux utilisé si le "_" ne se voit pas bien, ex: "/"
    Tiens le double "-" (donc "--") marche bien avec le tri ...

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonsoir,

    Une autre façon d'accéder rapidement aux infos consisterait à utiliser l'objet Dictionary (qui utilise en interne le hash-code).

    Boisgontier
    http://boisgontierjacques.free.fr

  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 Ordre de tri Excel
    Bonjour,

    Pour confirmer :
    Excel trie les données dans l'ordre suivant*:
    0 1 2 3 4 5 6 7 8 9 (espace) ! " # $ % & ( ) * , . / : ; ? @ [ \ ] ^ _ ` { | } ~ + < = > A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

    Les apostrophes (') et les tirets (-) sont ignorés, à une exception près : si deux chaînes de texte sont identiques à l'exception d'un trait d'union, le texte comportant le trait d'union est trié en dernier.
    (lien d'origine plus valide, désolé)
    eric

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/04/2013, 06h41
  2. Recherche d'un élément dans une liste triée (vitesse)
    Par Rodrigue dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 18/05/2006, 09h23
  3. Réponses: 8
    Dernier message: 11/05/2006, 11h04
  4. liste deroulante pour effectuer une recherche
    Par pierrot67 dans le forum Bases de données
    Réponses: 2
    Dernier message: 29/04/2006, 09h27
  5. Trie d'une liste d'array
    Par noOneIsInnocent dans le forum Collection et Stream
    Réponses: 15
    Dernier message: 06/01/2006, 12h05

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