Trier en ignorant les cellules vides

Résolu
Aeris427 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
Aeris427 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je souhaite qu'Access trie mes enregistrements sur 3 champs.

Ces 3 champs sont de même type/format.

Si une cellule est vide dans le premier champs, je veux qu'il n'en tienne pas compte et prenne dans ce cas en compte la valeur du second champ pour effectuer le tri, et si celui-ci est vide, qu'il prenne en compte la valeur du 3ième.

Les cellules vides peuvent se trouver sur chacun des 3 champs mais jamais un enregistrement ne contient ces 3 champs vides en même temps, il y a forcément une valeur à trier.

Je ne trouve pas quel termes peuvent traduire cette idée dans ma requête.

D'avance, merci de votre aide.

4 réponses

  1. jee pee Messages postés 31928 Date d'inscription   Statut Modérateur Dernière intervention   9 994
     
    Salut,

    Pas sur que cela existe sur Access, sur Oracle je tenterais un :

    order by nvl(champ1,nvl(champ2,champ3))

    cdlt
    0
  2. Tessel75 Messages postés 198 Statut Membre 22
     
    Bonsoir,
    Si tu fais un tri "classique",de type : champs1, champs2, champs3, tu auras tous les champs vides de champs1 en tête, puis les champs2, et encore après les champs3;
    La seule solution que j'imagine c'est de prévoir
    champs4 = Champs1 & camps2 & champs3
    et de trier selon champs4
    Comme champs1 ou champs2 sera null tu n'auras pas à craindre un espace qui viendrait perturber ton tri.
    0
    1. Tessel75 Messages postés 198 Statut Membre 22
       
      Je reprends parce que lorsque j'ai écrit la réponse précédente tu n'avais pas indiqué tes champs ni leur nature. Maintenant que c'est fait, il me semblerais plutôt qu'il te faut un iif() avec une règle de sélection pour indiquer la quelle des 3 valeurs à prendre en compte et trier sur celle-là.
      Bonne suite
      0
    2. Aeris427 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci Tessel75, c'est vrai, j'avais déjà réfléchi au fait qu'il me fallait exprimer une condition. Je tente ça demain. Il me semble que ça devrait pouvoir fonctionner en créant comme tu le suggères un 4ieme champ. Je te dis ça dès que j'ai vérifié l'idée.
      Merci.
      0
  3. Aeris427 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
     
    Humph...

    J'ai essayé une ligne

    ORDER BY nvl(Comptes.[Date réelle],nvl(Comptes.[Date présumée], Comptes.[Date rappro]));

    Mais Access me répond Fonction"nvl" non définie dans l'expression.

    Quelque part je me dis qu'au moins il a reconnu la fonction mais que je l'utilise mal...

    Et l'aide d'Access ne connaît même pas NVL, je suis pas aidée !

    Je continue mes recherches.
    0
  4. Aeris427 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
     
    Résolu (grâce à l'aide d'un ami à moi, mais je vais mettre la solution sur le forum pour ceux qui rencontrerait le même problème)

    ORDER BY NZ(nz(Comptes.[Date réelle], Comptes.[Date présumée]), Comptes.[Date rappro]), nz(Comptes.[Date présumée], Comptes.[Date rappro]), Comptes.[Date rappro];

    Voilà

    Merci à tous :)
    0