IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

erreur identificateur attendu


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Par défaut erreur identificateur attendu
    Bonjour,

    Je suis newbie en matière de VBScript et me voici confronté à cette erreur d'identificateur attendu :/

    Mon script est sensé lire un fichier de type CSV, donc avec des données comme ceci : A;B;C; etc... et les ranger dans un tableau à 2 dimensions. Le but étant de créer un fichier CSV contenant certaines lignes et certaines valeurs du fichier de base choisies selon la valeur de la première valeur de la ligne.

    Par exemple passer de :

    A;B;C
    D;E;F
    A;H;I
    à

    A;C
    A;I
    Mon fichier à traiter étant évidemment bien plus complexe, il y a 90 valeurs par lignes et je dois en récupérer 15.

    J'ai fait ceci et l'erreur est indiquée ligne 53.

    ps : La fonction ecrirefichier est juste un petit programme de test.

    ps2 : je suis sous win xp pro

    Problème résolu =>> il s'agissait de la variable case qui est en fait un nom reservé et donc il ne faut pas attribuer ce nom à une variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    Option Explicit
    
    '---------------------------------------------------------------------------------------------------
    
    'création du type "fichier"
    
    Dim objFichier
    Set objFichier=CreateObject("Scripting.FileSystemObject")
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    
    '---------------------------------------------------------------------------------------------------
    
    function nbligne(fichier)
    'retourne le nombre de ligne d'un fichier.
    'testé et approuvé
    
    dim ligne
    dim n
    
    n=0
    do while not fichier.atendofstream
    	ligne=fichier.Readline
    	n=n+1
    loop
    
    nbligne = n
    end function
    
    '---------------------------------------------------------------------------------------------------
    
    'Définition des fichiers à ouvrir et des fichiers à créer.
    
    dim cu_382	'fichier à analyser.
    dim capa             'erreur ici, case est un nom réservé, renommer la variable en macase 
    dim raw() 	'tableau des valeurs brutes.
    dim nCU		'nombre de lignes du fichier à analyser.
    
    Set cu_382 = objfichier.opentextfile("382_cu.txt", ForReading)
    Set capa = objFichier.OpenTextFile("capacité.txt", ForAppending, True)
    nCU = nbligne(cu_382)
    
    '---------------------------------------------------------------------------------------------------
    'test
    
    wscript.echo "nombre de ligne du fichier : " & nCU
    
    '---------------------------------------------------------------------------------------------------
    
    function table(fichier)
    'stocke les valeurs du fichier dans un tableau T de 2 dimensions et retourne le tableau T.
    
    dim i, k, a  '=== >>> erreur identificateur attendu ici <<<<<<
    dim capa             'erreur ici, case est un nom réservé, renommer la variable en macase 
    redim T(a,100)
    dim ligne
    
    a=nbligne(fichier)
    
    i=0
    k=0
    
    for i=0 to nbligne(fichier)
    	ligne=fichier.Readline
    	case=Split(ligne,";") 'ligne est une variable contenant une ligne entière. case est un tableau contenant les valeurs de la ligne.
    
    	for k=0 to ubound(case)
    		T(i,k)=case(k)	'remplit chaque ligne du tableau T avec les valeurs de chaque ligne du fichier.
    	next
    next
    
    table=T 
    
    end function
    
    '---------------------------------------------------------------------------------------------------
    
    sub ecrirefichier(fichier,T)
    'écrire les données d'un tableau dans un fichier.
    
    	fichier.WriteLine "fichier créé"
    	fichier.WriteLine "affichage de la 44e ligne du fichier" & T(44,1) & ";" & T(44,2) & ";" & T(44,9)
    
    end sub
    
    '---------------------------------------------------------------------------------------------------
    
    dim T
    T = table(cu_382)
    ecrirefichier(capa, T)

    Merci par avance pour votre aide !

  2. #2
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim case et non redim case
    l'instruction split renvoie un tableau qui n'a pas besoin d'être pré-dimensionné
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Par défaut
    Citation Envoyé par omen999 Voir le message
    bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim case et non redim case
    l'instruction split renvoie un tableau qui n'a pas besoin d'être pré-dimensionné
    Merci pour cette précision, mais même après cette correction j'ai toujours la même erreur

  4. #4
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 467
    Par défaut
    Une seule déclaration par "Dim"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim maVar1
    Dim maVar2
    Dim maVar3
    Et au passage : La déclaration n'est pas obligatoire est VBS. Surtout dans ce contexte où tu ne précises pas de type ...

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Par défaut
    Citation Envoyé par Luc1an0 Voir le message
    Une seule déclaration par "Dim"

    Dim maVar1
    Dim maVar2
    Dim maVar3

    Et au passage : La déclaration n'est pas obligatoire est VBS. Surtout dans ce contexte où tu ne précises pas de type ...
    Merci, j'ai testé mais ça ne corrige pas l'erreur d'identificateur attendu :

    J'ai testé une variante de mon programme table où j'insère directement les if dans la boucle et j'ai toujours la même erreur :/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    sub trier(fichier)
    'stocke les valeurs du fichier dans un tableau T de 2 dimensions et retourne le tableau T.
     
    dim i
    dim case
    dim ligne
    dim csv
     
    Do while not fichier.atendofstream
     
    	ligne = split(fichier,vbcrlf)
    	for i = 0 to ubound(ligne)
    		case = Split(ligne,";") 
    		if case(0) = 1 then
    			ecrirefichier(capa,case)
    		elseif case(0) = 2 then
    			ecrirefichier(cha1,case)
    		end if		
    	next
    loop
     
    end sub

  6. #6
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    Une seule déclaration par "Dim"


    en voyant la coloration syntaxique, j'ai réalisé que tu as utilisé comme nom de variable (case) qui est un nom réservé
    renomme ta variable en macase et ça ira mieux
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

Discussions similaires

  1. Erreur IE Identificateur attendu
    Par BHMath76 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 16/06/2009, 11h32
  2. Réponses: 7
    Dernier message: 03/05/2007, 12h44
  3. [Erreur]Objet attendu ?
    Par Baptiste Wicht dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 07/06/2006, 17h59
  4. Réponses: 9
    Dernier message: 31/05/2005, 13h38
  5. erreur LOOP attendu , mais pourquoi?
    Par ahage4x4 dans le forum ASP
    Réponses: 10
    Dernier message: 23/05/2005, 16h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo