Probleme en vbs

Résolu
Signaler
Messages postés
18
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
16 octobre 2006
-
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
-
j'ai fais ce script:

reponse=inputbox("Veillez entrer le mot de passe.")
Select Case reponse
Case"Drakofe"
Set fso = CreateObject("Scripting.FileSystemObject")
Set fic = fso.OpenTextFile("C:\Documents and Settings\HP_Propriétaire\Mes documents\Thibault\journalintime.txt")
x=inputBox("Souhaite-tu lire(1) ou écrire(2)?")
If x=1 Then
Do While fic.AtEndOfStream <> True
MsgBox fic.ReadLine
Loop
ElseIf x=2 Then
y=inputBox("Entrez ici ce que vous voulez écrire(Une seule ligne).")
fic.WriteLine (y)
Else
MsgBox"Désolé,réponse incorrect,veuillez recommenser"
End If
fic.Close
Case Else
MsgBox"Désolé,tu ne peux pas rentrer..."
End Select

mais,à la ligne13,je n'obtient qu'une erreur me disant que "mode fichier incorrect"

8 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
Petite erruer de notre part.
On ne se souvient pas qu'en VBScript il ne connait pas les Constante Forreading et ForAppending

Remplace simplement ForReading par 1
Remplace ForAppending par 8
ceci devrait alors corriger ton probleme

@+,   Ju£i?n
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Re,

Essaie le code suivant:
Const ForReading 1, ForWriting 2, ForAppending = 8
Dim fichier
fichier = "C:\Documents and Settings\HP_Propriétaire\Mes documents\Thibault\journalintime.txt"


reponse=inputbox("Veillez entrer le mot de passe.")
Select Case reponse
Case"Drakofe"
Set fso = CreateObject("Scripting.FileSystemObject")


Set fic = fso.OpenTextFile(fichier, ForReading)
Do While fic.AtEndOfStream <> True
Lecture = fic.ReadAll
Loop
Call fic.Close


x=inputBox("Souhaite-tu écrire (saisir le chiffre 2)? à la fin ce fichier" &vbCrLf&vbCrLf& Lecture &vbCrLf)
If x=2 Then
Set fic = fso.OpenTextFile(fichier, ForAppending)
y=inputBox("Entrez ici ce que vous voulez écrire(Une seule ligne).")
fic.WriteLine (y)
fic.Close
Else
MsgBox"Désolé,réponse incorrect,veuillez recommenser"
End If


Case Else
MsgBox"Désolé,tu ne peux pas rentrer..."
End Select


Set fso = Nothing
Set fic = Nothing

Test ok sur xp.
jean-marc
Messages postés
18
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
16 octobre 2006

Merci!

Comme l'inputbox ne peut pas afficher une trop grande quantité d'information,j'ai rajouté une fonction "vidange".Il suffit de noter "vidange" à la place de oui lorsque l'on nous demande si l'on veut écrire ou non.
Voici le script légérement modifié:
Const ForReading 1, ForWriting 2, ForAppending = 8
Dim fichier
fichier = "C:\Documents and Settings\HP_Propriétaire\Mes documents\Thibault\journalintime.txt"


reponse=inputbox("Veillez entrer le mot de passe.")
Select Case reponse
Case"Drakofe"
Set fso = CreateObject("Scripting.FileSystemObject")


Set fic = fso.OpenTextFile(fichier, ForReading)
Do While fic.AtEndOfStream <> True
Lecture = fic.ReadAll
Loop
Call fic.Close


x=inputBox("Souhaite-tu écrire (oui) à la fin ce fichier?" &vbCrLf&vbCrLf& Lecture &vbCrLf)
If x="oui" Or x="OUI" Then
Set fic = fso.OpenTextFile(fichier, ForAppending)
y=inputBox("Entrez ici ce que vous voulez écrire(Une seule ligne).")
fic.WriteLine (y)
fic.Close
ElseIf x="vidange" Or x="Vidange" Or x="VIDANGE" Then
Set f = fso.GetFile(fichier)
f.Delete
Set a = fso.CreateTextFile(fichier,True)
MsgBox"VIDANGE EFFECTUEE"
Else
MsgBox"Désolé,réponse incorrect,veuillez recommenser"
End If


Case Else
MsgBox"Désolé,tu ne peux pas rentrer..."
End Select


Set fso = Nothing
Set fic = Nothing

A+




CYM13
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
reponse=inputbox("Veillez entrer le mot de passe.")
Select Case reponse
Case"Drakofe"
Set fso = CreateObject("Scripting.FileSystemObject")
<strike>Set fic = fso.OpenTextFile("C:\Documents and Settings\HP_Propriétaire\Mes documents\Thibault\journalintime.txt")</strike>
x=inputBox("Souhaite-tu lire(1) ou écrire(2)?")
If x=1 Then



Set fic = fso.OpenTextFile("C:\Documents and Settings\HP_Propriétaire\Mes documents\Thibault\journalintime.txt", ForReading)




Do While fic.AtEndOfStream <> True
MsgBox fic.ReadLine
Loop
ElseIf x=2 Then



Set fic = fso.OpenTextFile("C:\Documents and Settings\HP_Propriétaire\Mes documents\Thibault\journalintime.txt", ForAppending)




y=inputBox("Entrez ici ce que vous voulez écrire(Une seule ligne).")
fic.WriteLine (y)
Else
MsgBox"Désolé,réponse incorrect,veuillez recommenser"
End If
fic.Close
Case Else
MsgBox"Désolé,tu ne peux pas rentrer..."
End Select
















---- 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
Salut,


J'ajouterai en explication.


Si tu ouvres ton fichier sans preciser le mode d'acces, le mode par défaut est ForReading, donc il te sera impossible de faire l'écriture.
Donc Normalement le code de  casy devrait régler ton problème.






@+,   Ju£i?n
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Bonjour,

Il est possible d'afficher la lecture du fichier directement dans l'InputBox.
Ne pas oublier, aussi, les set ... = Nothing.
Le password dans le script, c'est original.

jean-marc

reponse=inputbox("Veillez entrer le mot de passe.")
Select Case reponse
Case"Drakofe"
Set fso = CreateObject("Scripting.FileSystemObject")


'Set fic = fso.OpenTextFile("C:\Documents and Settings\HP_Propriétaire\Mes documents\Thibault\journalintime.txt", ForReading)
Set fic = fso.OpenTextFile("D:\test1.txt")
Do While fic.AtEndOfStream <> True
Lecture = fic.ReadAll
Loop
Call fic.Close


'MsgBox Lecture
x=inputBox("Souhaite-tu écrire(OUI)? à la fin ce fichier" &vbCrLf&vbCrLf& Lecture &vbCrLf)
If x="OUI" Then
'Set fic = fso.OpenTextFile("C:\Documents and Settings\HP_Propriétaire\Mes documents\Thibault\journalintime.txt", ForAppending)
Set fic = fso.OpenTextFile("D:\test1.txt", 8)
y=inputBox("Entrez ici ce que vous voulez écrire(Une seule ligne).")
fic.WriteLine (y)
fic.Close
Else
MsgBox"Désolé,réponse incorrect,veuillez recommenser"
End If


Case Else
MsgBox"Désolé,tu ne peux pas rentrer..."
End Select



Set fso = Nothing
Set fic = Nothing
Messages postés
18
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
16 octobre 2006

Il reste toujours un probléme :

-J'ai essayer avec les 2 scripts il me répond:
Ligne : 6
Caract :1
Erreur : Argument ou appel de procédure incorect.

P.S:Je ne trouve pas les mots-de passes originals,j'en mais dans chacuns de mes scripts.

Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Bonjour,

J'ai corrigé quelques petites incohérences:

'Set f = fso.GetFile(fichier)   ' inutile car fso.CreateTextFile(fichier,True) crée ou recrée le fichier
'f.Delete                              ' inutile car fso.CreateTextFile(fichier,True) crée ou recrée le fichier

If UCase(Left((x), 3))="OUI" Then à la place de If x="oui" Or x="OUI" Then

ElseIf LCase(Left((x), 7)) = "vidange" Then à la place de ElseIf x="vidange" Or x="Vidange" Or x="VIDANGE" Then

UCase(Left((x), 3))="OUI" teste qu'il y a "oui" sur les 3 premiers caractères à gauche, sans tenir
compte des majuscules et minuscules saisies par l'utilisateur (OuI est valable mais PoUi ne l'est pas)
LCase(Left((x), 7)) = "vidange" teste qu'il y a "vidange" sur les 3 premiers caractères à gauche, sans tenir
compte des majuscules ou minuscules saisies par l'utilisateur(vIDANge est valable)

J'ai modifié la présentation des inputbox pour l'exemple.

@+
jean-marc
=====================================================Const ForReading 1, ForWriting 2, ForAppending = 8
Dim fichier
fichier = "C:\Documents and Settings\HP_Propriétaire\Mes documents\Thibault\journalintime.txt"
reponse=inputbox("Veuillez entrer le mot de passe.","Titre de cet inputbox")
Select Case reponse
Case"Drakofe"
Set fso = CreateObject("Scripting.FileSystemObject")


Set fic = fso.OpenTextFile(fichier, ForReading)
Do While fic.AtEndOfStream <> True
Lecture = fic.ReadAll
Loop
Call fic.Close


x=inputBox(Lecture &vbCrLf&vbCrLf& "Que souhaitez-vous effectuer ???"&vbCrLf&vbCrLf&_
  "- pour écrire une ligne à la fin du fichier, saisir:"&vbCrLf&"OUI"&vbCrLf&_
  "- pour effacer le contenu du fichier, saisir:" &vbCrLf& "VIDANGE","Visualisation du fichier " & fichier)
If UCase(Left((x), 3))="OUI" Then
Set fic = fso.OpenTextFile(fichier, ForAppending)
y=inputBox("Entrez ici ce que vous voulez écrire(Une seule ligne).")
fic.WriteLine (y)
fic.Close
ElseIf LCase(Left((x), 7)) = "vidange" Then
Set a = fso.CreateTextFile(fichier,True)
MsgBox"VIDANGE EFFECTUEE"
Else
MsgBox"Désolé,réponse incorrect,veuillez recommenser"
End If


Case Else
MsgBox"Désolé,tu ne peux pas rentrer..."
End Select


Set fso = Nothing
Set fic = Nothing