Faire un histogramme automatiquement

Fermé
PSud Messages postés 1275 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 30 octobre 2023 - 2 mai 2023 à 16:51
PSud Messages postés 1275 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 30 octobre 2023 - 3 mai 2023 à 15:39

Bonjour,

J'ai une base de données ACCESS 2021 comportant une table simple nommée T :

Champ 1 : Nom du composant = T.Nom

Champ 2 : prix du composant = T.Prix

Je souhaite établir automatiquement un graphique  (histogramme) qui compterait automatiquement le nombre de composant dont le prix est compris entre borne1 et borne2 (première barre), borne2 et borne3 (deuxième barre), borne3 et borne4 (troisième barre) etc. sachant que le nombre de barres est fini et que les valeurs des bornes peuvent être elles-mêmes dans une table définie et remplie au préalable.

J'ai beau triturer ACCESS dans tous les sens (VBA et/ou Macro), je n'arrive pas à trouver comment afficher cet histogramme sans faire les calculs à la main.

Merci d'avance à ceux qui me proposeront une solution.

Cordialement
Windows / Firefox 112.0

4 réponses

PSud Messages postés 1275 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 30 octobre 2023 515
3 mai 2023 à 08:14

Merci Ozone, je vais essayer ça ce matin.

Cordialement

0
PSud Messages postés 1275 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 30 octobre 2023 515
3 mai 2023 à 10:03

J'ai essayé mais la requête ne retourne rien. Peut-être ai-je mal compris comment elle fonctionne. Si vous avez le temps de tester, ma base de test est disponible ici :

https://we.tl/t-OYEHK9Siab

Merci d'avance

0
PSud Messages postés 1275 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 30 octobre 2023 515
Modifié le 3 mai 2023 à 15:41

J'ai juste apporté une petite correction et la requête fonctionne ! Il fallait juste changer le nom de la table créée par le Select dans From pour qu'il n'y ait pas de confusion avec le nom de la table Bornes.

SELECT 'Borne'& [B].[ID] AS Intervalle, B.ID, count (*) AS Nombre
FROM T, (SELECT ID, Borne FROM Bornes)  AS B
WHERE  T.Prix >= [B].[Borne] And (T.Prix)<(SELECT Borne FROM Bornes WHERE ID = B.ID + 1)
GROUP BY Bornes.ID;

Merci pour ton aide qui m'a permis de résoudre mon problème.

Cordialement

0
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
2 mai 2023 à 21:49

Bonjour,

Pour réaliser cela dans Access, vous pouvez utiliser une requête qui calcule le nombre de composants pour chaque intervalle de prix et renvoie les résultats à un formulaire qui affiche l'histogramme. Voici les étapes à suivre :

1. Créez une table nommée "Bornes" qui contient les bornes d'intervalle de prix. Cette table doit avoir une colonne "Borne" qui contient les valeurs des bornes.

2. Créez une requête qui joint la table "T" avec la table "Bornes" pour calculer le nombre de composants pour chaque intervalle de prix. Voici un exemple de requête :

SELECT 

    'Borne ' & [Bornes].[ID] AS [Intervalle], 

    Count(*) AS [Nombre de composants]

FROM 

    T, 

    (SELECT 

        ID, 

        Borne 

    FROM 

        Bornes) AS Bornes 

WHERE 

    T.Prix >= Bornes.Borne AND T.Prix < (SELECT Borne FROM Bornes WHERE ID = Bornes.ID + 1) 

GROUP BY 

    [Bornes].[ID]

Cette requête renvoie le nombre de composants pour chaque intervalle de prix en utilisant la table "Bornes" pour définir les bornes d'intervalle.

3. Créez un formulaire basé sur la requête précédente. Ajoutez un contrôle graphique de type histogramme et configurez-le pour afficher les données de la requête.

4. Dans les propriétés du graphique, définissez l'axe des X pour afficher les intervalles de prix et l'axe des Y pour afficher le nombre de composants.

5. Exécutez le formulaire pour afficher l'histogramme.

J'espère que cela vous aidera à résoudre votre problème. N'hésitez pas à me faire savoir si vous avez des questions supplémentaires.

Source: ChatGPT


-1