Créer un fichier ouvrir

Résolu
luca62 Messages postés 56 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 4 août 2005 - 19 juil. 2005 à 23:39
luca62 Messages postés 56 Date d'inscription dimanche 26 décembre 2004 Statut Membre Derniè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 ?

Je vous remercie déjà...

Luca62

13 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
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 !?
3
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
20 juil. 2005 à 22:28
Open dlgsauver.FileName For Binary As #1 = non
Open dlgsauver.FileName For Output As #1 = oui

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
3
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
19 juil. 2005 à 23:52
API GetOpenFileName

@+


E.B.
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
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 !?
0

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

Posez votre question
luca62 Messages postés 56 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 4 août 2005
20 juil. 2005 à 10:12
Oui effectivement je travaille avec vb 6,

Je vais essayer ce que vous m'avez conseiller.... Merci.

Luca62
0
luca62 Messages postés 56 Date d'inscription dimanche 26 décembre 2004 Statut Membre Derniè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 ?

Merci d'avance pour l'aide que vous m'octroyé.

Luca62.
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
20 juil. 2005 à 13:50
Comment se présente ton fichier .dat ?
1 2 3 4 5 6 .....
ou
1
2
3
4
5
6
....

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
luca62 Messages postés 56 Date d'inscription dimanche 26 décembre 2004 Statut Membre Derniè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 ??

Merci pour votre aide.

Luca62.
0
luca62 Messages postés 56 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 4 août 2005
20 juil. 2005 à 14:55
Voilà comment j'ai fais, cela fonctionne :

dlgouvrir.CancelError = True
dlgouvrir.Flags = cdlOFNFileMustExist
dlgouvrir.Filter = "Data (*.dat)|*.dat"
'On Error GoTo Cancelled
dlgouvrir.ShowOpen

'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.
0
luca62 Messages postés 56 Date d'inscription dimanche 26 décembre 2004 Statut Membre Derniè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 ?

ENCORE MERCI POUR VOTRE AIDE !!!!!

Luca62.
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
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 !?
0
luca62 Messages postés 56 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 4 août 2005
20 juil. 2005 à 22:04
Voici comment j'ai écrit le code :

Private Sub Mnu_Saveas_Click()

If Flg_AjoutNewFile Then ' Enregistrement d'une nouvelle fiche

tabl(numérolotto, 1) = Text1(0).Text
tabl(numérolotto, 2) = Text1(1).Text
tabl(numérolotto, 3) = Text1(2).Text
.......................................................
tabl(numérolotto, 72) = Text1(71).Text
tabl(numérolotto, 73) = Text1(72).Text
End If

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 ) ?????

Est ce que vous savez ce que j'ai mal écrit ?

Merci. Fr.
0
luca62 Messages postés 56 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 4 août 2005
20 juil. 2005 à 22:42
encore merci, ça fonctionne....

Luca62.
0