Tracer un diagramme camembert

NB: Contrairement aux autres, cette procédure n'est pas de moi; je l'avait trouvée il y a quelques années dans un livre (je ne me souvient plus lequel); je pense qu'elle interessera tout ceux qui utilisent VB pour faire des bases de données.

Mode d'emploi
Le code
Explications

Mode d'emploi - Exemple

Pour dessiner un camembert, il faut taper :

Call Camembert (Image, Table(), Texte$(), Num%, x%, y%, Ra%, ExPiece%)

La procédure "Camembert" admet de nombreux paramétres, dont nous allons préciser le rôle.

Image : Nom du contrôle dans lequel vous voulez dessiner le camembert. Par exemple 'image1'.
Attention ! Il faut que la propriété "autoredraw" du contrôle d'image soit réglée à "true".

Table() : Tableau de "Num%" éléments (si Num%=3, le tableau devra avoir 3 éléments), contenant des nombres (entier, réels, ... peut importe) servant à pondérer la taille des parts du camembert.

Texte$() : Tableau de "Num%" éléments (si Num%=3, le tableau devra avoir 3 éléments), contenant des chaînes de caractères. Ce sont ces chaînes qui seront affichés à côté des parts de camembert.

Num% : Nombre de parts du camembert.

x% et y% : coordonnées du centre du camembert.

Ra% : Rayon du camembert.

ExPiece% : Paramétre servant à détacher une part du camembert.

Si ExPiece% = -1, la plus grosse part du camembert sera détachée.

Si ExPiece% = 0, aucune part du camembert ne sera détachée.

Si 0 < ExPiece% < Num%+1, la part correspondant à Table(ExPiece%) et Texte$(ExPiece%) sera détachée.

Exemple d'utilisation :
  Const Num% = 3 'Il y a trois données
  ReDim Table(Num%) ' ATTENTION !!! Ne pas
                    ' specifier de "AS Integer"
                    ' ou "AS Long" ou ...
  ReDim Texte$(Num%)
  ' On remplit les tableau de données :
  Table(1) = 70: Texte$(1) = "Anglais"
  Table(2) = 20: Texte$(2) = "Allemand"
  Table(3) = 10: Texte$(3) = "Italien"
  ' On appelle la procédure pour dessiner le camembert :
  Call Camembert(Image1, Table(), Texte$(),
Num%, 2000, 2000, 1000, -1)
On obtient le résultat suivant :


Le code


Explications

On s'en sort en utilisant la fonction "circle" qui permet de traver des secteurs angulaires (les parts), ainsi que les fonctions trigonométriques (sin, cos) pour placer les textes correctements.
L'angle de chaque part est proportionnel au nombre contenu dans la tableau "Table()".
A noter les méthodes "CurrentX" et "CurrentY" qui détérmine les coordonnées où seront affichées les données textes utilisées avec la méthode "Print".