Point virgule, guillemet [Résolu]

kkrooolf 5 Messages postés jeudi 9 février 2012Date d'inscription 15 février 2012 Dernière intervention - 15 févr. 2012 à 09:20 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention
- 15 févr. 2012 à 14:52
[b]bonjour,
j'ai fait le programme suivant :/b

Private Sub Dir1_Change()

'ouvrir uniquement les fichier txt
File1.Path = Dir1.Path
File1.Pattern = ("*.txt")

End Sub


Private Sub Drive1_Change()

Dir1.Path = Drive1.Drive

End Sub

Private Sub Label2_Click()

End Sub

Private Sub Start_Click()

Dim Rang As Integer
Dim nbr As Integer
Dim Nom_fichier As String
Dim txt1, txt2 As String

nbr% = File1.ListCount

'For Rang = 0 To nbr - 1

File$ = Dir1.Path + "" + File1.List(0)
Open File For Input As #1

While Not EOF(1)

Line Input #1, Lire1$
Line Input #1, Lire2$
Line Input #1, Lire3$
Wend

Ecrire1$ = Replace(Lire1$, Chr(34) + Chr(34) + Chr(34), Chr(34))
Ecrire2$ = Replace(Lire2$, Chr(34) + Chr(34) + Chr(34), Chr(34))
Ecrire3$ = Replace(Lire3$, Chr(34) + Chr(34) + Chr(34), Chr(34))

'Ecrire11$ = Replace(Ecrire1$, ";", ",")
'Ecrire22$ = Replace(Ecrire2$, ";", ",")
'Ecrire33$ = Replace(Ecrire3$, ";", ",")
Close #1

Open File For Output As #1
Print #1, Ecrire1
Print #1, Ecrire2
Print #1, Ecrire3

Close #1
'Next
MsgBox Ecrire1
MsgBox Ecrire2
MsgBox Ecrire3

End Sub





il permet de changer """ (3guillemets) en " (1seul guillement) et ; (1point virgule) en , (1virgule)
le problème se pose car ici je peu uniquement faire cela si mon fichier a 3 lignes, j'aimerais donc pouvoir faire sa peu importe la longueur de mon fichier. donc de manière dynamique...

merci d'avance
Afficher la suite 

6 réponses

Répondre au sujet
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 15 févr. 2012 à 10:18
+3
Utile
ok...

Option Explicit

Private Sub Form_Load()
    '# Permet de rafraichir les Drive/Dir/File d'un seul coup...
    Drive1_Change
End Sub

Private Sub Drive1_Change()
    On Local Error Resume Next
    Dir1.Path = Drive1.Drive
    If Err Then
        MsgBox "Disque " & Drive1.Drive & " non prêt", vbExclamation, Err.Description
        '# On annule la selection du drive
        Drive1.Drive = Left$(Dir1.Path, 2)
    End If
End Sub

Private Sub Dir1_Change()
    File1.Path = Dir1.Path
    File1.Pattern = "*.txt"
End Sub

Private Sub Start_Click()
Dim i As Integer
Dim sPath As String
    sPath = File1.Path
    If Right$(sPath, 1) <> "" Then
        sPath = sPath & ""
    End If
    '# Pour chaque fichier de la liste
    For i = 0 To File1.ListCount - 1
        '# Si j'ai selectionné mon fichier...
        If File1.Selected(i) Then
            TraiterFichier sPath & File1.List(i)
        End If
    Next
End Sub

Private Sub TraiterFichier(ByRef vsFilePath As String)
Dim Content As String
Dim FF As Integer
    '# Bonne habitude a prendre que de ne pas utiliser #1 en dur...
    FF = FreeFile
    '# Lecture de tout le contenu du fichier
    Open vsFilePath For Binary Access Read As #FF
        '# On reserve suffisamment de place dans la variable
        Content = Space$(LOF(FF))
        Get #FF, , Content
    Close #FF
    
    '# Nettoyage...
    Content = Replace(Content, """""""", """")
    Content = Replace(Content, ";", ",")
    
    '# On ouvre le fichier en ecriture
    Open vsFilePath For Output As #FF
        '# On y écrit le contenu
        Print #FF, Content,
        '# Le , final est là pour ne pas générer de saut de ligne en toute fin de fichier
    Close #FF
End Sub




Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Renfield
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 15 févr. 2012 à 09:47
0
Utile
supprimer le traitement deux et trois...
la boucle, etc....

Dim Content As String
    Open File For Binary Access Read As #1
        Content = Space$(LOF(1))
        Get #1, , Content
    Close #1
    Content = Replace(Content, """"""", """)
    Content = Replace(Content, ";", ",")
    Open File For Output As #1
        Print #1, Content,
    Close #1




Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Commenter la réponse de Renfield
kkrooolf 5 Messages postés jeudi 9 février 2012Date d'inscription 15 février 2012 Dernière intervention - 15 févr. 2012 à 10:03
0
Utile
merci Renfield,

pourriez vous juste m'écrire le code en entier car je ne sais pas ou faire exactement les remplacements car il affiche erreur..

merci d'avance
Commenter la réponse de kkrooolf
kkrooolf 5 Messages postés jeudi 9 février 2012Date d'inscription 15 février 2012 Dernière intervention - 15 févr. 2012 à 12:43
0
Utile
merci beaucoup, et cela marche !!
Commenter la réponse de kkrooolf
kkrooolf 5 Messages postés jeudi 9 février 2012Date d'inscription 15 février 2012 Dernière intervention - 15 févr. 2012 à 14:15
0
Utile
maintenant mon programme est terminé, comment vais-je faire pour le transformé en programme éxécutable ?

Merci d'avance
Commenter la réponse de kkrooolf
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 15 févr. 2012 à 14:52
0
Utile
File (ou Fichier) ===> make exe (ou faire exe) ne serait pas la bonne réponse ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.