luca62
Messages postés56Date d'inscriptiondimanche 26 décembre 2004StatutMembreDernière intervention 4 août 2005
-
19 juil. 2005 à 23:39
luca62
Messages postés56Date d'inscriptiondimanche 26 décembre 2004StatutMembreDernière intervention 4 août 2005
-
20 juil. 2005 à 22:42
Bonjour à tous,
Voilà, encore un truc que je ne sais pas encore faire....
J'aimerai bien introduire dans un programme un fichier => ouvrir
C'est le ouvrir qui me pose problème, comme dire d'ouvrir la page de windows que tous le monde connait afin d'aller rechercher un fichier .dat se trouvant à un endroit quelconque ?
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 20 juil. 2005 à 14:35
Dans ce cas, je te conseille :
Open dlgouvrir.FileName For Input As #1
For numérolotto = 0 To 72
Text1(numérolotto).Visible = True 'affiche la place dans la feuille
Line Input #1, tabl(1, numérolotto)
Next numérolotto
Close #1
Le random et get s'utilise plutôt pour faire une lecture aléatoire dans le fichier texte mais avec une longueur définie. Extrait de l'aide de vb :
Dim MyRecord As String * 20, Position ' Déclare les variables.
' Ouvre l'exemple de fichier en accès aléatoire.
Open "FICHTEST" For Random As #1 Len = Len(MyRecord)
' Lit l'exemple de fichier à l'aide de l'instruction Get.
Position = 3 ' Définit le numéro d'enregistrement.
Get #1, Position, MyRecord ' Lit le troisième enregistrement.
Close #1 ' Ferme le fichier
-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 19 juil. 2005 à 23:53
Salut,
Tu prog avec quoi ? vbs, vba, vb6, vb.net ,... ?
Explique un peu mieux le "introduire dans un programme un fichier => ouvrir".
Au pif, utilise un controle CommandDialog (cocher dans le Menu Projet/composants : "Microsoft Common Dialog Control 6.0 (sp6)" ou approchant). Pour l'utilisation, vois d'abord la msdn, sinon plein d'exemples sur le site.
Je ne sais pas si ça répond à ta question mais tu n'es pas très clair.
-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Vous n’avez pas trouvé la réponse que vous recherchez ?
luca62
Messages postés56Date d'inscriptiondimanche 26 décembre 2004StatutMembreDernière intervention 4 août 2005 20 juil. 2005 à 11:30
Voilà comment j'ai fait (VB6) :
donc j'ai été chercher la un controle comment dialogue que j'ai nommé dlgText1.
Voilà le code :
Private Sub cmdChargerTableau_Click()
On Error GoTo OuvrirGestErr 'active le gestionnaire d'erreurs
dlgouvrir.CancelError = True 'traite le bouton Annuler comme une erreur
dlgouvrir.Flags = cdlOFNFileMustExist 'accepte seulement un nom de fichier existant
dlgouvrir.Filter = "Data (*.dat)|*.dat" 'affiche seulement les fichiers se terminant par .dat
dlgouvrir.FileName = "" 'efface le nom de fichier de la boîte de dialogue
dlgouvrir.ShowOpen 'affiche la boite de dialogue Ouvrir
Close #1
Open dlgouvrir.FileName For Random As #1
For numérolotto = 0 To 72
Text1(numérolotto).Visible = True 'affiche la place dans la feuille
Get #1, numérolotto + 1, tabl(1, numérolotto)
Next numérolotto
Exit Sub 'empêche le passage au Gestionnaire d'erreurs
'si aucune erreur ne se produit
OuvrirGestErr:
AfficheEnregistrementActuelNUMLOTTO (numérolotto)
End Sub
donc chaque nombre ce trouvant dans le fichier .dat que j'ai charger est sous la forme : tabl(numérolotto, 1), tabl(numérolotto, 2), ... et pour l'afficher dans les cases se nommant 'Text1(0, ....). C'est le rôle de AfficheEnregistrementActuelNUMLOTTO (numérolotto).
Alors la boite de dialogue ouvrir s'ouvre bien mais je n'arrive pas à traiter les données ? Est ce que je fais quelque chose qu'il ne faut pas ? Je crois que c'est la fonction Get#1 que je n'utilise pas bien ?
luca62
Messages postés56Date d'inscriptiondimanche 26 décembre 2004StatutMembreDernière intervention 4 août 2005 20 juil. 2005 à 13:53
il se présente de cette façon :
1
2
3
le problème aussi c'est qu'il faut que je ferme l'ancien fichier.dat avant d'ouvrir un nouveau, et je n'arrive pas à mettre la correcte phraséologie....
De plus je pense que j'ai un problème avec la fonctione get ? Je comprend pas exactement comment elle fonctione, enfin ce qu'il y a après la virgule ??
'On Error GoTo OuvrirGestErr
'1 = FreeFile
Open dlgouvrir.FileName For Input As #1
Do While Not EOF(1)
numérolotto = numérolotto + 1
Line Input #1, tabl(numérolotto, 1)
Line Input #1, tabl(numérolotto, 2)
Line Input #1, tabl(numérolotto, 3)
etc jusqu'a 72 = > car 72 num à mettre dans 72 cases différentes.
Loop
Close #1
Le seul problème c'est quand il m'ouvre la fenêtre ouvrir, le bouton annuler me fait une erreur, et quand le met les lignes en rouges, jai aussi une erreur ?
Comment cela ce fait-il ?
Maintenant pour enregistrer sur le fichier.dat que j'ai ouvert je fait comme si il se nommait #1 c'est ça ?
luca62
Messages postés56Date d'inscriptiondimanche 26 décembre 2004StatutMembreDernière intervention 4 août 2005 20 juil. 2005 à 15:41
Super ! ça fonctionne correctement .... J'ai compris !! Enfin ... C'est pas toujours facile quand on ne connait pas la fonction.....
Enfin, dans cette continuité, est ce que vous pourriez me montrer un exemple d'un code pour faire le enregistrer sous ? Lors d'une nouvelle fiche et que l'on veut enregistrer sous un nouveau nom ?
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 20 juil. 2005 à 16:01
Pour enregistrer à la suite d'un fichier existant :
Open dlgouvrir.FileName For Append As #1
print#1, valeur
close #1
Pour en céer un :
Open NouveauFichier For Output As #1
print#1, valeur
close #1
ATTENTION, si NouveauFichier existe il sera écrasé. Donc, avant on peut vérifier avec :
if dir(NouveauFichier) = ""
'il n'existe pas
else
'il existe
end if
-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
dlgsauver.InitDir = "C:\Documents and Settings\Francois\Mes documents\F R A N C O I S\Lotto\Mon Lotto"
dlgsauver.Filter = "Data (*.dat)|*.dat"
dlgsauver.FilterIndex = 1
dlgsauver.CancelError = True
dlgsauver.Flags = cdlOFNOverwritePrompt + cdlOFNNoReadOnlyReturn
On Error GoTo Error
dlgsauver.ShowSave
Open dlgsauver.FileName For Binary As #1
For i = 1 To numérolotto
Print #1, tabl(i, 1)
Print #1, tabl(i, 2)
Print #1, tabl(i, 3)
..........................
Print #1, tabl(i, 72)
Print #1, tabl(i, 73)
Next
Close #1
Exit Sub
Error:
If Err = 32755 Then Exit Sub
MsgBox Err.Description & " (" & Err & ")", vbExclamation, "Save Erreur"
mYMESS = MsgBox("Le fichier à été corectement sauvegardé", 0)
txtBénéfice_Perte.Visible = True
numérolotto = 1
AfficheEnregistrementActuelNUMLOTTO (numérolotto)
End Sub
Le problème est qu'il me cré bien un nouveau fichier portant le nom que je lui ai demander, mais je n'y retrouve pas les nombres, aucuns.
j'ai cependant avec le mYMESS, un message d'erreur que voici : Bad file mode (54 ) ?????