VB6 Écrire dans un fichier qui vient d'être créé [Résolu]

Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
- - Dernière réponse : cs_JeffC1977
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
- 8 janv. 2008 à 16:26
Salut à tous...

J'ai un problème... avec l'écriture dans un fichier....

Je cré un fichier mais je suis incapable d'écrire dans ce fichier... Le texte qui devrait être inscrit dans le fichier s'inscrit dans ma Form ???????  Je comprend vraiment pas pourquoi....
Voyez-vous pourquoi ça s'inscrit sur ma form ????
P.S. Ce que je veux enregistrer se trouve dans un ListData.

Merci de votre aide

Voici mon code....

    Dim i as Integer
    Dim iFile As Integer
    iFile = FreeFile
    CommonDialog1.CancelError = False 
    CommonDialog1.Flags = cdlOFNFileMustExist Or cdlOFNPathMustExist
    CommonDialog1.Filter = "Fichiers TXT (*.txt)|*.txt"
    CommonDialog1.InitDir = "m:\Carnet"
    CommonDialog1.DialogTitle = "Enregistrer"
    If Len(txtFichier.Text) = 11 Then
        CommonDialog1.FileName = Left(txtFichier.Text, 7)
    ElseIf Len(txtFichier.Text) = 12 Then
        CommonDialog1.FileName = Left(txtFichier.Text, 8)
    End If
    CommonDialog1.ShowSave


        Open CommonDialog1.FileName For Output As iFile    'Ouverture d'un fichier Output



            For i = 0 To ListData.ListCount - 1    
                Print iFile, ListData.List(i)    
            Next
            Close iFile   
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
3
Merci
Salut,

Essaye avec ce que je viens de mettre nen rouge :

 Dim i as Integer
    Dim iFile As Integer
    iFile = FreeFile
    CommonDialog1.CancelError = False 
    CommonDialog1.Flags = cdlOFNFileMustExist Or cdlOFNPathMustExist
    CommonDialog1.Filter = "Fichiers TXT (*.txt)|*.txt"
    CommonDialog1.InitDir = "m:\Carnet"
    CommonDialog1.DialogTitle = "Enregistrer"
    If Len(txtFichier.Text) = 11 Then
        CommonDialog1.FileName = Left(txtFichier.Text, 7)
    ElseIf Len(txtFichier.Text) = 12 Then
        CommonDialog1.FileName = Left(txtFichier.Text, 8)
    End If
    CommonDialog1.ShowSave
        Open CommonDialog1.FileName For Output As #iFile    'Ouverture d'un fichier Output

            For i = 0 To ListData.ListCount - 1    
                Print #iFile, ListData.List(i)    
            Next
            Close #iFile   

Je pense que cela devrait aller mieux....

A+
Exploreur

 Linux a un noyau, Windows un pépin

 

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 135 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Exploreur
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
0
Merci
si tu remplaçais PRINT par WRITE   ça devrait aller nettement mieux

salutations et bonne année !
Commenter la réponse de pile_poil
Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
9
0
Merci
+1 avec Exploreur
Commenter la réponse de Kristof_Koder
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
0
Merci
Re,

Regarde aussi cela, cela devrait être utile je pense..

ComonDialog1.Flags = cdlOFNOverwritePrompt

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Commenter la réponse de cs_Exploreur
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
0
Merci
Explorer  tu as raison pour le #
par contre
pour le print je suis moins d'accord avec toi
 pour preuve voir l'extrait de la doc de VB6 ci dessous
Note   Si vous souhaitez lire ultérieurement un
fichier à l'aide de l'instruction Input #, utilisez l'instruction
Write # plutôt que l'instruction Print # pour écrire les données
dans ce fichier. L'utilisation de l'instruction Write # garantit
l'intégrité de chaque champ de données grâce à une délimitation précise, de
sorte que le fichier peut ensuite être relu à l'aide de l'instruction Input
#. L'instruction Write # permet également une lecture correcte du
fichier, quels que soient les paramètres régionaux.
Commenter la réponse de pile_poil
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
0
Merci
Pile-Poil >> Lol....Je ne t'ais pas contre-dit...J'ai juste répondu à son problème. Maintenant il fait comme bon lui semble, c'est son code après tout....

Mais c'est bien d'en faire la remarque....

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Commenter la réponse de cs_Exploreur
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
3
0
Merci
Meric à tous....

Bon je m'intéroge... Si je mets le Write ca me donne des ligne commencant et se termine pas des Guillements.

Par contre si je prends le Print, j'ai l'intégrité du ListData...

Si c'est mieux d'utiliser le Write, existe-t-il une facon d'enlever les "

Merci à vous...
Commenter la réponse de cs_JeffC1977
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
0
Merci
JeffC1977 >> Petite demande de curiosité : A quoi te sert le test Len sur ta zone de texte(mise à part, à tronquer le nom du fichier) ?

Puis tu gère le click sur le bouton annuler de la ComonDialog1, ok, mais essaye de mettre aucun nom de fichier et clique sur annuler...

On Error Goto ExitSave
 CommonDialog1.CancelError = False 
....
....
......

Exit sub

Exitsave :
Msgbox "Touche préssée !"
Err.Clear

Puis que ce passe-t-il, si dans txtFichier.Text le nombre de carractère est < 11 et 14 et > à 11 et 14...??

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Commenter la réponse de cs_Exploreur
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
0
Merci
Re,

Pour enlever les " (et encore faudrait savoir dans quel cas de figure), utilise : Replace

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Commenter la réponse de cs_Exploreur
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
3
0
Merci
Re...

Pour répondre à tes questions...

A quoi te sert le test Len sur ta zone de texte:
Et bien dans le programme le fichier peut avoir (toujours)soit 11 ou 12 caractères...
T080108.XCA ou TC080108.XCA
Le fichier XCA est un fichier "non traité". Une fois traité, l'utilisateur le sauvegarde en .TXT
Ce code sert uniquement à inscrit le même nom de fichier sans le .XCA. Ainsi l'utilisateur n'a pas à réinscrire le nom du fichier. et à appuyer sur Enregistrer. Le fichier s'enregistre en .TXT. Je laisse apparitre la boite de dialogue au cas où l'utilisateur préfère changer le nom du fichier.

Pour ce qui est du bouton Annuler... J'ai pas vraiment tester mais pour le moment ca génère ausun erreur...
Que me suggères-tu ???
Commenter la réponse de cs_JeffC1977