IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Remplacer 1 seule fois dans un fichier texte


Sujet :

VBScript

  1. #1
    Membre habitué Avatar de Superpat9999
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2003
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 436
    Points : 189
    Points
    189
    Par défaut Remplacer 1 seule fois dans un fichier texte
    Bonjour, j'ai écrit un code en VSB afin d'ouvrir un fichier bancaire et modifier un chiffre, ce code fonctionne correctement, mais je veux l'améliorer : Le chiffre de la carte sera recherché à partir de la fin du fichier et remplacé qu'une seule fois par le solde. Pourriez-vous m'aider en modifiant les dernières lignes.
    Actuellement tout est remplacé ! (Si j'ai par hasard 2 fois le même chiffre c'est cuit
    De plus une fois celui-ci modifié, je voudrais lancer le fichier.
    Merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    'Ofx.vbs
     
    Set objDialog = CreateObject("UserAccounts.CommonDialog")
     
    'Filtre des fichiers
    objDialog.Filter = "Money|*.ofx|Tous les fichiers|*.*"
    objDialog.Flags = &H0200
    objDialog.FilterIndex = 1
    objDialog.InitialDir = "D:\downloads"
    intResult = objDialog.ShowOpen
     
    If intResult = 0 Then
        Wscript.Quit
    Else
     
    End If
     
    'La variable est : repertoire
    repertoire =  objDialog.FileName
    frappe= "F"
    while  frappe = "F"
       solde = inputbox("Donnez le solde du compte", "Solde du compte")
       If Instr(1,solde,"+",1)= 1 then frappe="T"
       If Instr(1,solde,"-",1)= 1 then frappe="T"
    wend
     
    frappe= "F"
    while  frappe = "F"
       carte = inputbox("Donnez le solde de la carte", "Solde de la carte")
       If Instr(1,carte,"+",1)= 1 then frappe="T"
       If Instr(1,carte,"-",1)= 1 then frappe="T"
    wend
     
    msgbox "Soldes des comptes : [" & solde & "] +  [" & carte & "]"
     
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Dim fso, f
    Dim st
    Set fso = CreateObject("Scripting.FileSystemObject")
     
    '******************************************************
    '************ Changement à partir d'ICI **********************
    '******************************************************
     
    'Ouverture et lecture du fichier à modifier
    'Set f = fso.OpenTextFile(repertoire, ForReading)
    'st = f.readAll
    'f.Close
     
    'Ecriture du fichier modifié... aprés avoir remplacer "Carte" par "Solde".
    'Set f = fso.OpenTextFile(repertoire, ForWriting)
    'f.Write replace(st,carte,solde,1,-1,0)
    'f.close
    Le mieux est l'ennemi du bien

  2. #2
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 083
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 083
    Points : 16 808
    Points
    16 808
    Par défaut
    Citation Envoyé par MSDN
    Replace, fonction
    Syntaxe

    Replace(expression, find, replacewith[, start[, count[, compare]]])
    count Facultatif:
    Nombre de remplacements de sous-chaîne à effectuer. Si cette valeur est omise, la valeur par défaut -1, qui signifie tous les remplacements possibles, est employée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    f.Write replace(st,carte,solde,1,1,0)
    le 5 éme paramétre.
    Si tu n'as pas MSDN tu peux le charger ICI (en bas de page du forum ou d'une discussion, OUTILS VB ==> MSDN VB6 Fr)

    Motif de l'edit:
    Citation Envoyé par Binns Voir le message
    ........
    De plus une fois celui-ci modifié, je voudrais lancer le fichier.
    Merci.
    Avec MSDN onglet Rechercher, mots a rechercher WScript.shell, WshShell Object, bas de page droite RUN ==> WshShell.Run en bas de page Exemple
    pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre habitué Avatar de Superpat9999
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2003
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 436
    Points : 189
    Points
    189
    Par défaut
    Merci pour la réponse, je m'approche...
    C'est bien, mais je souhaite la recherche en partant de la fin vers le haut
    Le mieux est l'ennemi du bien

  4. #4
    Membre régulier
    Inscrit en
    Septembre 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 63
    Points : 76
    Points
    76
    Par défaut
    essayes avec InStrRev()

  5. #5
    Membre habitué Avatar de Superpat9999
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2003
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 436
    Points : 189
    Points
    189
    Par défaut
    J'ai trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Dim fso, Fichier, FR, textCont, Carte, Solde, Compteur, Ligne
    Const ForReading = 1, ForWriting = 2
     
    Solde = "+9999.99"
    Carte = "-25.30"
    Fichier = "C:\Documents and Settings\Superpat\Bureau\CA20090903_1029.ofx"
    Compteur = 0
    Ligne=0
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set FR = fso.opentextfile(fichier, 1, True)
     
    Do While Not Fr.AtEndOfStream
    	chaine = Fr.readline()
    	If InStr(1, chaine, carte) > 0 Then
    		ligne = Fr.Line
    	End If
    Loop
    FR.close
    Set FR = Nothing
    Set fso = Nothing
     
    'Exemple d'après Sympatix.
    'Cet exemple ouvre le fichier *.ocx, lit 'chaque ligne, si elle ressemble à "Ligne à modifier",
    'copie la chaine "Ligne modifiée" dans un nouveau fichier nommé titi.txt, sinon, recopie simplement
    'la ligne lue. A la fin, le fichier titi.txt est renommé en *.ocx. Et la ligne "Ligne à modifier" est
    'bien remplacée par "Ligne modifiée".
     
     
    '-------Début du script de copie de fichier- Remplacement--------
    Const Pour_Lire = 1
    Const Pour_Ecrire = 2
    AModif = testCont
    Modif = solde
    Fichier1 = Fichier
    Fichier2 = "C:\Documents and Settings\Superpat\Bureau\titi.txt"
     
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set FR = FSO.OpenTextFile (Fichier1, Pour_Lire)
    Set F2 = FSO.CreateTextFile (Fichier2, True, False)
     
    Do Until FR.AtEndOfStream
    	Lit = FR.ReadLine
    '	WScript.Echo "10 : " & lit
    '	WScript.Echo "11 : " & ligne		'93
     
    	If Ligne=FR.Line Then
    		F2.WriteLine "<BALAMT>"& Modif
    	Else
    		F2.WriteLine Lit
    	End If
    Loop
    Set FR = Nothing
    Set F2 = Nothing
    fso.DeleteFile Fichier1
    FSO.MoveFile Fichier2, Fichier1
    '--------Fin du script--------
    Encore merci pour vos réponses
    Le mieux est l'ennemi du bien

  6. #6
    Membre habitué Avatar de Superpat9999
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2003
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 436
    Points : 189
    Points
    189
    Par défaut lancer le fichier ofx
    Je termine ma programmation (suite du code).
    J'ai un fichier d'extension ofx, lorsque je clique dessus il copie automatiquement les comptes dans Money. L'ayant modifié et refermé je le lance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    Set WSHShell = WScript.CreateObject("WScript.Shell")
    set shell = wscript.CreateObject("Shell.Application")
     
    shell.Open fichier
    Merci encore à tous, grâce aux codes que j'ai trouvés ici ou là, je suis arrivé à faire ce qui m'intéressait.

    Le mieux est l'ennemi du bien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. insérer ou remplacer une ligne string dans un fichier texte ?
    Par Night_Wolf1619 dans le forum Débuter
    Réponses: 34
    Dernier message: 16/05/2013, 11h49
  2. [VBA-E]Remplacement virgules par tabulation dans un fichier texte
    Par Mlezen dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 03/05/2006, 14h03
  3. [Tableaux] Remplacer une seule fois un mot dans un texte.
    Par psychoBob dans le forum Langage
    Réponses: 38
    Dernier message: 24/01/2006, 16h07
  4. Réponses: 3
    Dernier message: 27/06/2005, 16h24
  5. Réponses: 5
    Dernier message: 25/01/2005, 14h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo