Excel sous vb6

S4ngo Messages postés 51 Date d'inscription mercredi 15 décembre 2004 Statut Membre Dernière intervention 11 mai 2006 - 10 mars 2006 à 10:35
S4ngo Messages postés 51 Date d'inscription mercredi 15 décembre 2004 Statut Membre Dernière intervention 11 mai 2006 - 15 mars 2006 à 20:08
Bonsoir,

je
voudrais ouvrir un graphique excel dans mon application vb6. J'ai
trouvé une petite aide qui m'explique comment faire, mais à la fin vb
me sort une erreur.

Il me dit run time error: '424' Object required , et lorsque je
fait debug, il me dit que c'est cette ligne en jaune :


.Cols = Plage.Columns.Count

Merci d'avance pour votre aide.


code :

Private Sub Chart1_GotFocus()

Dim xlapp As Excel.Application

Dim classeur As Excel.Workbook, feuille As Excel.Worksheet, Plage As Excel.Range



Set xlapp = New Excel.Application

xlapp.DisplayAlerts = False

Set classeur = xlapp.Workbooks.Open("C:\Analyseur_PC\relever_polluants.xls")

Set feuille = xlapp.ActiveSheet

Set Plage = feuille.Range("A1").CurrentRegion



With flexgrid

.Cols = Plage.Columns.Count

.Rows = Plage.Rows.Count

.Col = 0

.Row = 0

.ColSel = .Cols - 1

.RowSel = .Rows - 1

Plage.Copy

.Clip = Replace(Clipboard.GetText, vbCrLf, vbCr)

End With



Set Plage = Nothing

Set feuille = Nothing

classeur.Close False

Set classeur = Nothing

Set xlapp = Nothing

End Sub

7 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
10 mars 2006 à 18:34
Cherche bien, vérifie bien ton code, car chez moi ça marche impec.

flexgrid est bien le nom que tu as donné à ton controle MsFlexgrid ?

<hr size="2" width="100%">
0
S4ngo Messages postés 51 Date d'inscription mercredi 15 décembre 2004 Statut Membre Dernière intervention 11 mai 2006
10 mars 2006 à 23:09
euh ... bah pour être honnête, je ne sais pas. J'ai essayer de faire sa à l'aide d'un tuto, et la je bloque quoi.

J'ai chercher la depuis ton message, mais je ne trouve pas.

C'est ou que je doit lui désigner son nom ? avec quel code ?



Si je te met tout mon code, tu peut me dire ou est l'erreur peut être ?

(parcontre je n'est pas encore mis de commentaire partout pour l'instant, car c'est un programme test)



Merci d'avance



code:

Const Serveur = "Excel|C:\Analyseur_PC\relever_polluants.xls"

Public ligne As Integer

Public colonne As Integer

Public Mess As String

Public temps1 As Integer

Public temps2 As Integer

Public temps3 As Integer



Private Sub Chart1_GotFocus()

Dim xlapp As Excel.Application

Dim classeur As Excel.Workbook, feuille As Excel.Worksheet, Plage As Excel.Range



Set xlapp = New Excel.Application

xlapp.DisplayAlerts = False

Set classeur = xlapp.Workbooks.Open("C:\Analyseur_PC\relever_polluants.xls")

Set feuille = xlapp.ActiveSheet

Set Plage = feuille.Range("A1").CurrentRegion



With flexgrid

.Cols = Plage.Columns.Count

.Rows = Plage.Rows.Count

.Col = 0

.Row = 0

.ColSel = .Cols - 1

.RowSel = .Rows - 1

Plage.Copy

.Clip = Replace(Clipboard.GetText, vbCrLf, vbCr)

End With



Set Plage = Nothing

Set feuille = Nothing

classeur.Close False

Set classeur = Nothing

Set xlapp = Nothing

End Sub



Private Sub cinqminute_Click()

cinqminute.Checked = True

dixsec.Checked = False

trentesec.Checked = False

uneminute.Checked = False

quinzeminute.Checked = False

temps1 = 6

temps2 = 50

End Sub



Private Sub Com1_Click()

Com1.Checked = True

Com2.Checked = False

MSComm1.CommPort = 1

End Sub



Private Sub Com2_Click()

Com2.Checked = True

Com1.Checked = False

MSComm1.CommPort = 2

End Sub



Private Sub Command1_Click()

Select Case Command1.Caption

Case "Marche"

Command1.Caption = "Arrêt"

temps3 = temps2

Timer1.Interval = temps1 * 1000

MSComm1.Settings = "9600,N,8,1"

MSComm1.RThreshold = 3

MSComm1.PortOpen = True

Timer1.Enabled = True

Case "Arrêt"

Command1.Caption = "Marche"

Timer1.Enabled = False

MSComm1.PortOpen = False

End Select

End Sub



Private Sub Command2_Click()

End

End Sub



Private Sub dixsec_Click()

dixsec.Checked = True

trentesec.Checked = False

uneminute.Checked = False

cinqminute.Checked = False

quinzeminute.Checked = False

temps1 = 10

temps2 = 0

End Sub



Private Sub Excel_Click()

'Ouverture de l'application

Set appExcel = CreateObject("Excel.Application")

'Ouverture d'un fichier Excel

Set wbExcel = appExcel.Workbooks.Open("C:\Analyseur_PC\relever_polluants.xls")

'appExcel.visible=True permet de rendre la fenetre visible, car sans sa, elle est ouverte mais pas visible

appExcel.Visible = True

End Sub



Private Sub Exit_Click()

End

End Sub



Private Sub Form_Load()

temps1 = 1

temps2 = 0

Timer1.Enabled = False

MSComm1.InputLen = 3

ligne = 2

Label3.LinkTopic = Serveur

Label3.LinkMode = 2

Label1.LinkTopic = Serveur

Label1.LinkMode = 2

Label4.LinkTopic = Serveur

Label4.LinkMode = 2

Label8.LinkTopic = Serveur

Label8.LinkMode = 2

End Sub



Private Sub Notice_Click()

'permet d'ouvrir la notice d'utilisation

Shell "C:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe C:\Analyseur_PC\Notice.pdf"

End Sub



Private Sub Print_Click()

Dim appExcel As Excel.Application 'Application Excel

Dim wbExcel As Excel.Workbook 'Classeur Excel

Dim wsExcel As Excel.Worksheet 'Feuille Excel

'Ouverture de l'application

Set appExcel = CreateObject("Excel.Application")

'Ouverture d'un fichier Excel

Set wbExcel = appExcel.Workbooks.Open("C:\Analyseur_PC\relever_polluants.xls")

'wsExcel correspond à la première feuille du fichier

Set wsExcel = wbExcel.Worksheets(1)

ActiveWindow.SelectedSheets.PrintOut Copies:=1

wbExcel.Close

Set wbExcel = Nothing

appExcel.Quit

End Sub



Private Sub quinzeminute_Click()

quinzeminute.Checked = True

trentesec.Checked = False

uneminute.Checked = False

cinqminute.Checked = False

dixsec.Checked = False

temps1 = 6

temps2 = 150

End Sub



Private Sub Timer1_Timer()

Dim out(0) As Byte

If temps3 = 0 Then

out(0) = 0

MSComm1.Output = Chr(41)

temps3 = temps2

Else

temps3 = temps3 - 1

End If

End Sub



Private Static Sub MSComm1_OnComm()

Dim résultat() As Byte

Dim So2 As Single

Dim Mire As Single

Dim No2 As Byte

Select Case MSComm1.CommEvent

Case comEvReceive

résultat() = MSComm1.Input

So2 = résultat(1)

Label3.Caption = Format(So2, "Fixed")

Mire = résultat(0)

Label4.Caption = Format(Mire, "Fixed")

Label1.Caption = Time

No2 = résultat(2)

Label8.Caption = Format(No2, "Fixed")

Label3.LinkItem = "L" & ligne & "C2"

Label1.LinkItem = "L" & ligne & "C1"

Label4.LinkItem = "L" & ligne & "C4"

Label8.LinkItem = "L" & ligne & "C3"

Label3.LinkPoke

Label1.LinkPoke

Label4.LinkPoke

Label8.LinkPoke

ligne = ligne + 1

End Select

End Sub



Private Sub trentesec_Click()

trentesec.Checked = True

dixsec.Checked = False

uneminute.Checked = False

cinqminute.Checked = False

quinzeminute.Checked = False

temps1 = 30

temps2 = 0

End Sub



Private Sub uneminute_Click()

uneminute.Checked = True

dixsec.Checked = False

trentesec.Checked = False

cinqminute.Checked = False

quinzeminute.Checked = False

temps1 = 6

temps2 = 10

End Sub



Private Sub Version_Click()

'affiche le message version ...

Mess = "Version 1.0 béta Copyright by Nico"

'la message box qui souvre sappele Analyseur PC

MsgBox Mess, vbOKOnly + vbInformation, "Analyseur PC"

End Sub
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
11 mars 2006 à 10:29
Pour changer le nom d'un controle il faut que tu ouvre ton écran (pas le code de l'écran, mais l'écran lui même, là ou tu dessine tes controles). Ensuite tu sélectionne ton controle flexgrid (une sorte de tableau) et tu tappe F4 pour ouvrir la fenetre de propriete du controle. Dans cette fenetre tu peux definir plusieurs propriete comme la police, les couleurs de fond, de cellules, etc. Tu as une propriete qui s'apelle (Name). C'est cette propriété qui nomme ton contrôle.

Tu as plusieurs possibilités : soit tu donne à cette propriete le nom que tu utilise dans le code, soit tu utilise dans le code le nom qui est indiqué dans cette propriété, soit tu fais les deux, tu donne un nom plus parlant à ton contrôle en fonction du role qu'il joue dans ton soft, et tu reporte ce nom ensuite dans ton code.

Dans tous les cas le nom utilisé pour l'instruction With ******* doit correspondre au nom indiqué dans la propriété (Name) de ton contrôle.

J'ai regardé très vite fait ton code, je ne vois pas de gros soucis, à priori.

<hr size="2" width="100%">
0
S4ngo Messages postés 51 Date d'inscription mercredi 15 décembre 2004 Statut Membre Dernière intervention 11 mai 2006
11 mars 2006 à 15:14
ok.

Alors j'ai changé le nom, et sa m'était toujours l'erreur.

Mais maintenant j'ai mis DragMode: vbAutomatic, et sa a l'air de fonctionner.
0

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

Posez votre question
S4ngo Messages postés 51 Date d'inscription mercredi 15 décembre 2004 Statut Membre Dernière intervention 11 mai 2006
15 mars 2006 à 11:32
bonjours, en fait, j'ai enfin pus essayer concrètement le programme, et le graphique ne fonctionne toujours pas.
Il me garde toujours les 3 courbes qui sont mises en exemple, il n'actualise pas mon graph excel :s
J'ai bien mis les mêmes nom (je les ai tous appelés Chart1), et il me semblais que le programme était bon.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
15 mars 2006 à 18:23
Il doit falloir normalement que tu associe tes données de ta flexgrid avec ton controle chart. Je n'ai jamais utiliser ce controle et je viens de regarder l'aide du msdn, il me semble un peu complexe ce controle.

Il faut que tu fouille dans l'aide ou que tu cherche sur ce site ou sur le net, des exemples d'utilisation de ce controle, ça doit bien exister.

J'avoue que là je suis un peu planté. dsl


<hr size="2" width="100%">
0
S4ngo Messages postés 51 Date d'inscription mercredi 15 décembre 2004 Statut Membre Dernière intervention 11 mai 2006
15 mars 2006 à 20:08
ok, je vais regarder encore.

Merci de ton aide casy :D
0
Rejoignez-nous