Probleme en vbs

Résolu
CYM13 Messages postés 18 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 16 octobre 2006 - 29 août 2006 à 09:25
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 31 août 2006 à 12:53
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

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
29 août 2006 à 15:55
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
3
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
29 août 2006 à 16:12
 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
3
CYM13 Messages postés 18 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 16 octobre 2006
31 août 2006 à 11:58
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
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
29 août 2006 à 10:24
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 #
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
29 août 2006 à 10:34
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
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
29 août 2006 à 12:36
 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
0
CYM13 Messages postés 18 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 16 octobre 2006
29 août 2006 à 15:48
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.

0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
31 août 2006 à 12:53
 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
0
Rejoignez-nous