Trier en ignorant les cellules vides

Résolu/Fermé
Aeris427 Messages postés 4 Date d'inscription samedi 19 janvier 2013 Statut Membre Dernière intervention 19 janvier 2013 - 19 janv. 2013 à 15:08
Aeris427 Messages postés 4 Date d'inscription samedi 19 janvier 2013 Statut Membre Dernière intervention 19 janvier 2013 - 19 janv. 2013 à 19:18
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

jee pee Messages postés 39632 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 avril 2024 9 234
19 janv. 2013 à 15:13
Salut,

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

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

cdlt
0
Tessel75 Messages postés 192 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 19 janvier 2013 22
19 janv. 2013 à 16:58
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
Tessel75 Messages postés 192 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 19 janvier 2013 22
19 janv. 2013 à 18:01
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
Aeris427 Messages postés 4 Date d'inscription samedi 19 janvier 2013 Statut Membre Dernière intervention 19 janvier 2013
19 janv. 2013 à 18:24
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
Aeris427 Messages postés 4 Date d'inscription samedi 19 janvier 2013 Statut Membre Dernière intervention 19 janvier 2013
19 janv. 2013 à 17:22
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
Aeris427 Messages postés 4 Date d'inscription samedi 19 janvier 2013 Statut Membre Dernière intervention 19 janvier 2013
19 janv. 2013 à 19:18
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