Tracer une courbe dans VB 2008 [Résolu]

Messages postés
8
Date d'inscription
lundi 20 septembre 2010
Dernière intervention
22 septembre 2010
- - Dernière réponse : im24
Messages postés
8
Date d'inscription
lundi 20 septembre 2010
Dernière intervention
22 septembre 2010
- 22 sept. 2010 à 12:22
Bonjour tout le monde

je dois dessiner une courbe avec VB a partir d'un tableau sur Excel ( tableau de bord social ).... s'il vous plait pourriez vous m'aider
Merci d'avance .
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
8
Date d'inscription
lundi 20 septembre 2010
Dernière intervention
22 septembre 2010
3
Merci
Merci d'avoir répondu
Je vais essayer pour voir ce que ca donne ..

Merci im24 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 105 internautes ce mois-ci

Commenter la réponse de im24
1
Merci
Bonsoir,
Voici un exemple que j'ai réalisé avec excel 2000 (eh oui ca existe ) et vb .net
Ne pas oublier d'ajouter la référence COM d'excel au projet (projet/ajouter une référence)

'importation de l'espace de nom Excel
Imports Excel

Public Class Form1
    Dim exc As Excel.Application

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'création de l'objet applicatino
        Dim exc As Excel.Application = CreateObject("Excel.Application")
        If exc Is Nothing Then
            MessageBox.Show("erreur!")
        End If

        'ouverture du workbook (bien sur, il faut modifier cette ligne)
        Dim WorkBook As Excel.Workbook = exc.Workbooks.Open(My.Application.Info.DirectoryPath & "\Classeur1.xls")

        'selection de Feuille1 (on peut en prendre une autre)
        Dim Feuille As Excel.Worksheet = WorkBook.Worksheets(1)

        'mise en array des valeurs des cellules coordonnées X et Y (a modifier également selon tes plages de valeurs)
        Dim x As Array = Feuille.Range("A1", "A8").FormulaLocal
        Dim y As Array = Feuille.Range("B1", "B8").FormulaLocal

        'pour agrandir la courbe je met ici un zoom qui permet d'ajuster
        Dim zoom As Single = 4
        'remplissage du tableau de points convertis en single avec zoom optionnel
        Dim pts(7) As PointF
        For i = 0 To 7
            pts(i) = New PointF(CType(x(i + 1, 1), Single) * zoom, CType(y(i + 1, 1), Single) * zoom)
        Next

        'création d'une bitmap vierge
        Dim b As New Bitmap(200, 200)
        'outil de dessin pour dessiner
        Dim g As Graphics = Graphics.FromImage(b)

        'fond blanc du graphe
        g.FillRectangle(New SolidBrush(Color.White), 0, 0, b.Width, b.Height)

        'dessin des points sur le bitmap 
        For i = 1 To x.Length - 2
            g.DrawLine(New Pen(Color.Red, 2), pts(i - 1), pts(i))
        Next
        'tu peux dessiner aussi les axes etc....


        'affichage du bitmap dans un picturebox
        PictureBox1.Image = b.Clone

        'sauvegarde du graphe sur le disque 
        b.Save(My.Application.Info.DirectoryPath & "\sauvegarde.jpg", Imaging.ImageFormat.Jpeg)
    End Sub
End Class


A bientôt
Commenter la réponse de Utilisateur anonyme
Messages postés
7
Date d'inscription
mercredi 12 mars 2008
Dernière intervention
19 novembre 2010
0
Merci
Salut,

J'ai ce code qui j'avais fait il y a longtemps il pourra peut etre te servir a mettre en forme ta courbe.

'************************ création graphique ***************************************
Sub graph()
Dim x, y, lx, ly As Integer
Dim X1, Y1, source As Range
Dim feuille As String

'définition des variables
' UserForm1.TextBox1=axe des abscisses
' UserForm1.TextBox2=axe des ordonnées
' lx=nombre de ligne dans l'axe des abscisses
' ly=nombre de ligne dans l'axe des ordonnées
' X1=colonne des X
' Y1=colonne des Y
' source=colonne des X et des Y



'*********** sélection de la zone source *******************
feuille = "Feuil1"
'mettre le nom de la feuille des données.


Worksheets("Feuil1").Activate 'Feuille de la base de données

'sélection des axes X et Y
UserForm1.TextBox1 = InputBox("mettre lu numéro de la colonne")
UserForm1.TextBox2 = InputBox("mettre lu numéro de la colonne")
'J'utilise l'userform pour pouvoir avoir des données sous format chiffre et non sous format texte. Je pense qu'il y d'autre moyen mais celui-ci est sûr.

'sélection du nombre de ligne à comptabiliser
lx = Worksheets(feuille).Columns(UserForm1.TextBox1).Find("", , , , xlByRows, xlNext).Row
ly = Worksheets(feuille).Columns(UserForm1.TextBox2).Find("", , , , xlByRows, xlNext).Row

'sélection de la zone
Set X1 = Range(Worksheets(feuille).Cells(2, UserForm1.TextBox1), Cells(lx - 1, UserForm1.TextBox1))
Set Y1 = Range(Worksheets(feuille).Cells(2, UserForm1.TextBox2), Cells(ly - 1, UserForm1.TextBox2))
Set source = Union(X1, Y1)
source.Select


'************* création du graphique *************************

Charts.Add 'création d'un nouvelle feuille graphique
ActiveChart.ChartType = xlXYScatter 'sélection du type de graphique (nuage de point)
ActiveChart.SetSourceData source:=source 'sélection de la source des données
With ActiveChart
.HasTitle = True 'le graphique peut avoir un titre
.ChartTitle.Characters.Text = "X= " & Worksheets(feuille).Cells(1, UserForm1.TextBox1.Value) & " / Y = " & Worksheets(feuille).Cells(1, UserForm1.TextBox2.Value)
.Axes(xlCategory, xlPrimary).HasTitle = True 'le graphique peut avoir noms des axes
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = Worksheets(feuille).Cells(1, UserForm1.TextBox1)
.Axes(xlValue, xlPrimary).HasTitle = True 'le graphique peut avoir noms des axes
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = Worksheets(feuille).Cells(1, UserForm1.TextBox2.Value)
End With
ActiveChart.HasLegend = True 'le graphique peut avoir une légende
ActiveChart.Legend.Select
Selection.Position = xlBottom 'la légende est placé en bas

'nommer la feuille du graphique
ActiveChart.Name = "X= " & Worksheets(feuille).Cells(1, UserForm1.TextBox1.Value) & " Y = " & Worksheets(feuille).Cells(1, UserForm1.TextBox2.Value)

End Sub


'********************* impression graphique ***************************************
Sub impression()
ActiveChart.Activate
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub
Commenter la réponse de Hadriennoel
Messages postés
8
Date d'inscription
lundi 20 septembre 2010
Dernière intervention
22 septembre 2010
0
Merci
RE Salut
Deja je dois faire la liaison entre VB et ACCESS pour afficher le tableau ...
C'est assez complexe je suppose !!
Commenter la réponse de im24
Messages postés
8
Date d'inscription
lundi 20 septembre 2010
Dernière intervention
22 septembre 2010
0
Merci
DSL je voulais dire EXCEL nn access
Commenter la réponse de im24
Messages postés
8
Date d'inscription
lundi 20 septembre 2010
Dernière intervention
22 septembre 2010
0
Merci
Je m'explique :
En fait j'essaye de permettre à l'utilisateur d'avoir une courbe (exp : courbe Masse brut ) sur VB en entrant des données sur excel .
Si quelqu'un peut bien m'expliquer comment faire....
MERCI ]
Commenter la réponse de im24
Messages postés
3244
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
13 décembre 2018
0
Merci
Bonsoir
la courbe doit etre dessiné avec vb.net
et les données proviennent d'un classeur excel ?
les données représentent un vecteur de point x y
pour la courbe
Commenter la réponse de cs_ShayW
Messages postés
8
Date d'inscription
lundi 20 septembre 2010
Dernière intervention
22 septembre 2010
0
Merci
Bonjour ShaynW
Exact , je dois recupérer des données sur excel pour tracer une courbe ....
Commenter la réponse de im24
Messages postés
8
Date d'inscription
lundi 20 septembre 2010
Dernière intervention
22 septembre 2010
0
Merci
En effect ,La periode (janv ,fevr ....) sera representer ds l 'axe des abscisses et la marge ds l'axe des ordonnées .
Ainsi la courbe sera dessiner par rapport au donnees ....
j'espere que c'est clair
Commenter la réponse de im24
Messages postés
8
Date d'inscription
lundi 20 septembre 2010
Dernière intervention
22 septembre 2010
0
Merci
Bonjour :)
Merci pour ta reponse c'est sympa .. je vais tester pour voir se que ca donne .
A bientot
Commenter la réponse de im24

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.