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

VBA Access Discussion :

fonction de recherche de plus proche valeur d'un String par ordre alphabétique [AC-2003]


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 84
    Points : 35
    Points
    35
    Par défaut fonction de recherche de plus proche valeur d'un String par ordre alphabétique
    Bonjour à tous

    Je voudrais savoir s'il existe une fonction permettant de trouver parmis une liste de String, celle se situant, par ordre alphabétique, juste avant, ou juste après un critère donné par l'utilisateur. Je m'explique.


    J'ai une table T_Salarie, contenant un No_Salarie ainsi qu'un Nom_Salarie. Le No_Salarie est utilisé dans une autre table servant d'association. Quand j'affiche les valeurs de cette table association, elles sont pour l'instant triées par ordre croissant de No_Salarié. Or, je souhaiterai plutôt qu'elles soient triées par ordre alphabétique de Nom_Salarie. Problème : le champ Nom_Salarie n'est pas dans la table association.

    Mon tri se faisant dans la requête SQL d'un Recordset, je ne vois pas bien comment passer par la table T_Salarie, aussi je vois deux solutions possibles :
    - la plus simple consisterait à entrer le Nom_Salarie dans ma table association, et trier les valeurs sur ce champ, mais cette solution n'est pas très propre puisque mes noms de salariés seraient à deux endroits différents de ma base.
    - plus propre, mais plus compliqué, je pourrai, plutôt que d'utiliser un numéro automatique pour mes No_Salarie, les attribuer en fonction du nom de salarié. Ainsi, j'aimerai à chaque nouveau salarié, parcourir la table salarié, trouver celui se situant juste avant par ordre alphabétique, attribuer son numéro + 1 au nouveau salarié, et incrémenter de 1 le numéro de tous les salariés suivants. Vous voyez l'idée ?

    (Par exemple, si j'ai une table contenant les valeurs suivantes :
    NoSalarie = 1 ; Nom_Salarie = a
    NoSalarie = 2 ; Nom_Salarie = c

    Je souhaite ajouter le salarié b. Je parcours ma table, trouve celui se situant juste avant (a), attribue à mon nouveau salarié la valeur du No_Salarie de a + 1 (donc 2), et incrémente de 1 les suivants (donc No_Salarie de c devient 3). On aurait ainsi :
    NoSalarie = 1 ; Nom_Salarie = a
    NoSalarie = 2 ; Nom_Salarie = b
    NoSalarie = 3 ; Nom_Salarie = c)


    Seulement j'ignore complètement comment trouver le nom de salarié se situant juste avant... =/


    Si vous savez comment faire, ou avez une toute autre idée pour résoudre mon problème (qui est juste, à la base, de trier par ordre alphabétique...), je suis preneuse \o/ !




    .

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 351
    Points
    34 351
    Par défaut
    salut,
    une piste à voir :
    Max() sur un champ texte fonctionne aussi

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 84
    Points : 35
    Points
    35
    Par défaut
    Ah, ça peut être intéressant, en effet.
    Mais comment l'utiliser ?
    Un max sur mon champ Nom_Salarie me donnera le tout dernier de ma base, et non pas celui qui précède la nouvelle valeur...
    Ou alors comparer le nouvel enregistrement avec chaque Nom_Salarie présent dans ma base, un par un ? Pourquoi pas, mais comment fait-on pour comparer deux String ? D'après l'aide d'Office, max ne prend qu'un seul argument..

    .

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 351
    Points
    34 351
    Par défaut
    en plus de max, tu peux mettre un critère where
    qu'il s'agisse d'un strcomp, instr ou un simple >

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 84
    Points : 35
    Points
    35
    Par défaut
    Tu veux dire avec une instruction SQL ?
    J'ai jamais su faire, ça... éè

    Comment récupérer la valeur d'un max dans ce genre d'instruction ? Ni les RunSQL ni les Execute ne fonctionnent...
    J'ai essayé avec un DMax ayant comme critere "Nom < " & Me.Nom , mais il me marque "Opération annulée".

    .

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 84
    Points : 35
    Points
    35
    Par défaut
    Ah, j'ai posté trop vite, il semblerait que ça marche avec un StrComp =)

    Merci beaucoup pour l'aide

    .

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

Discussions similaires

  1. Recherche des plus proches voisins dans un espace variable à K dimensions parmis N
    Par JeromeBcx dans le forum Algorithmes et structures de données
    Réponses: 34
    Dernier message: 26/06/2008, 17h46
  2. Rechercher la plus grande valeur
    Par pelloq1 dans le forum Requêtes
    Réponses: 5
    Dernier message: 03/03/2008, 15h50
  3. Réponses: 5
    Dernier message: 08/12/2007, 20h15
  4. Rechercher la plus proche valeur dans un tableau
    Par neoMatrix dans le forum MATLAB
    Réponses: 2
    Dernier message: 16/05/2007, 11h45
  5. rechercher la plus proche valeur dans un tableau ?
    Par Slumpy dans le forum VB.NET
    Réponses: 3
    Dernier message: 13/04/2007, 14h06

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