begin process at 2010 02 10 10:12:23
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBScript

 > 

Aide pr code VBscript


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Aide pr code VBscript

mardi 12 mai 2009 à 19:08:22 | Aide pr code VBscript

jeanjeandada

Bonjour,

Connaitriez-vous le code pour en VBscript pour :
1)ouvrir un fichier .txt dans tel répertoire
2) Effectuer la fonction "remplacer" pour remplacer un caractére par un autre
3) Fermer le txt en le sauvegardant.

(PS : Le code du 1 je devrait facilement le trouver)
Merci bcp
mardi 12 mai 2009 à 20:37:49 | Re : Aide pr code VBscript

jack

Administrateur CodeS-SourceS
Salut
Jamais fait de Script, mais la structure reste la même.
Ouvrir un fichier --> recherche "vbscript ouvrir fichier" dans la recherche des codes en excluant .Net
A mon avis, tu ne pourras pas modifier le contenu d'un fichier.
Il faut :
Ouvrir en lecture ton fichier d'origine,
Ouvrir un nouveau fichier de destination en écriture,
Lire chaque ligne du fichier d'origine
Le tripatouiller le texte comme tu veux
Enregistrer le nouveau texte dans le nouveau fichier
Continuer à lire les autres lignes et les modifier comme tu veux
Fermer les deux fichiers
Détruire l'original
Renommer le nouveau avec le nom de l'ancien

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
mercredi 13 mai 2009 à 09:25:29 | Re : Aide pr code VBscript

dareman

bonour,
voici un site qui poura t'aider moi il m'a bien dépanné :
http://www.bellamyjc.org/fr/vbscript.html

sinon pour ce qui est du code que tu recherche j'ai fait quasiment la même chose il y a 2 semaines en voici un extrait:

'___________________________________________________________________________pour le chemin local du fichier
Set objShell = WScript.CreateObject("WScript.Shell")
Set objExecObject = objShell.Exec("cmd /c chdir") ' affiche le chemin pour accéder au répertoire courant
path = Replace(objExecObject.StdOut.Read(260), vbCrLf, vbNullString) & "\" ' replace permet de remplacer vbCrLf (retour chariot et saut de ligne)
' par vbNullString (""), objExecObject.StdOut.Read(260) permet de récupérer le résultat de la commande dos
'_________________________________________________________________________________________________________________________________________________        
        Set fso = CreateObject("Scripting.FileSystemObject" ) ' creation d'un objet pour appellé la méthode de vérification de présence d'un fichier
        IF  fso.FileExists(NomFichier) then ' test si le fichier est présent sinon relance l'exportation
                Set MyObject = CreateObject("Scripting.FileSystemObject" ) ' déclaration d'un objet pour manipuler un fichier
                Set MyFile = MyObject.GetFile(Path  & NomFichier ) ' ouverture du fichier avec NomFichier défini et initialisé comme 1 variable
'contenant le nom du fichier
                ' je crée la référence du fichier
                Set MyoutObject = CreateObject("Scripting.FileSystemObject")
                ' je crée le fichier .txt dans le répertoire windows.
                Set MyoutFile = MyoutObject.CreateTextFile("exportcsvde2.txt" ,false, true) ' probléme lors du rajout de: & cstr(Date)
                ' false pour l'overwrite (débordement), true pour l'unicode
                Set OpenFile = MyFile.OpenAsTextStream(1,-1)
                'Recherche des occurences de pwdlastset
                if OpenFile.AtEndOfStream = False then
'____________________________________________________________________________________________________________________________________intialisation                 
                 ' lecture de la premiére ligne ne doit pas etre traiter (car ne comporte que les titres)
                 lign1 = OpenFile.ReadLine        
                 MyoutFile.WriteLine(lign1) 'inscrit bien sur une ligne aucun probléme de débordement sur la ligne du dessous ^^                    
                lign2 = lign1
                nb = 0
                do while lign2<>""  ' permet de trouver le nombre de champs présent dans l'entete
                    lign2=extraitListeD(lign2,strSeparateur)
                    nb=nb+1
                loop
                j=1
                k = 1
                while j<= nb
                    if (Mid(lign1,k,1) = strSeparateur) then ' on réinitialise la chaine temp et on saute la ,
                        chaine2 = ""
                        k = k + 1
                    end if
                    while (Mid(lign1,k,1) <> strSeparateur and Mid(lign1,k,1) <> "") ' stock car par car jusqu'a la prochaine ,
                            chaine2 = chaine2 & Mid(lign1,k,1)        
                            k = k + 1                            
                    wend
                    strPosition(j) = chaine2 ' on rempli un tableau temporaire a partir de la ligne d'entete
                    j = j+1
                wend
        
                for i=1 to nb
                if (strPosition(i) = DN) then
                numeroChampDn = i ' on stock la position du champ dn
                elseif (strPosition(i)=pwd) then
                numeroChampPwdLastSet = i 'on stock la position du champ de pwdlasset
                elseif (strPosition(i)=mana) then
                numeroChampManager = i ' on stock la position du champ manager
                end if
                next    
                End if 'avance bien d'une position dans le fichier en lecture
'____________________________________________________________________________________________________



voila sa devrai te donner une idée de comment faire,  ce code permet de rechercher caractère par caractére dans un fichier du moin pour la premiére ligne aprés il te suffit de faire
Do While OpenFile.AtEndOfStream = False 
pour parcourir tout le fichier, et pour suprimer le fichier en lecture à la fin de ton script tu fait
   OpenFile.Close
    MyoutFile.Close
    MyFile.Delete



mercredi 13 mai 2009 à 16:21:48 | Re : Aide pr code VBscript

jeanjeandada

Slt OK super pour votre réponse. merci beaucoup!
Ce que je voudrais effectuer concrétement : remplacer tous les caractéres : "#" par "/"

dareman j'ai comprend en gros ce que tu voulais faire.
Tu utilise DOS juste pour récupérer le chemin de ton fichier de lecture ?
Qu'est ce que le pwdlastset ?

 1) J'ouvre mon fichier de lecture, je crée mon fichier d'écriture :     
                Set MyObject = CreateObject("Scripting.FileSystemObject" ) ' déclaration d'un objet pour manipuler un fichier
Dim MyDate
MyDate = Date
 
                Set MyFile = MyObject.GetFile("C:\Documents and Settings\XX\Bureau\lecture_MyDate.txt")  ' ouverture du fichier lecture avec NomFichier défini et initialisé comme 1 variable
'contenant le nom du fichier
                ' je crée la référence du fichier
                Set MyoutObject = CreateObject("Scripting.FileSystemObject")
                ' je crée le fichier d'écriture .txt dans le répertoire windows.
                Set MyoutFile = MyoutObject.CreateTextFile("lecture_MyDate.txt" ,false, true) ' ca ne marche pas pour ouvrir un fichier un MyDate ?   ' false pour l'overwrite (débordement), true pour l'unicode
                Set OpenFile = MyFile.OpenAsTextStream(1,-1) 'pq -1 ?

2) (je suis un peu perdu maintenant) Tout d'abord pour info ma premiere ligne ne comporte pas de titre.
lign1 = OpenFile.ReadLine   'cela me permet de lire la ligne      
                 MyoutFile.WriteLine(lign1) 'permet d'écrireMais comment tu fais pour passer d'un fichier a un autre ???                    
                lign2 = lign1
                nb = 0
                do while lign2<>""  ' permet de trouver le nombre de champs présent dans l'entete
                    lign2=extraitListeD(lign2,strSeparateur)
                    nb=nb+1
                loop    
'Cette partir permet de connaitre le nbre de ligne dans le fichier de lecture ???

                j=1
                k = 1
                while j<= nb
                    if (Mid(lign1,k,1) = strSeparateur) then ' on réinitialise la chaine temp et on saute la ,
                        chaine2 = ""
                        k = k + 1
                    end if
                    while (Mid(lign1,k,1) <> strSeparateur and Mid(lign1,k,1) <> "") ' stock car par car jusqu'a la prochaine ,
                            chaine2 = chaine2 & Mid(lign1,k,1)        
                            k = k + 1                            
                    wend
                    strPosition(j) = chaine2 ' on rempli un tableau temporaire a partir de la ligne d'entete
                    j = j+1
                wend  
'Cette partie permet de lire les caractéres que tu souhaite de la variable : ligne1 ???
        


                for i=1 to nb
                if (strPosition(i) = DN) then
                numeroChampDn = i ' on stock la position du champ dn
                elseif (strPosition(i)=pwd) then
                numeroChampPwdLastSet = i 'on stock la position du champ de pwdlasset
                elseif (strPosition(i)=mana) then
                numeroChampManager = i ' on stock la position du champ manager
                end if
                next    
                End if 'avance bien d'une position dans le fichier en lecture

Est quand est ce que t'écris sur le fichier de lecture ?

Merci et A+ : )

mercredi 13 mai 2009 à 16:22:56 | Re : Aide pr code VBscript

jeanjeandada

"Est quand est ce que t'écris sur le fichier de lecture ?" plutot :
"Est quand est ce que t'écris sur le fichier d'écriture?"
mercredi 13 mai 2009 à 16:40:48 | Re : Aide pr code VBscript

dareman

salu,
j'écri dans le fichier une premiére ligne sans la traitée en faite
MyoutFile.WriteLine(lign1)

aprés je t mis un exemple de parcour d'une ligne du fichier .txt caractère par caractère avec des test qui étaient propres a mon prog tu ne doit pas les prendre en compte ^^

en gros tu fait:
Do While OpenFile.AtEndOfStream = False
     ligneFichier=OpenFile.readLine()
j =1
lignePoubelle =
ligneFichier
 do while ligneFichier<>""
     while j<= nb
            if (Mid(ligneFichier,j,1) =
"#") then
                          Mid(lignePoubelle,j,1) = "/"    'pour remplacer ton caractére
                          j = j+1
                         else
                         Mid(lignePoubelle,j,1)  = (Mid(ligneFichier,j,1)
                         j=j+1
                         end if
                         wend
loop
MyoutFile.WriteLine(lignePoubelle)
loop


voila si je me suis pas planté se devrai marché
mercredi 13 mai 2009 à 16:43:07 | Re : Aide pr code VBscript

dareman

Tu utilise DOS juste pour récupérer le chemin de ton fichier de lecture ?   oui
Qu'est ce que le pwdlastset ?  c t un champ a récupérer dans mon application mais sa ne te concerna pas j'aurai du arre t le copier/coller avt ^^
c pour sa que je n'est pas mit le code en entier parcequ'&aprés sa se complique encore +
vendredi 15 mai 2009 à 12:21:31 | Re : Aide pr code VBscript

jeanjeandada

Salut,

ok Super
Mais qques trucs me perturbent encore. Ci dessous le code (est-il juste ??):

Set MyObject = CreateObject("Scripting.FileSystemObject" )
Dim MyDate
MyDate = Date
                Set MyFile = MyObject.GetFile("C:\Documents and Settings\jdh\Bureau\rapports DEWI\abla.txt") 
 
             
                Set MyoutObject = CreateObject("Scripting.FileSystemObject")
               
                Set MyoutFile = MyoutObject.CreateTextFile("lecture_MyDate.txt" ,false, true)
                Set OpenFile = MyFile.OpenAsTextStream(1,-1)



lign2 = OpenFile.ReadLine()'OpenFile permet bien d'ouvrir le fichier d'écriture ??        

        nb = 0
         do while lign2<>""  
               nb=nb+1
         loop

Do While OpenFile.AtEndOfStream = False
     ligneFichier=OpenFile.readLine()
j =1
lignePoubelle =ligneFichier
 do while ligneFichier<>""

     while j<= nb'la variable nb correspond au nbre de caractére sur la ligne.
            if (Mid(ligneFichier,j,1) = "#") then
                          Mid(lignePoubelle,j,1) = "/"   
                          j = j+1
                         else
                         Mid(lignePoubelle,j,1)  = (Mid(ligneFichier,j,1)
                         j=j+1
                         end if
                         wend
loop
MyoutFile.WriteLine(lignePoubelle)
loop

L'éxécution ne marche pas. Il me dit qu'il y a un probléme sur la ligne :
Mid(lignePoubelle,j,1)  = (Mid(ligneFichier,j,1)

A la fin le fichier de lecture n'est pas "détrui" ? On n'as pas paramatré le nom et le chemin du fichier d'écriture ?

Merci @+

samedi 16 mai 2009 à 09:43:34 | Re : Aide pr code VBscript

JMO

Membre Club


 Bonjour,

- contrôle existence fichier et contrôle fichier non vide
- écriture du fichier, avec replace éventuel,  dans un tableau
- fermeture du fichier
- ré-écriture du fichier à partir du tableau

Option Explicit

FnWordChange "D:\Test.txt", "#", "/"

Function FnWordChange(sFileText, sWordsToRemove, sWordsToChange)
    Dim oFso, oFile, aLineFicTxt, i
    Set oFso = CreateObject("Scripting.FileSystemObject")
'   Controle existence fichier
    If oFso.FileExists(sFileText) Then
       Set oFile = oFso.GetFile(sFileText)
'      Controle fichier non vide
       If oFile.Size <> 0 Then
          Set oFile = oFso.OpenTextFile(sFileText, 1)
'         aLineFicTxt est un tableau contenant toutes les lignes du .txt
'         chaque sWordsToRemove de chaque ligne est remplacé par sWordsToChange
          aLineFicTxt = Split(Replace(oFile.ReadAll,sWordsToRemove , sWordsToChange),vbCrLf)
          oFile.Close

'         Ecriture du fichier
          Set oFile = oFso.CreateTextFile(sFileText, True)
          For i = LBound(aLineFicTxt) To UBound(aLineFicTxt)
              oFile.WriteLine aLineFicTxt(i)
          Next
          oFile.Close
       End If   
    Else
       WScript.Echo "Fchier " & sFileText & " inexistant"
    End If
    Set oFile = Nothing
    Set oFso = Nothing
End Function




jean-marc
lundi 18 mai 2009 à 18:08:18 | Re : Aide pr code VBscript

jeanjeandada

OK super ton prog.
Juste une chose. je sais le faire en VBA mais pas en VBS :
Voilà le code VBA que j'ai essayé de mettre dans le prog. VBS

tableau_Projet = Array("ff1", "E79SGLC")
For Each projet In tableau_Projet

FnWordChange "C:\Documents and Settings\XX\Bureau\esaiT" & projet & ".txt", "#", "/"

Next

Bien sur cela ne marche pas en VBS et il me signale une erreur à la ligne en rouge
Merci



Cette discussion est classée dans : vbscript, aide, code, txt, pr


Répondre à ce message

Sujets en rapport avec ce message

Aide pour cloner un VBScript ! [ par zaert ] Slt all ! Je fais un petit VBScript et je lui est integrer un code pour qu'il se redemarre au (re)boot du PC ! Probleme , quand j'ai tester mon VBScri Besoin d'aide ds mon code... [ par bimbo777 ] Bonjour,Voici mon code. Je souhaite renommer tout les fichiers de mon répertoire _.txt en .txt mais là je ne vois pas le soucis.Pouvez vous m'aider sv Bonjour j'ai besoin d'aide pour utiliser un code source!!!!!!!! [ par sandragreg ] Bonjour je suis nouveau sur le site, je souhaiterai savoir comment me servir (créer un exe ou une forme utilisable) du code source 8205.J'ai 3 fichier lire un code dans un fichier .txt [ par Achi ] bonjour,Voilà, afin d'allèger mon fichier excel qui commence sérieusement à être lourd au niveau code vba, je souhaiterais pouvoir mettre mes modules desoin d'aide vb.net 2003 [ par Boudchiche ] salut tous le monde Voila j'ai 4 table articles(code_article,article),couleurs(code_couleur,couleur)commande(N_comma transcription d'un code en vbscript [ par djul33 ] Bonjour,j'ai une balise en JScript du type:>J'aimerais transcrire le (missingParam) ? "disabled" : " appliquer un code à plusieurs fichiers txt d'un meme repertoire [ par marco1980 ] Bonjour à tous,je viens d'établir un premier cde en VB avec lequel je transforme un fichier .txt dans un format désiré, c'est-à-dire qu'il me permet d petite aide [ par njo80 ] Bonjour,Je suis novice en vba et j'ai un petit problèmeJe dois importer le contenu de fichiers .txt dans excel.Mais les noms de ces fichiers varient t Besoin d'aide traduction code [ par Within Temptation ] Voilà un morceau de code dont je n'arrive pas à traduire certaines parties, je vous le poste afin que quelqu'un m'aide à le déchiffrer.Merci d'avance. Exécuter code présent dans un txt [ par sylvain09 ] Salut,Développant une application j'ai besoin d'exécuter du code présent dans un txt externe.J'ouvre le txt dans un RichTextBox, tout va bien.Mais com


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,076 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales