Tableau VB6 vers excel

Résolu
blenkishop Messages postés 7 Date d'inscription jeudi 21 avril 2011 Statut Membre Dernière intervention 4 mai 2011 - 3 mai 2011 à 16:21
blenkishop Messages postés 7 Date d'inscription jeudi 21 avril 2011 Statut Membre Dernière intervention 4 mai 2011 - 4 mai 2011 à 16:18
Bonjour tout le monde,

Alors en fait je cherche à ranger des valeurs d'un tableau dans un autre tableau excel.

Voici mon code:

Dim oExcel As Object
   Dim oBook As Object
   Dim oSheet As Object
   Set oExcel = CreateObject("Excel.Application")
   Set oBook = oExcel.Workbooks.Add

   
   Dim DataArray(1 To 34) As String
   Dim r As Integer
   Dim i As Integer
   i = 0
   For r = 1 To 33
      DataArray(r) = Tableau(i)
      i = i + 1
   Next

   
   Set oSheet = oBook.Worksheets(1)
   oSheet.Range("A1:C1").Value = Array("Nombre Passage")

   oSheet.Range("A2").Resize(34, 1).Value = DataArray
   
   oBook.SaveAs "C:\Book7.xls"
   oExcel.Quit



Le problème que j'ai ici est que mon tableau "Tableau" ne s'incrémente pas ..

Help me !

Cordialement.

8 réponses

Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
4 mai 2011 à 15:06
Si tu avais commencé par dire que tu avais une erreur au lieu de dire que ça ne marchait pas, on aurait peut-être gagné du temps.

Là ça me parait clair. Ton message dit très clairement que l'un des deux indices a une valeur en dehors des limites acceptés par tes tableaux.

Si j'en crois tes définitions, Tableau possède 33 éléments qui vont de 0 à 32 et DataArray possède 10 éléments de 1 à 10.

i = 0
   For r = 0 To 9
        For i = 0 To 9
        DataArray(r) = Tableau(i)
        i = i + 1
        Next i
   Next r


dans le code ci-dessus tu parcours chaque élément de DataArray de 0 à 9 (alors que le 1er est en base 1). Ton problème vient de là.

Un petit conseil, si tu les peux, utilises la même base pour tes 2 tableaux (c'est à dire l'indice du 1er élément).



Calade
3
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
4 mai 2011 à 16:12
Pense à cocher la case "Réponse acceptée" si tout marche bien.

Merci.


Calade
3
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
4 mai 2011 à 09:33
Bonjour,

Je ne connais pas trop le VBA, mais apparemment tu incréments DataArray() qui est un tableau en mémoire.

Si ton tableau est un tableau excel, il ne s'incrémentera pas tout seul. Sélectionnes une cellule de ta feuille (la 1ère à incrémenter) puis fais la varier au même rythme que DataArray() (qui devient obsolète ici).

Pour l'écriture purement excel, regarde sur ce site, il y a plein d'exemples.


Calade
0
blenkishop Messages postés 7 Date d'inscription jeudi 21 avril 2011 Statut Membre Dernière intervention 4 mai 2011
4 mai 2011 à 10:42
Bonjour Calade,

Cette partie de programme est une adaptation que j'ai fait a partir d'un autre programme trouvé ici dans la rubrique: "Utiliser Automation pour transférer un tableau de données vers une plage dans une feuille de calcul".

Autrement dis je ne suis pas un maître en VB6 et j'aimerai que l'on me mette un peu sur la piste pour que je puisse comprendre ne serait-ce qu'un peu mieux le programme et aussi continuer ce programme.

Merci à ceux qui se porteront garants pour m'aider.

Cordialement.
0

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

Posez votre question
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
4 mai 2011 à 11:07
     DataArray(r) = Tableau(i)


et ta variable tableau, elle sort d'où ?
As-tu vérifié qu'il contient bien les bonnes valeurs ?

Ensuite, si oui, mets un point d'arrêt sur la ligne
Set oSheet = oBook.Worksheets(1)


exécute ton code et vérifies que DataArray() contient bien lui aussi les bonnes valeurs.

Puis rajoute un autre point d’arrêt sur la ligne
oBook.SaveAs "C:\Book7.xls"

et quand ton code en est là, bascule sur ta feuille Excel et vérifie que la sélection (que tu devrais voir) est bonne (indépendamment des valeurs) puis contrôles celles-ci.

Histoire d'isoler le problème.

Petite précision, ne confonds pas VB6 et VBA. Le 1er est un langage de développement à part entière tandis que le second est l'implémentation dans Office. Les 2, bien qu'une ayant une syntaxe à peu près identique ne sont que partiellement compatibles.
Toi tu travailles en VBA ?

Calade
0
blenkishop Messages postés 7 Date d'inscription jeudi 21 avril 2011 Statut Membre Dernière intervention 4 mai 2011
4 mai 2011 à 14:51
Moi je travail en VB6.

Mais c'est bien au niveau de ma boucle "For" qu'il y a un problème et je n'arrive pas à le résoudre.
Lorsque je compile un message d'erreur d'affiche et me dit: [i]Run-time error '9':
subscript out of range./i
et me surligne: DataArray(r) = Tableau(i)


Voici tout le code:
Private Sub Command1_Click()
Dim Tableau(33) As String
Dim oExcel As Object
Dim oBook As Object
Dim oSheet As Object
MSComm1.CommPort = 5
MSComm1.Settings = "115200,O,8,1"
MSComm1.InputLen = 0
MSComm1.PortOpen = True
Frame1 = "Connection établie"


MSComm1.Output = "%01#RDD0000000033**" & Chr(13)
MsgBox ""
a = MSComm1.Input
Label2 = a
Tableau(0) = Mid$(a, 7, 4)
Tableau(1) = Mid$(a, 11, 4)
Tableau(3) = Mid$(a, 15, 4)
Tableau(4) = Mid$(a, 19, 4)
Tableau(5) = Mid$(a, 23, 4)
Tableau(6) = Mid$(a, 27, 4)
Tableau(7) = Mid$(a, 31, 4)
Tableau(8) = Mid$(a, 35, 4)
Tableau(9) = Mid$(a, 39, 4)

   Set oExcel = CreateObject("Excel.Application")
   Set oBook = oExcel.Workbooks.Add

   
   Dim DataArray(1 To 10) As String
   Dim r As Integer
   Dim i As Integer
   i = 0
   For r = 0 To 9
        For i = 0 To 9
        DataArray(r) = Tableau(i)
        i = i + 1
        Next i
   Next r

   
   Set oSheet = oBook.Worksheets(1)
   oSheet.Range("A1:C1").Value = Array("Nombre Passage")

   oSheet.Range("A2").Resize(34, 1).Value = DataArray
   oExcel.Visible = True
   MSComm1.PortOpen = False


- J'ai enlevé: oBook.SaveAs "C:\Book7.xls" et j'ai affiché mon tableau a la place.
0
blenkishop Messages postés 7 Date d'inscription jeudi 21 avril 2011 Statut Membre Dernière intervention 4 mai 2011
4 mai 2011 à 16:06
Merci, je n'ai plus l'erreur.
C'est difficile de se faire comprendre lorsqu'on est pas très a l'aise dans le domaine..

Par contre maintenant avec ce code:
Set oExcel = CreateObject("Excel.Application")
   Set oBook = oExcel.Workbooks.Add

   
   Dim DataArray(0 To 9) As String
   Dim r As Integer
   Dim i As Integer
   i = 0
   For r = 0 To 9
        DataArray(r) = Tableau(i)
        i = i + 1
   Next r

   
   Set oSheet = oBook.Worksheets(1)
   oSheet.Range("A1").Value = Array("Nombre Passage")

   oSheet.Range("A2").Resize(10, 1).Value = DataArray
   oExcel.Visible = True
   MSComm1.PortOpen = False


J'obtiens un tableau Excel et ma première colonne se remplie toujours de la même valeur, ici "FFFF", alors que la trame que je reçois fait "FFFF043500000000000000000000000000000000"
et je la découpe en 9 par paquets de 4.
Je pense que mon Tableau ne s'incrémente pas..
0
blenkishop Messages postés 7 Date d'inscription jeudi 21 avril 2011 Statut Membre Dernière intervention 4 mai 2011
4 mai 2011 à 16:18
Tout ne marche pas bien ^^.
Mais merci quand même.

A tantôt.
0
Rejoignez-nous