Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

GRAPHIQUE EN BARRES (FAÇON EXCEL)


Information sur la source

Description

Cliquez pour voir la capture en taille normale
J'avais besoin d'un petit bout de codes pour générer des barres en compta, n'ayant rien trouvé à ce sujet voilà chose faite avec ces quelques lignes qui vous généreront un graphique assez simple mais très parlant.
 

Source

  • <%
  • ' === Déclarations =============================================
  • dim tab_achats ' 1=fournisseur ; 2=ttl
  • dim tab_temp ' idem tab_achats pour le tri
  • dim ttl_max: ttl_max=0 ' valeur max retenue
  • dim largeur_tab: largeur_tab = 600 ' largeur du tableau à l'affichage
  • dim clr_cel ' déclaration de la couleur de cellule
  • dim i,j,k,flag_etat
  • ' === Affichage ===============================================
  • ' remplissage du Tableau
  • redim tab_achats(5,2)
  • tab_achats (1,1) = "Pierre"
  • tab_achats (1,2) = 100
  • tab_achats (2,1) = "Paul"
  • tab_achats (2,2) = 20
  • tab_achats (3,1) = "Jacques"
  • tab_achats (3,2) = 40.50
  • tab_achats (4,1) = "Titi"
  • tab_achats (4,2) = 70
  • tab_achats (5,1) = "Roméo"
  • tab_achats (5,2) = 80
  • ' Récupération du montant Max
  • for i=1 to UBound(tab_achats)
  • if tab_achats(i,2) > ttl_max then ttl_max=tab_achats(i,2)
  • next
  • range_donnees ' range les données du montant le plus fort au plus faible
  • trace_graphe ' trace le graphique
  • ' === Fonctions Internes =========================================
  • Function range_donnees
  • ' tri par ordre croissant
  • j=1: redim tab_temp(1,2)
  • do while j<(UBound(tab_achats)+1)
  • flag_etat = true
  • for i=(j+1) to UBound(tab_achats)
  • if tab_achats(j,2)<tab_achats(i,2) then
  • ' échange des données
  • for k=1 to 2
  • tab_temp(1,k)=tab_achats(j,k)
  • next
  • for k=1 to 2
  • tab_achats(j,k)=tab_achats(i,k)
  • next
  • for k=1 to 2
  • tab_achats(i,k)=tab_temp(1,k)
  • next
  • flag_etat = false
  • exit for
  • end if
  • next
  • if flag_etat then j=j+1
  • loop
  • End Function
  • Function trace_graphe
  • Response.Write "<br><table align=center width="& largeur_tab &" border=0 cellpadding=0 cellspacing=0>"
  • for i=1 to UBound(tab_achats)
  • Randomize: clr_cel = Cint(255*(Rnd+1-1)) & Cint(255*(Rnd+1-1)) & Cint(255*(Rnd+1-1)) ' génération couleur Hexa
  • Response.Write "<tr>" &_
  • "<td width=200><font face='Verdana' size=2>"& tab_achats(i,1) &"&nbsp;</font></td>" &_
  • "<td>" &_
  • "<table width='"& Cint(100*(tab_achats(i,2)/ttl_max)) &"%' border=0 cellpadding=0 cellspacing=0>" &_
  • "<tr bgcolor='#"& clr_cel &"'><td><img src='vide.gif' width='100%' height=10 border=0 alt='"& FormatNumber(tab_achats(i,2),2) &" ?'></td></tr>" &_
  • "</table>" &_
  • "</td>" &_
  • "</tr>"
  • Response.Write "<tr>" &_
  • "<td><img src='vide.gif' height=5 border=0></td>" &_
  • "<td><img src='vide.gif' height=5 border=0></td>" &_
  • "</tr>"
  • next
  • Response.Write "</table>"
  • End Function
  • %>
<%

' === Déclarations =============================================
dim tab_achats	' 1=fournisseur ; 2=ttl
dim tab_temp	' idem tab_achats pour le tri
dim ttl_max:	ttl_max=0		' valeur max retenue
dim largeur_tab:	largeur_tab	= 600	' largeur du tableau à l'affichage
dim clr_cel		' déclaration de la couleur de cellule
dim i,j,k,flag_etat

' === Affichage ===============================================
' remplissage du Tableau
redim tab_achats(5,2)
tab_achats (1,1)	= "Pierre"
tab_achats (1,2)	= 100
tab_achats (2,1)	= "Paul"
tab_achats (2,2)	= 20
tab_achats (3,1)	= "Jacques"
tab_achats (3,2)	= 40.50
tab_achats (4,1)	= "Titi"
tab_achats (4,2)	= 70
tab_achats (5,1)	= "Roméo"
tab_achats (5,2)	= 80

' Récupération du montant Max
for i=1 to UBound(tab_achats)
   if tab_achats(i,2) > ttl_max	then ttl_max=tab_achats(i,2)
next

range_donnees	' range les données du montant le plus fort au plus faible
trace_graphe	' trace le graphique


' === Fonctions Internes =========================================
Function range_donnees
   ' tri par ordre croissant
   j=1: redim tab_temp(1,2)
   do while j<(UBound(tab_achats)+1)
                flag_etat = true
	for i=(j+1) to UBound(tab_achats)
		if tab_achats(j,2)<tab_achats(i,2) then
		' échange des données
		for k=1 to 2
		tab_temp(1,k)=tab_achats(j,k)
		next
		for k=1 to 2
		tab_achats(j,k)=tab_achats(i,k)
		next
		for k=1 to 2
		tab_achats(i,k)=tab_temp(1,k)
		next
		flag_etat = false
		exit for
		end if
	next
	if flag_etat then	j=j+1
   loop
End Function

Function trace_graphe
   Response.Write "<br><table align=center width="& largeur_tab &" border=0 cellpadding=0 cellspacing=0>"
   for i=1 to UBound(tab_achats)
	Randomize:	clr_cel = Cint(255*(Rnd+1-1)) & Cint(255*(Rnd+1-1)) & Cint(255*(Rnd+1-1)) ' génération couleur Hexa
	Response.Write "<tr>" &_
	"<td width=200><font face='Verdana' size=2>"& tab_achats(i,1) &"&nbsp;</font></td>" &_
	"<td>" &_
	"<table width='"& Cint(100*(tab_achats(i,2)/ttl_max)) &"%' border=0 cellpadding=0 cellspacing=0>" &_
	"<tr bgcolor='#"& clr_cel &"'><td><img src='vide.gif' width='100%' height=10 border=0 alt='"& FormatNumber(tab_achats(i,2),2) &" ?'></td></tr>" &_
	"</table>" &_
	"</td>" &_
	"</tr>"
	Response.Write "<tr>" &_
	"<td><img src='vide.gif' height=5 border=0></td>" &_
	"<td><img src='vide.gif' height=5 border=0></td>" &_
	"</tr>"
   next
   Response.Write "</table>"
End Function

%>

Conclusion

RAS, toutes est expliqué dans les codes.

have a good luck ..., Zeb13.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de Jackboy le 24/10/2003 15:27:55

un petit qqchose qui n'a pas de lien avec cette source, ton site web a un erreur dans le front !

signaler à un administrateur
Commentaire de fabrice69 le 24/10/2003 19:45:52 administrateur CS

Pas mal comme code.
Il est très utile de pouvoir afficher sous cette forme des informations chiffrées, les graphiques frappent toujours mieu à l'oeil que les valeurs.
Très bonne idée.

F___

signaler à un administrateur
Commentaire de Oscar le 24/10/2003 22:23:23

Sympa, simple et efficace !

Perso, j'avais pensé faire ça avec une petite image GIF représentant 10% du total qui se serait multipliée selon un arrondi, ça aurait eu l'avantage de pouvoir séparer les dizaines de pourcent, en revanche, ça aurait été beaucoup plus lourd à gérer et beaucoup moins précis.

Pas besoin tout de suite, mais je note l'idée !
Merci beaucoup.

signaler à un administrateur
Commentaire de ThunderPsycho le 26/10/2003 02:47:16

Pas mal, bonne idée... 9/10

signaler à un administrateur
Commentaire de laspirant le 01/11/2003 15:19:24

je penche plus pour la solution d'Oscar, en y mettant un bémole toutes fois. comme on a  le nb d'occurences, on a aussi le total donc on calcule le pourcentage de chaque occurence par rapport au total et on passe le pourcentage comme taille du gif de la couleur choisi comme ça, on est quasiment toujours certain que l'on reste clean à l'affichage.

signaler à un administrateur
Commentaire de zeb13 le 04/11/2003 00:11:50

ben je vois pas la différence puisqu'en réalité je me sers de la valeur max que je rapporte à chaque valeur et le tout dans une largeur de tableau au lieu d'une image que l'on étire. Tu remplaces le dimensionnement du tab par ton image et le rendu est le même. La largeur de ton tableau est définie au démarrage, l'image sera donc toujours en relation à cette largeur.

signaler à un administrateur
Commentaire de laspirant le 06/11/2003 06:03:17

c'est vrai,  ton idèe est bonne de toutes façons.
9/10

signaler à un administrateur
Commentaire de zeb13 le 19/01/2004 23:44:45

voilà une fonction pour afficher la même chose à la verticale, à la demande de Flo :

Function trace_graphe2
   Response.Write "&lt;br&gt;&lt;table align=center height="& hauteur_tab &" border=1 cellpadding=0 cellspacing=0&gt;"
   Response.Write "&lt;tr valign=bottom&gt;"
   for i=1 to UBound(tab_achats)
Randomize: clr_cel = Cint(255*(Rnd+1-1)) & Cint(255*(Rnd+1-1)) & Cint(255*(Rnd+1-1)) ' génération couleur Hexa
Response.Write "&lt;td width=20 align=center&gt;"&_
"&lt;table width=10 border=0 cellpadding=0 cellspacing=0&gt;" &_
"&lt;tr bgcolor='#"& clr_cel &"'&gt;"&_
"&lt;td&gt;&lt;img src='vide.gif' width='20' height='"& Cint(hauteur_tab*(tab_achats(i,2)/ttl_max)) &"' border=0 alt='"& FormatNumber(tab_achats(i,2),2) &" ?'&gt;&lt;/td&gt;"&_
"&lt;td bgcolor=white&gt;&lt;img src='vide.gif' width='20' border=0&gt;&lt;/td&gt;"&_
"&lt;/tr&gt;" &_
"&lt;/table&gt;" &_
"&lt;/td&gt;"
   next
   Response.Write "&lt;/tr&gt;"
   Response.Write "&lt;/table&gt;"
End Function

signaler à un administrateur
Commentaire de Nightcourrier le 10/12/2004 17:55:33

Salut Seb13,

je commence en asp.net et vb.net pourrais tu me dire comment adapter ton code poour quil fonctionne dans se language merci ..

signaler à un administrateur
Commentaire de caposoprano le 09/04/2005 14:20:06

salut voil moi j aimerais que ce grafique soit lier a db

signaler à un administrateur
Commentaire de zeb13 le 11/04/2005 10:22:41

bonne question, me suis à peine mis au .net, je ne peux pas vous être d'un grand secours à ce jour.

signaler à un administrateur
Commentaire de caposoprano le 13/04/2005 01:34:14

merci zeb13 meme chose pour mois

signaler à un administrateur
Commentaire de nicolastar666 le 20/06/2005 18:22:55

J'ai adapté ça tres rapidement pour mon code asp.net.
Super, merci!

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version


LG KP501

Entre 9€ et 159€


Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,296 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.