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 :

Modification des paramètres d'un fichier vbs


Sujet :

VBScript

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur Calcul
    Inscrit en
    Mars 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur Calcul

    Informations forums :
    Inscription : Mars 2016
    Messages : 44
    Points : 25
    Points
    25
    Par défaut Modification des paramètres d'un fichier vbs
    Bonjour,

    Dans le but de paramétrer les valeurs d'un fichier.vbs comportant certains paramètres utilisateurs a modifier, j'ai choisi d'ouvrir et lire le fichier vbs en question sous format txt voici un apercu de mon code :
    Nom : code.png
Affichages : 780
Taille : 20,6 Ko
    Et voici ce j'obtiens en l'exécutant :
    Nom : val.png
Affichages : 617
Taille : 7,6 Ko
    C'est le résultat correspondant au première ligne de mon fichier.vbs que je lis en format txt, vu que je suis débutant sous VBscript je souhaite pouvoir changer les valeurs du a,b,c, d.....

    Merci pour votre aide.

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Merci d'utiliser les balises code afin que l'on puisse t'aider.

  3. #3
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Merci d'utiliser les balises code afin que l'on puisse t'aider.
    Remarque pertinente. J'ai aussi à dire qu'une capture d'écran n'est pas utilisable dans un tel cas, il est nécessaire d'envoyer un texte(sans oublier les balises code ) qu'on peut copier et utiliser pour le test, car si on essaie de t'aider, on sera obligé de tout ré-écrire.

    [EDIT] : Quand tu dis
    C'est le résultat correspondant à la première ligne de mon fichier.vbs que .....
    Cela ne peut pas être correct car les valeurs retournées sont sur des lignes différentes(avec retour chariot).
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur Calcul
    Inscrit en
    Mars 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur Calcul

    Informations forums :
    Inscription : Mars 2016
    Messages : 44
    Points : 25
    Points
    25
    Par défaut
    Bonsoir,

    Effectivement, je posterai le code avec les balises, les valeurs retournées ne sont que les lignes existants dans le fichier en lecture txt Model.vbs, je cherche a avoir un script permettant de modifier ces valeurs : a,b,c.. j'ai essayé ForAppending ca n'a pas marché comme je l'aurais souhaité .
    Cordialement;

  5. #5
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut

    Tu sembles avoir une bonne volonté pour progresser, je peux alors te donner un coup demain avec ce
    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
    Option Explicit 
     
    Const ForReading = 1, ForWriting = 2
    Dim fso, F, Affichage, TB, intMsg, iCount, Reponse, Result, Contenu, TargetFile
    Function ReadTextFileTest()
         Dim   Msg ',Folder
         ' On n'a pas besoin de la ligne suivante car si on ne donne pas un chemin pour le 
         ' fichier et on donne juste son nom, Wscript le cherche en premier dans le répertoire 
         ' de travail(répertoire courant).
        ' C'est cette ligne => Folder = Replace(Wscript.ScriptFullName, "\" & Wscript.ScriptName, "") 
         Set fso = CreateObject("Scripting.FileSystemObject") 
         Set F = fso.OpenTextFile("Model.vbs", ForReading, False) 
         ReadTextFileTest = F.Read(1012)
         F.Close
         Set fso = Nothing
    End Function
     
    MsgBox ReadTextFileTest
    Affichage = Mid(ReadTextFileTest, 538, 164)
    MsgBox Affichage
     Set fso = CreateObject("Scripting.FileSystemObject")
     TargetFile = fso.GetFile("Model.vbs").Path
     intMsg = MsgBox("Souhaitez-vous modifier les valeurs des paramètres ?", vbYesNo, "Modifier les paramètres") 
     If intMsg = vbYes Then
        TB = SPlit(Affichage, vbCrlf)
        For iCount = 0 To UBound(TB) - 1
          Reponse = InputBox("Modifier les paramètres ?", "Faire un choix", TB(iCount))
          If Reponse = "" Then 
             MsgBox "Aucune modification n'a été apportée au fichier " & TargetFile
             Wscript.Quit 0
          End If
          Result = Result & Reponse & vbNewLine
        Next
        ' On ajoute la dernière valeur sans retour chariot
        Reponse = InputBox("Modifier les paramètres ?", "Faire un choix", TB(UBound(TB)))
        If Reponse = "" Then 
             MsgBox "Aucune modification n'a été apportée au fichier " & TargetFile
             Wscript.Quit 0
        End If
        Result = Result & Reponse
        ' On lit la totalité du fichier puis on le ferme
        Set F = fso.OpenTextFile("Model.vbs", ForReading, False)
        Contenu = F.ReadAll
        F.Close
        ' On écrit les modifications apportées au fichier et on le ferme
        Set F = fso.OpenTextFile("Model.vbs", ForWriting, False) 
        Contenu = Replace(Contenu, Affichage, Result)
        F.Write Contenu
        F.Close
        MsgBox "Modification terminée"
    Else
        Wscript.Quit 0
    End If
    Adapte le script selon ton besoin notamment les valeurs de début et de fin pour la fonction Mid.
    Le fichier Model.vbs(que j'ai utilisé pour le test) se présente ainsi :
    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
    Option Explicit
     
    Function ShowVolumeInfo(drvpath)
       Dim fso, d, s
       Set fso = CreateObject("Scripting.FileSystemObject")
       Set d = fso.GetDrive(fso.GetDriveName(fso.GetAbsolutePathName(drvpath)))
       s = "Lecteur " & d.DriveLetter & " :  " & d.VolumeName
       ShowVolumeInfo = s
    End Function
    'MsgBox ShowVolumeInfo("C:\Windows")
    '==============================
    Function ShowDriveType()
       Dim fso, d, t, Ret, S
       Set fso = CreateObject("Scripting.FileSystemObject")
       For Each d In fso.Drives
          Select Case d.DriveType
              Case 0: t = "Inconnu"
              Case 1: t = "Amovible"
              Case 2: t = "Fixe"
              Case 3: t = "Réseau"
              Case 4: t = "CD-ROM"
              Case 5: t = "Disque virtuel"
          End Select
           If d.IsReady Then 
              S = UCase("Prêt   ") & d.VolumeName 
           Else 
              S = UCase("non Prêt")
           End If
         Ret = Ret & d.DriveLetter & " : " & t & "  [" & S & "]" & vbNewLine
        Next 
       ShowDriveType = Ret 
    End Function
    MsgBox ShowDriveType
    '============================
    Const CDROM = 4
    Const VIRTUAL = 5
    Dim drv, Ret, fso
    Set fso = CreateObject("Scripting.FileSystemObject")
    For Each drv In fso.Drives
        If drv.IsReady  Then
            If drv.DriveType = CDROM  Then
               Ret = "Lecteur CD :  " & drv.DriveLetter & " : " &  drv.VolumeName & vbNewLine & "==============="  & vbNewLine 
            ElseIf drv.DriveType = VIRTUAL  Then
               Ret = "Lecteur Viruel :  " & drv.DriveLetter & " : " &  drv.VolumeName & vbNewLine & "==============="
            End If
        Else 
           Ret = Ret & "Disque " & drv.DriveLetter & " non prêt !"  & vbNewLine
        End If
    Next
    MsgBox Ret
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Cela ne peut pas être correct car les valeurs retournées sont sur des lignes différentes(avec retour chariot).
    Je pense que ça peut être correcte malgré tout. "F.read(1000)" doit lire les retours chariots ?!

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur Calcul
    Inscrit en
    Mars 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur Calcul

    Informations forums :
    Inscription : Mars 2016
    Messages : 44
    Points : 25
    Points
    25
    Par défaut
    Merci autodidacte le problème est résolu, je partage le code qui marche, je tiens a remercier les personnes qu'ont pris le temps de répondre a mon post
    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
     
    Option Explicit 
     
    Const ForReading = 1, ForWriting = 2
    Dim fso, F, Affichage, TB, intMsg, iCount, Reponse, Result, Contenu, TargetFile, folder
    Function ReadTextFileTest()
         Dim  Msg 
        folder = Replace(Wscript.ScriptFullName, "\" & Wscript.ScriptName, "") 
         Set fso = CreateObject("Scripting.FileSystemObject") 
         Set F = fso.OpenTextFile(folder & "\Model.vbs", ForReading, False) 
         ReadTextFileTest = F.Read(1000)
         F.Close
         Set fso = Nothing
    End Function
     
    MsgBox ReadTextFileTest
    Affichage = Mid(ReadTextFileTest,162, 92) 
    MsgBox Affichage
     Set fso = CreateObject("Scripting.FileSystemObject")
     TargetFile = fso.GetFile(folder & "\Model.vbs")
     intMsg = MsgBox("Souhaitez-vous modifier les valeurs des parametres ?", vbYesNo, "Modifier les parametres") 
     If intMsg = vbYes Then
        TB = SPlit(Affichage, vbCrlf)
        For iCount = 0 To UBound(TB) - 1
          Reponse = InputBox("Modifier les parametres ?", "Faire un choix", TB(iCount))
          If Reponse = "" Then 
             MsgBox "Aucune modification n'a ete apportee au fichier " & TargetFile
             Wscript.Quit 0
          End If
          Result = Result & Reponse & vbNewLine
        Next
        ' On ajoute la dernière valeur sans retour chariot
        Reponse = InputBox("Modifier les parametres ?", "Faire un choix", TB(UBound(TB)))
        If Reponse = "" Then 
             MsgBox "Aucune modification n'a ete apportee au fichier " & TargetFile
             Wscript.Quit 0
        End If
        Result = Result & Reponse
        ' On lit la totalité du fichier puis on le ferme
        Set F = fso.OpenTextFile(folder & "\Model.vbs", ForReading, False)
        Contenu = F.ReadAll
        F.Close
        ' On écrit les modifications apportées au fichier et on le ferme
        Set F = fso.OpenTextFile(folder & "\Model.vbs", ForWriting, False) 
        Contenu = Replace(Contenu, Affichage, Result)
        F.Write Contenu
        F.Close
        MsgBox "Modification terminee"
    Else
        Wscript.Quit 0
    End If

  8. #8
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Je pense que ça peut être correcte malgré tout. "F.read(1000)" doit lire les les retours chariots ?!
    Ma remarque portait sur ce qu'il a dit :
    C'est le résultat correspondant au première ligne de mon fichier.vbs que je lis en format txt, vu que je suis débutant sous VBscript je souhaite pouvoir changer les valeurs du a,b,c, d.....
    et il me semble qu'il parle de la 1ère ligne sinon il aurait mis aux premières lignes. Donc ma remarque reste valide.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  9. #9
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    OK je comprend ton raisonnement mais vu qu'il y à plusieurs lignes sur l'imprime écran ...
    Si il parlait de la première, il aurait du mettre à la première ligne ? (merci de me le confirmer je ne suis pas très fort en Français)

    Mais bon la ça me fait juste rigoler un peu

    A+

  10. #10
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Si il S'il parlait de la première, il aurait du mettre à la première ligne ? (merci de me le confirmer je ne suis pas très fort en Français)
    Il aurait du.
    Ce n'est pas de la polémique mais juste une précision : Dans mon [EDIT] j'ai mis ceci comme citation : C'est le résultat correspondant à la première ligne de mon fichier.vbs que ..... escomptant qu'il voulait dire la première ligne. Je suis enseignant(enfin j'étais) et je sais ce que font à la langue française les élèves et les étudiants(et même quelques diplômés) de nos jours; pas du tout comme nous l'étions autrefois(rigoureux, respectueux des règles de la langue, méticuleux...enfin on ne laissait rien au hasard). Mais à force de voir des fautes d'orthographe et/ou de langue, on commence à s'y habituer....bizarrerie du progrès.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur Calcul
    Inscrit en
    Mars 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur Calcul

    Informations forums :
    Inscription : Mars 2016
    Messages : 44
    Points : 25
    Points
    25
    Par défaut
    Désolé les gars c'était une faute de frappe de ma part je voulais parler de plusieurs premières lignes et non pas la première ligne c'est ma faute de frappe qu'a généré la confusion , En revanche pour des raisons de limitations par rapport aux 1000 premiers caractère je suis parti sur une autre méthode qui offre plus de possibilités et moins de contraintes dont j'expliquerai la démarche ci-dessous :

    1) Utiliser une fichier de base Model.vbs qui comprends les valeurs par défaut a modifier, j'ouvre ce fichier en Txt et je le copie ligne par ligne dans un second fichier Modeldes.vbs
    2) J'intégre une boucle do while ou je souhaite que le temps que les lignes écrites sont différentes d'une certaine limite "START" je peux modifier mon bloc de paramètre et après la boucle je continue le copier coller du fichier normalement Mais je n'arrive pas a finir cette boucle while voici les codes :

    Code du fichier Model.vbs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    a = "1000"
    b = "0"
    c = "0.16"
    d = "1.206"
    v = "1.83e-5"
    g = "1007"
    h = "8"
    r = "1e-6"
    'START'
    '========================
     
    REM ================  Ecriture du fichier s ================
    Code permettant de copier ligne par ligne et la boucle do while :

    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
    '---------------------Copie du contenu du fichier Model.vbs ligne par ligne------
    Option Explicit 
     
    Const ForReading = 1, ForWriting = 2
    Dim fso, folder, f1, f2, ligneFichier1, ligneEnCours, decoupeLigne, i
     
    folder = "C:\Users\anourlil_stag@mecaplast.com\Desktop\Fichiers txt scripts"
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set f1 = fso.OpenTextFile(folder & "\Model.vbs", ForReading, true)
    Set f2 = fso.CreateTextFile("C:\Temp\CFD\Modeldes.vbs", ForWriting, true)
     
    Do While F1.AtEndOfStream <> True
    ligneFichier1 = f1.ReadLine
    'msgbox ligneFichier1
    f2.Writeline ligneFichier1
    ligneEnCours = f2.WriteLine
    While ligneEnCours <> "START"
    decoupeLigne = Split(ligneEnCours, "=")
    select case ligneEnCours
     
    		case "a"
    		f2.WriteLine "800"
     
     
    	end select
     
    ligneEnCours = f1.ReadLine
    ligneEnCours = f2.WriteLine
     
     
    msgbox "CONTINUATION"
    wend
    loop
    f1.Close
    f2.Close
     
    Set fso = Nothing
    J'ai mis que la case a pour l'instant pour tester, Merci pour votre aide et vos conseils.

  12. #12
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Si j'ai bien compris ce que tu voudrais obtenir, voici les modifications apportées au :
    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
    '---------------------Copie du contenu du fichier Model.vbs ligne par ligne------
    Option Explicit 
     
    Const ForReading = 1, ForWriting = 2
    Dim fso, folder, f1, f2, ligneFichier1
     
    'folder = "C:\Users\anourlil_stag@mecaplast.com\Desktop\Fichiers txt scripts"
    Set fso = CreateObject("Scripting.FileSystemObject") 
     
    ' Moi je mettrais la ligne suivante pour éviter le problème d'espace dans le chemin d'un fichier et /ou dossier
    folder = fso.GetFolder("C:\Users\anourlil_stag@mecaplast.com\Desktop\Fichiers txt scripts").ShortPath
     
    Set f1 = fso.OpenTextFile(folder &"\Model.vbs", ForReading, true)
     
    ' CreateTextFile ne prend pas en charge la constante ForWriting mais crée quand même le fichier car toute
    ' valeur non nulle du paramètre overwrite est évaluée à True(si le fichier existe, il sera remplacé).
    ' Voici sa syntaxe : object.CreateTextFile(filename[, overwrite[, unicode]])
    ' Cela n'empêche qu'on peut l'utiliser 
     Set f2 = fso.CreateTextFile("C:\Temp\CFD\Modeldes.vbs", True)
        Do While Not F1.AtEndOfStream  
            ligneFichier1 = f1.ReadLine
            If InStr(1, ligneFichier1, "=", vbTextCompare) = 3 Then ' Position 3 du symbole (=) comme dans le fichier model.vbs
            ' sinon cela retournerait les lignes contenant plusieurs occurrences de ce symbole.
     
                Select Case LCase(Left(ligneFichier1,1)) ' LCase : car si on a une majuscule, on peut la lire
                    Case "a"
                        f2.WriteLine "a = " & chr(34) & "800" & chr(34)
                    Case "b"
                        f2.WriteLine "b = " & chr(34) & "120" & chr(34)
                    Case "c"
                        f2.WriteLine "c = " & chr(34) & "-1" & chr(34)
                    'Case "d"
                         '.................
                    ' Case "v"
                         '.................
                    'Case "g"
                         '.................
                    ' Case "h"
                         '.................
                    'Case "r"
                         '.................
                    Case Else ' si une valeur n'a pas été citée, elle est conservée
                        f2.Writeline ligneFichier1
                End Select
            End If
        Loop
        f1.Close
        f2.Close
        Set f1 = Nothing
        Set f2 = Nothing
        Set fso = Nothing
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur Calcul
    Inscrit en
    Mars 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur Calcul

    Informations forums :
    Inscription : Mars 2016
    Messages : 44
    Points : 25
    Points
    25
    Par défaut Résolu
    Merci pour ton aide autodidacte c'est bon c'est résolu voici le code finalement pour ceux qui seront intéréssés :
    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
    '---------------------Copie du contenu du fichier Model.vbs ligne par ligne------
    Option Explicit 
     
    Const ForReading = 1, ForWriting = 2
    Dim fso, folder, f1, f2,f3, ligneFichier1, decoupeLigne, ligneFichier
     
    folder = "C:\Users\anourlil_stag@mecaplast.com\Desktop\Fichiers txt scripts\Boundary"
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set f1 = fso.OpenTextFile(folder & "\partie1.vbs", ForReading, true)
    Set f2 = fso.CreateTextFile("C:\Temp\CFD\Boundary.vbs", ForWriting, true)
    Set f3 = fso.OpenTextFile(folder & "\partie2.vbs", ForReading, true)
    Do While not F1.AtEndOfStream  
            ligneFichier1 = f1.ReadLine
     If InStr(1, ligneFichier1, "=", vbTextCompare) = 3 Then ' Retourner que les occurences ou le symbole (=) a comme position 3 dans le fichier model.vbs en utilisant la comparaison textuelle
     
     
                Select Case LCase(Left(ligneFichier1,1)) 'Lcase pour convertir les majescules en miniscule, Left pour pointer vers le caractère a gauche de ligneFichier1 de longueur 1
     
                    Case "a"
                        f2.WriteLine "a = " & chr(34) & "1200" & chr(34)
                    Case "b"
                        f2.WriteLine "b = " & chr(34) & "101325" & chr(34)
                    Case "c"
                        f2.WriteLine "c = " & chr(34) & "0.22" & chr(34)
                    Case "d"
                        f2.WriteLine "d = " & chr(34) & "1" & chr(34)
                    Case "v"
                        f2.WriteLine "v = " & chr(34) & "5" & chr(34)
                    Case "g"
                        f2.WriteLine "g = " & chr(34) & "3000" & chr(34)
                    Case "h"
                        f2.WriteLine "h = " & chr(34) & "8" & chr(34)
                    Case "r"
                        f2.WriteLine "r = " & chr(34) & "1.5" & chr(34)
                    Case Else 
                        f2.Writeline ligneFichier1  ' Ecrire les paramètres dans le fichier 2
                End Select
       end if
     
        Loop
    	   ligneFichier = f3.ReadAll ' Lire toutes les lignes du fichier 3
     
       f2.Writeline ligneFichier1 & ligneFichier ' Assembler les deux fichiers pour constituer le fichier qui nous servira de base pour exécuter le fichier s
        f1.Close
        f2.Close
    	f3.Close
        Set f1 = Nothing
        Set f2 = Nothing
    	Set f3 = Nothing
        Set fso = Nothing

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

Discussions similaires

  1. [VBS et HTA] Ajout, modification des commentaires d'un fichier image .jpg
    Par ProgElecT dans le forum Vos Contributions VBScript
    Réponses: 0
    Dernier message: 02/07/2015, 20h46
  2. Réponses: 3
    Dernier message: 05/10/2010, 14h48
  3. Configurer des paramétres dans le fichier server.xml
    Par root76 dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 13/02/2007, 17h16
  4. Réponses: 3
    Dernier message: 08/02/2007, 22h14
  5. Modification des paramètres régionaux et folders options
    Par Looping_V60 dans le forum Access
    Réponses: 1
    Dernier message: 07/06/2006, 19h02

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