joebarteam88
Messages postés7Date d'inscriptionjeudi 12 juin 2003StatutMembreDernière intervention 1 octobre 2007
-
23 août 2006 à 16:26
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
24 août 2006 à 08:36
Bonjour,
comme l'indique le titre je suis full débutant en VB. Je suis en train d'essayer de faire une macro dans excel et grrrrr !!! Je galère à mort ...
Voici mont code
<!-- BEGIN TEMPLATE: bbcode_code -->
Code :
Sub GenXML(site)
Dim curSheet
Dim curBook
Set curBook = Workbooks.Item("Properties.xls")
Set curSheet = curBook.Sheets("properties")
Dim fs, f, s, filename
Set fs = CreateObject("Scripting.FileSystemObject")
filename = home & "\properties.xml"
Set ts = fs.CreateTextFile(filename, True)
counter = 1
Dim str
ts.WriteLine ("<?xml version=""1.0"" encoding=""ISO-8859-1"" ?>")
ts.WriteLine ("")
Do While counter < 1000
counter = counter + 1
str = curSheet.Cells(counter, 1).Value
If (str = "#FIN") Then
counter = 1001
ElseIf (str.Substring(0, 1) <> "#") Then ts.Write (Chr(9) & "")
ts.Write (curSheet.Cells(counter, colsite).Value)
ts.WriteLine ("
")
End If
Loop
ts.WriteLine ("
")
ts.Close
End Sub
<!-- END TEMPLATE: bbcode_code -->
Lors de l'execution, il plante sur la ligne en gras en me disant objet requis. Avec le debug (que je découvre aussi bien sur) j'ai vu que str est bien valorisé, ça me laisse penser qu'il se plante (enfin que je me plante donc) sur le SubString.
Une idée de quoi ça pourrait venir svp ?
merci
joebarteam88
Messages postés7Date d'inscriptionjeudi 12 juin 2003StatutMembreDernière intervention 1 octobre 2007 23 août 2006 à 16:29
Désolé pour le code, le voici correctement indenté
Sub GenXML(site)
Dim curSheet
Dim curBook
Set curBook = Workbooks.Item("Properties.xls")
Set curSheet = curBook.Sheets("properties")
Dim fs, f, s, filename
Set fs = CreateObject("Scripting.FileSystemObject")
filename = home & "\properties.xml"
Set ts = fs.CreateTextFile(filename, True)
counter = 1
Dim str
ts.WriteLine ("<?xml version=""1.0"" encoding=""ISO-8859-1"" ?>")
ts.WriteLine ("")
Do While counter < 1000
counter = counter + 1
str = curSheet.Cells(counter, 1).Value
If (str = "#FIN") Then
counter = 1001
ElseIf (str.Substring(0, 1) <> "#") Then ts.Write (Chr(9) & "")
ts.Write (curSheet.Cells(counter, colsite).Value)
ts.WriteLine ("
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 23 août 2006 à 16:36
Salut,
Je ne sais pas a l'aide de quoi tu code,
Mais si tu es bien en VB6 ou en VBA la procédure SubString N'existe pas.
NOTE: Site ne sert a rien comme parametre vu qu il n'ets pas utiliser dan sla Sub
NOTE2 Pense a bien déclarer le type de tes varaibles cela poura parfois t'éviter des problèmes.
ex:
Dim curSheet As Worksheet Dim curBook As Workbook
En VBA Et VB6 si tu veux isoler les caracteres d'une chiane de caracteres il faut utiliser la fonction Mid
Mid(String, Start As Long, [Lenght])
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 23 août 2006 à 16:39
substring en VBA, je suis pas sur que ça existe.
De plus, tu ne type pas tes variables à la déclaration. Dans ce cas, elles sont de type variant et prennent en fait le type de la première valeur que tu leur met dedant.
Ca peut te generer des erreurs sans que tu t'en appercoive.
Typage des variables :
Dim curSheet As Worksheet
Dim curBook As Workbook
.......
Dim str as String
........
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
joebarteam88
Messages postés7Date d'inscriptionjeudi 12 juin 2003StatutMembreDernière intervention 1 octobre 2007 24 août 2006 à 08:15
Super, tout fonctionne parfaitement avec Mid.
J'avais juste commis une chtite erreur en faisant commençer l'extraction à 0 avec Mid (comme je le fais en java avec substring).
En tout cas merci bien.