Tracer une courbe dans VB 2008

Résolu
im24 Messages postés 8 Date d'inscription lundi 20 septembre 2010 Statut Membre Dernière intervention 22 septembre 2010 - 20 sept. 2010 à 12:57
im24 Messages postés 8 Date d'inscription lundi 20 septembre 2010 Statut Membre 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 .

10 réponses

im24 Messages postés 8 Date d'inscription lundi 20 septembre 2010 Statut Membre Dernière intervention 22 septembre 2010
20 sept. 2010 à 17:40
Merci d'avoir répondu
Je vais essayer pour voir ce que ca donne ..
3
Utilisateur anonyme
21 sept. 2010 à 16:39
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
1
Hadriennoel Messages postés 7 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 19 novembre 2010
20 sept. 2010 à 14:42
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
0
im24 Messages postés 8 Date d'inscription lundi 20 septembre 2010 Statut Membre Dernière intervention 22 septembre 2010
20 sept. 2010 à 18:32
RE Salut
Deja je dois faire la liaison entre VB et ACCESS pour afficher le tableau ...
C'est assez complexe je suppose !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
im24 Messages postés 8 Date d'inscription lundi 20 septembre 2010 Statut Membre Dernière intervention 22 septembre 2010
20 sept. 2010 à 18:40
DSL je voulais dire EXCEL nn access
0
im24 Messages postés 8 Date d'inscription lundi 20 septembre 2010 Statut Membre Dernière intervention 22 septembre 2010
20 sept. 2010 à 18:51
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 ]
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
21 sept. 2010 à 00:08
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
0
im24 Messages postés 8 Date d'inscription lundi 20 septembre 2010 Statut Membre Dernière intervention 22 septembre 2010
21 sept. 2010 à 11:02
Bonjour ShaynW
Exact , je dois recupérer des données sur excel pour tracer une courbe ....
0
im24 Messages postés 8 Date d'inscription lundi 20 septembre 2010 Statut Membre Dernière intervention 22 septembre 2010
21 sept. 2010 à 11:18
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
0
im24 Messages postés 8 Date d'inscription lundi 20 septembre 2010 Statut Membre Dernière intervention 22 septembre 2010
22 sept. 2010 à 12:22
Bonjour :)
Merci pour ta reponse c'est sympa .. je vais tester pour voir se que ca donne .
A bientot
0
Rejoignez-nous