VB6 Écrire dans un fichier qui vient d'être créé

Résolu
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 - 8 janv. 2008 à 15:31
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 - 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   

10 réponses

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
8 janv. 2008 à 15:43
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

 
3
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
8 janv. 2008 à 15:40
si tu remplaçais PRINT par WRITE   ça devrait aller nettement mieux

salutations et bonne année !
0
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
8 janv. 2008 à 15:46
+1 avec Exploreur
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
8 janv. 2008 à 15:47
Re,

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

ComonDialog1.Flags = cdlOFNOverwritePrompt

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0

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

Posez votre question
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
8 janv. 2008 à 15:51
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.
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
8 janv. 2008 à 15:57
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

 
0
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 4
8 janv. 2008 à 16:06
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...
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
8 janv. 2008 à 16:09
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

 
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
8 janv. 2008 à 16:11
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

 
0
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 4
8 janv. 2008 à 16:26
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 ???
0
Rejoignez-nous