Erreur SubString

Résolu
Messages postés
7
Date d'inscription
jeudi 12 juin 2003
Statut
Membre
Dernière intervention
1 octobre 2007
-
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
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

7 réponses

Messages postés
7
Date d'inscription
jeudi 12 juin 2003
Statut
Membre
Dernière intervention
1 octobre 2007

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 ("

")
        End If
    Loop
    ts.WriteLine ("

")


    ts.Close
End Sub
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
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])

@+, Julien
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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 #
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Grilled

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
>casy: Un tit peu ui

@+, Julien
Messages postés
7
Date d'inscription
jeudi 12 juin 2003
Statut
Membre
Dernière intervention
1 octobre 2007

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.
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Mais de rien


N oublie pas d'appuye sur réponse acceptée sur le ou les posts qui ont pu t'aider.
@+, Julien