begin process at 2012 05 26 08:41:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

Access

 > 

Functions

 > 

Afficher la valeur minimale entre plusieurs champs/colonnes en ACCESS


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Afficher la valeur minimale entre plusieurs champs/colonnes en ACCESS

mercredi 15 avril 2009 à 17:17:16 | Afficher la valeur minimale entre plusieurs champs/colonnes en ACCESS

mladenski

Bonjour. J'ai le problème suivant sur ACCESS:

J'effectue une requête qui me donne plusieurs champs contenant chacun un prix relatif à une même opération (donc pas possibilité de faire autrement au niveau conceptuel, il me faut bien plusieurs champs avec plusieurs tarifs pour chaque partenaire).
J'aimerais rajouter un champs supplémentaire (MIN) qui affichera le prix minimal de ces champs mais je n'arrive pas à le faire sur ACCESS. J'ai essayé avec la fonction Min et MinDom, mais je pense qu'elles ne marchent que pour une seule colonne. Dès qu'on doit comparer plusieurs colonnes ces fonctions s'avèrent inutiles.

En fait, j'ai déjà rencontré ce problème auparavant et je l'ai résolu avec des VraiFaux (iif). Bon, c'est pas trop compliqué de comparer deux colonnes mais maintenant c'est presque impossible comme j'ai plusieurs colonnes.

Un petit aperçu sur Excel:

 Prix Partenaire 1Prix Partenaire 2Prix Partenaire 3Prix Partenaire 4MIN
Opération 11 ¤54 ¤4 ¤4 ¤1 ¤
Opération 2213 ¤6 ¤2 ¤3 ¤2 ¤
Opération 38 ¤7 ¤67 ¤2 ¤2 ¤
Opération 48 ¤56 ¤4 ¤2 ¤2 ¤
Opération 596 ¤6 ¤4 ¤6 ¤4 ¤
Opération 648 ¤8 ¤5 ¤1 ¤1 ¤
Opération 748 ¤4 ¤1 ¤2 ¤1 ¤

Merci de votre aide.
jeudi 16 avril 2009 à 10:34:24 | Re : Afficher la valeur minimale entre plusieurs champs/colonnes en ACCESS

mladenski

J'ai déjà trouvé une solution et je la poste pour tous ceux qui se trouve dans la même solution que moi.
En fait, il faut créer une fonction en VBA. Sur le net j'ai trouvé une fonction qui retrouve la valeur maximale à partir de plusieurs champs de valeurs:

Public Function VariableMax(ParamArray LesVariables() As Variant)
Dim intVariable As Integer
Dim varMax As Double

For intVariable = 1 To UBound(LesVariables())
     If LesVariables(intVariable) > varMax Then varMax = LesVariables(intVariable)
Next intVariable
VariableMax = varMax
End Function


Je l'ai adaptée à mes besoins parce que dans la comparaison je voulais ignorer les valeurs zéro et bien sûr je voulais la valeur minimale.

Public Function VariableMin(ParamArray LesVariables() As Variant)
Dim intVariable As Integer
Dim varMin As Double
varMin = LesVariables(0)

For intVariable = 0 To UBound(LesVariables())
     If LesVariables(intVariable) < varMin Then
        If LesVariables(intVariable) <> 0 Then
            varMin = LesVariables(intVariable)
        End If
     End If
Next intVariable
VariableMin = varMin
End Function

Maintenant, il me reste à trouver le nom du champs. Si quelqu'un a une idée, allez-y. Merci.

jeudi 16 avril 2009 à 12:02:23 | Re : Afficher la valeur minimale entre plusieurs champs/colonnes en ACCESS

mladenski

Voili, voilà. J'ai la fonction suivante qui me convient parfaitement. Bon, je ne récupère pas le nom des champs et je les rentrent en dur dans une matrice mais pour l'instant ça marche.

Public Function ChampsMin(ParamArray LesVariables() As Variant)

' Fonction qui compare plusieurs champs et donne le champs de la valeur minimale en ignorant les zéros

Dim intVar As Integer

Dim varMinTab As Double

Dim i, j As Integer

Dim TabNoms

TabNoms = Array("Champs1", "Champs2", "Champs3", "Champs4", "Champs5", "Champs6")

varMinTab = LesVariables(0)

i = 0

j = 0

For intVar = 0 To UBound(LesVariables())

If LesVariables(intVar) = 0 Then

j = j + 1

End If

If LesVariables(intVar) < varMinTab And LesVariables(intVar) <> 0 Then

i = i + 1 + j

varMinTab = LesVariables(intVar)

End If

Next intVar

If i > 5 Then

i = 5

End If

ChampsMin = TabNoms(i)

End Function

vendredi 17 avril 2009 à 13:13:24 | Re : Afficher la valeur minimale entre plusieurs champs/colonnes en ACCESS

aieeeuuuuu

Réponse acceptée !
Bonjour,

pourquoi pas possibilité de faire autrement au niveau conceptuel ?

personnellement, je pense qu'il aurait été préférable de faire 3 tables :
un table "operation" (IDOperation, Nom)
une table "partenaire" (IDPartenaire, Nom)
et un table "prix" (IDOperation, IDPartenaire, Prix)

et avec ca, plus de souci pour faire la requete, mais surtout, plus de souci le jour ou il faudra ajouter un partenaire. car avec la structure actuelle, ajouter un parternaire, oblige a modifier la strucuture de la base, ce qui n'est vraiment pas une bonne idee (il faudra d'ailleur modifier la requete mentionnée ci-dessus...)
vendredi 17 avril 2009 à 14:17:44 | Re : Afficher la valeur minimale entre plusieurs champs/colonnes en ACCESS

mladenski

Faire 3 tables revient au même (je précise néanmoins que je traville sur des requêtes et non pas sur des tables, les tables d'information étant des fichiers liés sur un serveur). La fonction Min(Max) classique ne me donnera qu'une seule ligne et moi,je veux comparer plusieures colonnes et afficher toutes les lignes de la requête. En gros, les tables (ou requêtes) qui contiennent les infos des partenaires auront un champs/colonne "PRIX" que je veux comparer. Peu importe s'il est dans la même table/requête ou pas, la fonction Min(Max) ne me sert pas.
Puis, pour le rajout des partenaires, ce n'est vraiement pas compliqué (je viens même de rajouter un). Il faut tout de même connaître la fonction, j'admets, mais ce n'est pas du tout compliqué.
Merci quand-même pour l'intérêt.
vendredi 17 avril 2009 à 17:59:47 | Re : Afficher la valeur minimale entre plusieurs champs/colonnes en ACCESS

aieeeuuuuu

Réponse acceptée !
non, faire 3 tables ne reviendrait pas du tout au meme, car alors, on pourrait utiliser la fonction MIN, avec laquelle on pourrait quand même sortir plusieurs resultats en faisant un "group by".

pour l'ajout de partenaire, je ne parlais pas de complexité, mais plutot de souci : quand on change la structure de la base, les requetes qui y font reference pourraient ne plus fonctionner de la meme facon.
je ne connais pas les tenants et aboutissants, mais devoir modifier la structure d'une base de données pour ajouter un partenaire n'est pas une bonne solution.





vendredi 17 avril 2009 à 21:31:17 | Re : Afficher la valeur minimale entre plusieurs champs/colonnes en ACCESS

mladenski

D'accord pour la solution.

Effectivement, dans un cas simple comme ça (opération, partenaire, prix) il faudrait faire cela. Maintenant, en termes de visibilité et de représentation, je préfère la première solution parce que les utilisateurs ont besoin de voir tout le raisonnement càd d'avoir à tout moment sous leurs yeux combien ça coûte si on passe par le premier partenaire, le second etc...et ceci en une seule ligne par opération. En plus, quand j'ai dis 'opération' je voulais simplifier. Il s'agit en fait d'une commande. Alors il faut compter des miliers et des miliers de lignes par mois. Si on les multiplie par le nombre de partenaires (puisqu'on voudra voir le tarif de chacun et en plus avoir le MIN) ça va faire un peu trop.

Mais, effectivement j'ai appris des choses. Merci pour les réponses et bon week-end!
Cordialement
lundi 20 avril 2009 à 09:54:00 | Re : Afficher la valeur minimale entre plusieurs champs/colonnes en ACCESS

aieeeuuuuu

mais de rien...


je me permet quand meme d'insister, faire trois tables n'empeche pas de présenter un tableau tel qu'il est au dessus avec une requete assez simple. d'autre part, si vous avez "des milliers et des milliers de lignes par mois", mieux vaut avoir une base bien conçue au départ, sinon les perfs pourrait gener (surtout sous access). et les eventuelles evolutions risquent fort d'etre douloureuses.

Je ne sais pas ou vous en etes dans votre projet, mais si vous en etes encore en phase d'analyse, je pense qu'il n'est pas trop tard pour reconsiderer la chose...


lundi 20 avril 2009 à 10:30:20 | Re : Afficher la valeur minimale entre plusieurs champs/colonnes en ACCESS

mladenski

Bonjour.
Tous les jours la boîte perds de l'argent, alors on s'en passe de la phase d'analyse. L'outil démontre bien les différences et là où l'on peut agir.
A long terme, la solution sera de ne pas du tout utiliser d'access.

Cordialement

lundi 20 avril 2009 à 10:53:51 | Re : Afficher la valeur minimale entre plusieurs champs/colonnes en ACCESS

aieeeuuuuu

ha oui...

les contextes difficiles ou il faut faire vite, et on fera bien plus tard...

je connais aussi :)

bonne continuation

1 2

Cette discussion est classée dans : access, champs, partenaire, colonnes, opération


Répondre à ce message

Sujets en rapport avec ce message

Saisie dans un champ de formulaire vers BDD sous Access [ par alala ] Bonjour tt le monde!   Je débute en Access et je dois créer un formulaire de saisie du personnel et un formulaire de visualisation du personnel.<BR Manipulation des champs OUI/NON [ par impact74 ] Bonjour à toutes et à tous !!!Je bloque sur un problème, je vais tenter d'être claire.J'ai une table dans access qui contient les colonnes : PC  | Ap Problème de copnversion Access -> SQL Server 2000 champs Date [ par NHenry ] BonjourJ'ai un problème : Lorsque j'utilise l'assistant d'importation/exportation de données entre Access et SQL Server 2000, il me convertit les cha Ajout d'un description d'un champs pour access en sql [ par Jbs106 ] Salutationvoilà mon souci:Dans access, quand on visualise une table, miz à part le nom et le type du champs, il est possible d'ajouter un commentaire creer une table de plus de 11 colonnes vers Access par programmation [ par romagny13 ] Bonjour,- j'utilise visual studio 2005 en C# et je passe par System.Data.OleDb pour executer ma requete  -lorsque j'execute une requete permettant de comment calculer la somme des champs en access [ par bougreine ] merci de m'aider pour calculer la somme des champs,la differance entre deux champs,le taux disponible entre deux montant prévision et réalisation en p Aide pour requete sql upadate avec access 0.7 [ par stefoulefou ] Bonjour, J'aimerai de l'aide pour faire une requête SQL avec access 0.7 J'ai une table 1 qui a une colonne avec des caractères. Mais beaucoup d'enreg INSERT SUR BASE ACCESS [ par e0601132 ] Bonjour, Je travaille sur une application excel ou je voudrais remplir à une base de données access. Dans cette base de donnée j'ai un champs numero find dans access et remplacer dans champs [ par chaudier37 ] bonjour je travaille dans access par vba et sql. je remplis mes tables par des formulaires. tout va bien. dans un formulaire j'ai trouvé une syntaxe p Access 2003 [ par standardlife1 ] Salut, g un petit problème a propos des formulaires dans Access 2003. g une table 'software' dans la quelle je fais l'inventaire de tous les software


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales