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 :

double pointeur dans un fichier txt


Sujet :

VBScript

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Points : 46
    Points
    46
    Par défaut double pointeur dans un fichier txt
    Bonjour,

    j'ai un pointeur dans un fichier qui me ramène la dernière ligne de celui-ci et vérifie la présence d'une chaine de caractères. (cela fonctionne)

    Je souhaite intégrer un autre pointeur dans ce fichier qui ce place à la ligne 7 du fichier et vérifie une chaine de caractères.

    Merci


    Voici mon code

    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
     
    j = 0
    i = 0
     
    Do Until saveFile.AtEndOfStream
    Redim Preserve arrFileLines(i) 'creation d'un tableau dans lequel la derniere ligne du fichier ouvert(saveFile) est placé
    Redim Preserve supFileLines(j) 'creation d'un tableau dans lequel la septieme ligne du fichier ouvert(saveFile) est placé
     
    arrFileLines(i) = saveFile.ReadLine
    supFileLines(j) = saveFile.ReadLine
    i = i + 1
     
     
    Loop
    WScript.echo i & " " & arrFileLines(i - 1)
    WScript.echo j & " " & supFileLines(j + 7)
     
    if instr(arrFileLines(i - 1),"reussi")Then  						
    Etat = "OK DI"
    WScript.Echo "C'EST BON"
    End If
     
    If instr(arrFileLines(i - 1),"echoue")Then
    Etat = "KO DI"
    WScript.Echo "C PAS TRES BON"				
    End If
     
     
     
     
    If InStr(supFileLines(j + 7), "Sauvegarde full") And InStr(arrFileLines(i - 1), "reussi") Then
    Etat = "KO DF"
    WScript.Echo "DATA FULL OK"
    End If

  2. #2
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Points : 46
    Points
    46
    Par défaut
    voici le message d'erreur que j'obtiens

    Erreur d'exécution Microsoft VBScript: Indice en dehors de la plage: '[number: 20]'

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

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    salut,
    à première vue, ta boucle ne redimensionne pas ton tableau supFileLines puisque j est toujours égal à zéro
    donc un appel du style donnera nécessairement ce genre d'erreur...
    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

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Points : 46
    Points
    46
    Par défaut
    Je viens de placer un j = j + 1 pour incrémenter mon tableau mais pas de changement

    J = j + 1


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Do Until saveFile.AtEndOfStream
    Redim Preserve arrFileLines(i) 'creation d'un tableau dans lequel la derniere ligne du fichier ouvert(saveFile) est placé
    Redim Preserve supFileLines(j) 'creation d'un tableau dans lequel la septieme ligne du fichier ouvert(saveFile) est placé
     
    arrFileLines(i) = saveFile.ReadLine
    supFileLines(j) = saveFile.ReadLine
    i = i + 1
    j = j + 1
     
    Loop

  5. #5
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    verifie la taille de tes tableau après la boucle.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Points : 46
    Points
    46
    Par défaut
    je ne comprends pas, voici ce que j'obtiens avec un wscript.Echo j dans ma boucle

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    13
    Erreur d'exécution Microsoft VBScript: Indice en dehors de la plage: '[number: 20]'

    je demande la ligne 7, cela devrai etre ok non ?

  7. #7
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    non pas ainsi :
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  8. #8
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Points : 46
    Points
    46
    Par défaut
    le msgbox renvoi 13 lignes de 0-12

    cependant WScript.echo j & " " & supFileLines(5)
    renvoi bien la ligne demandé sur un fichier qui contien 25 lignes avec un message d'erreur
    Erreur d'exécution Microsoft VBScript: Indice en dehors de la plage: '[number: 20]'

    mais quand je le fais sur un fichier de 55 ligne j'ai un message d'erreur
    Erreur d'exécution Microsoft VBScript: L'entrée dépasse la fin du fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Do Until saveFile.AtEndOfStream
    Redim Preserve arrFileLines(i) 'creation d'un tableau dans lequel la derniere ligne du fichier ouvert(saveFile) est placé
    Redim Preserve supFileLines(j) 'creation d'un tableau dans lequel la septieme ligne du fichier ouvert(saveFile) est placé
     
    arrFileLines(i) = saveFile.ReadLine
    supFileLines(j) = saveFile.ReadLine
    i = i + 1
    j = j + 1
     
    msgbox UBound (supFileLines)
    Loop
    WScript.echo i & " " & arrFileLines(i - 1)
    WScript.echo j & " " & supFileLines(5)
    donc c'est que mon tableau ne peut pas contenir plus de 13 ligne du fichier ?
    comment faire en sorte qu'il ne soit pas bridé par le nombre de lignes ?

  9. #9
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    postes tout ton code.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  10. #10
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Points : 46
    Points
    46
    Par défaut
    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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
     
     
    If type_serveur = "MSG DONNEE" Then
     
    Set colFiles = objServices.ExecQuery _
    ("SELECT * FROM CIM_DataFile WHERE Path='\\xxx\\xxx\\' and FileName like 'xxxxxx_" &tbdate(2)&tbdate(1)&tbdate(0)&"%'")'si le fichier à la date recherché n'est pas present passer à la suite
     
     
      If colFiles.count = 0  Then
      WScript.Echo "blabla"
      WScript.Echo err.number & Err.Description		 		
      Etat = "KO DI"
      WScript.Echo Etat
     
    WScript.Echo Etat
     
    Dim TCellule
    For c=6 To 36 step 1
     
    TCellule = xlSheet.cells(1,c).value
    if TCellule < 10 Then	TCellule = "0" & TCellule
    'WScript.Echo "Valeur de la cellule Excel " & vCellule & " Valeur du jour recherché : " & tbDate(0)
    If cstr(TCellule) = cstr(tbDate(0)) Then Exit for			
    Next
    WScript.Echo TCellule
     
    xlSheet.Cells(l, c).Value = Etat
     
    If Etat = "KO DI"  Then
     
    xlSheet.Cells(l, c).Select
    xlSheet.Cells(l, c).AddComment
    xlSheet.Cells(l, c).Comment.Text "BLABLA" st
    WScript.Echo st
    End if
     
    l = l + 1
     
     
    End if
     
     
    WScript.Echo file
     
     
     
    For Each objFile in colFiles
    Wscript.Echo objFile.Name
    WScript.Echo colFiles.count 
     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     '2nde Etape : Une fois le nom de fichier connu, lire le fichier pour trouver l'info sur la sauvegarde '
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
    WScript.Echo objFile.name
    NameAll = replace(objFile.name,"c:","\\"&nomDuServeur&"\c$")
    WScript.Echo NameAll
    Set SaveFile = fso.OpenTextFile(NameAll, 1)
     
     
    Etat = "KO DI"
     
     
    j = 0
    i = 0
     
    Do Until saveFile.AtEndOfStream
    Redim Preserve arrFileLines(i) 'creation d'un tableau dans lequel la derniere ligne du fichier ouvert(saveFile) est placé
    Redim Preserve supFileLines(j) 'creation d'un tableau dans lequel la septieme ligne du fichier ouvert(saveFile) est placé
     
    arrFileLines(i) = saveFile.ReadLine
    supFileLines(j) = saveFile.ReadLine
    i = i + 1
    j = j + 1
     
    msgbox UBound (supFileLines)
    Loop
    WScript.echo i & " " & arrFileLines(i - 1)
    WScript.echo j & " " & supFileLines(j + 7)
     
    if instr(arrFileLines(i - 1),"reussi")Then  							
    Etat = "OK DI"
    WScript.Echo "C'EST BON"
    End If
     
    If instr(arrFileLines(i - 1),"echoue")Then
    Etat = "KO DI"
    WScript.Echo "C PAS TRES BON"				
    End If
     
     
     
     
    If InStr(supFileLines(j + 7), "Svg full") And InStr(arrFileLines(i - 1), "reussi") Then
    Etat = "OK DF"
    WScript.Echo "Super balabla"
    End If
     
     
    If (InStr(arrFileLines(j + 11),"Svg full") And InStr(arrFileLines(i - 1),"echoue")) then							
    Etat = "KO DF"
    End if
     
     
     
     
     
     
     
     
    WScript.Echo Etat
    SaveFile.Close
     
    Dim vCellule
    For c=6 To 36 step 1
     
    vCellule = xlSheet.cells(1,c).value
    if vCellule < 10 Then	vCellule = "0" & vCellule
    'WScript.Echo "Valeur de la cellule Excel " & vCellule & " Valeur du jour recherché : " & tbDate(0)
    If cstr(vCellule) = cstr(tbDate(0)) Then Exit for			
    Next
    WScript.Echo vCellule
     
    xlSheet.Cells(l, c).Value = Etat
     
    If Etat = "KO"  Then
     
    xlSheet.Cells(l, c).Select
    xlSheet.Cells(l, c).AddComment
    xlSheet.Cells(l, c).Comment.Text "ERREUR" &st
    WScript.Echo st
    End if
     
    l = l + 1
     
    Next

  11. #11
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    Dim TCellule
    Dim vCellule
     
    If type_serveur = "MSG DONNEE" Then
    	Set colFiles = objServices.ExecQuery("SELECT * FROM CIM_DataFile WHERE Path='\\xxx\\xxx\\' and FileName like 'xxxxxx_" &tbdate(2)&tbdate(1)&tbdate(0)&"%'")'si le fichier à la date recherché n'est pas present passer à la suite
    	If colFiles.count = 0  Then
    		WScript.Echo "blabla"
    		WScript.Echo err.number & Err.Description		 		
    		Etat = "KO DI"
    		WScript.Echo Etat
    		WScript.Echo Etat
     
    		For c=6 To 36 step 1
    			TCellule = xlSheet.cells(1,c).value
    			If TCellule < 10 Then
    				TCellule = "0" & TCellule
    			End If
     
    			'WScript.Echo "Valeur de la cellule Excel " & vCellule & " Valeur du jour recherché : " & tbDate(0)
     
    			If cstr(TCellule) = cstr(tbDate(0)) Then
    				Exit for
    			End If
    		Next
     
    		WScript.Echo TCellule
     
    		xlSheet.Cells(l, c).Value = Etat
     
    		If Etat = "KO DI"  Then
    			xlSheet.Cells(l, c).Select
    			xlSheet.Cells(l, c).AddComment
    			xlSheet.Cells(l, c).Comment.Text "BLABLA" st
    			WScript.Echo st
    		End If
     
    		l = l + 1
     
     
    	End If
     
    	WScript.Echo file
     
    	For Each objFile in colFiles
    		Wscript.Echo objFile.Name
    		WScript.Echo colFiles.count 
    		'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    		' 2nde Etape : Une fois le nom de fichier connu, lire le fichier pour trouver l'info sur la sauvegarde '
    		'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
    		WScript.Echo objFile.name
    		NameAll = replace(objFile.name,"c:","\\"&nomDuServeur&"\c$")
    		WScript.Echo NameAll
    		Set SaveFile = fso.OpenTextFile(NameAll, 1)			    	
     
    		Etat = "KO DI"		
     
    		j = 0
    		i = 0
     
    		Do Until saveFile.AtEndOfStream
    			Redim Preserve arrFileLines(i) 'creation d'un tableau dans lequel la derniere ligne du fichier ouvert(saveFile) est placé
    			Redim Preserve supFileLines(j) 'creation d'un tableau dans lequel la septieme ligne du fichier ouvert(saveFile) est placé
    			arrFileLines(i) = saveFile.ReadLine
    			supFileLines(j) = saveFile.ReadLine
    			i = i + 1
    			j = j + 1	      
    			msgbox UBound (supFileLines)
    		Loop
    		WScript.echo i & " " & arrFileLines(i - 1)
    		WScript.echo j & " " & supFileLines(j + 7)
     
    		if instr(arrFileLines(i - 1),"reussi")Then  							
    			Etat = "OK DI"
    			WScript.Echo "C'EST BON"
    		End If
     
    		If instr(arrFileLines(i - 1),"echoue")Then
    			Etat = "KO DI"
    			WScript.Echo "C PAS TRES BON"				
    		End If
     
    		If InStr(supFileLines(j + 7), "Svg full") And InStr(arrFileLines(i - 1), "reussi") Then
    			Etat = "OK DF"
    			WScript.Echo "Super balabla"
    		End If       
     
    		If (InStr(arrFileLines(j + 11),"Svg full") And InStr(arrFileLines(i - 1),"echoue")) then							
    			Etat = "KO DF"
    		End if
     
    		WScript.Echo Etat
    		SaveFile.Close
     
    		For c=6 To 36 step 1				
    			vCellule = xlSheet.cells(1,c).value
    			If vCellule < 10 Then
    				vCellule = "0" & vCellule
    			End If
    			'WScript.Echo "Valeur de la cellule Excel " & vCellule & " Valeur du jour recherché : " & tbDate(0)
    			If cstr(vCellule) = cstr(tbDate(0)) Then
    				Exit for			
    			End If
    		Next
    		WScript.Echo vCellule
     
    		xlSheet.Cells(l, c).Value = Etat
     
    		If Etat = "KO"  Then		
    			xlSheet.Cells(l, c).Select
    			xlSheet.Cells(l, c).AddComment
    			xlSheet.Cells(l, c).Comment.Text "ERREUR" &st
    			WScript.Echo st
    		End if
     
    		l = l + 1
     
    	Next
     
    'il est où le End If
    J'ai réindenter ton code et mis tous les If Then en
    C'est plus lisible ainsi.
    Pour ton problème, dis moi à qu'elle ligne est signalé l'erreur ?

    I et J ne sont pas remis à 0 à la fin de la boucle, donc J + 7 -> C'est la cata
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  12. #12
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Points : 46
    Points
    46
    Par défaut
    l'erreur est à la ligne de WScript.echo j & " " & supFileLines(j + 7)

    Erreur d'exécution Microsoft VBScript: Indice en dehors de la plage: '[number: 20]'

  13. #13
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    I et J ne sont pas remis à 0 à la fin de la boucle, donc J + 7 -> C'est la cata
    J vaut 13 -> J + 7 = 20

    Le tableau comporte 13 cases
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  14. #14
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Points : 46
    Points
    46
    Par défaut
    en réinitialisant j à 0 et en ne lui demandant de fournir de -1 à -12 cela fonctionne.

    peut on incrementer le pointeur j du haut du fichier vers le bas et non pas du bas vers le haut comme il le fait ?
    soit afficher WScript.echo j & " " & supFileLines(j + 1) à (j + 13)

    car je cherche à faire une comparaison sur la ligne 7 de mon fichier en partant du haut

    et le tableau comporte les 13 dernières lignes apparemment

  15. #15
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Points : 46
    Points
    46
    Par défaut
    je viens de trouver juste une question de soustraction de lignes
    merci ced 600 Pour ta pédagogie et ta patience merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Double JFrame et enregistrer des String dans un fichier .txt
    Par Onelove dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 29/08/2014, 11h46
  2. Ouvrir et écrire dans un fichier .txt en T-SQL
    Par joul's dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 27/10/2008, 21h04
  3. Date dans un fichier txt
    Par cali1983 dans le forum C++
    Réponses: 6
    Dernier message: 23/05/2005, 17h35
  4. Réponses: 10
    Dernier message: 05/10/2004, 11h28
  5. [langage] tabulation dans un fichier txt
    Par TigreRouge dans le forum Langage
    Réponses: 2
    Dernier message: 16/08/2004, 17h36

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