[Résolu]Excel 2010 - remplacer chaine de caractère dans un fichier

Excel 2010 - remplacer chaine de caractère dans un fichier [Résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 18-12-2014 à 08:50:09    

Bonjour tout le monde!  
 
J'aimerais faire une macro excel qui demande à l'utilisateur de sélectionner un dossier, puis qui dans ce même dossier, modifie 2 fichiers puis les enregistre.  
 
Voici le début de mon code :  
 

Code :
  1. Sub MiseEnForme()
  2. 'Cette fonction permet de supprimer les commentaires des fichiers part.xml,
  3. 'et de lire la pub de conf avec les dernières versions des navigateurs
  4. Dim oFSO As Object
  5. Dim monFic As Integer
  6. Dim chemin As String
  7. Set oFSO = CreateObject("Scripting.FileSystemObject" )
  8. 'on récupère le dossier de la pub de conf
  9. chemin = GetDirectory("Sélectionnez le répertoire contenant la pub de conf" )
  10. *******************************
  11. 'on supprime les commentaires des fichiers part.xml
  12. supprimerCommentaires (chemin & "\parts" )
  13. MsgBox ("Transformation done" )
  14. Shell "explorer " & chemin, vbNormalFocus
  15. End Sub


 
En fait, là où j'ai mis les étoiles, on faisait directement un copié collé des fichiers pour les remplacer dans le dossier que l'utilisateur avait sélectionné au préalable, mais vu que c'est pour un client externe maintenant, et que on récupérait des fichiers sur le réseau interne, bah ça ne fonctionnera pas chez le client XD
 
Ce qu'il y avait :
 

Code :
  1. 'On remplace les fichier part.xsl et tree.xsl par des fichiers modifiés pour être lus via n'importe quel navigateur
  2. oFSO.copyfile "C:\reseau\style\tree.xsl", chemin & "\style\tree.xsl"
  3. oFSO.copyfile "C:\reseau\style\part.xsl", chemin & "\style\part.xsl"


 
Ce que j'aimerais :  
Faire une recherche dans les fichiers tree.xsl et part.xsl qui sont dans le dossier que l'utilisateur a choisi afin de trouver la chaine de caractère : method="xml"
Dans les 2 fichiers, la remplacer par method="html"
Enregistrer les 2 fichiers.
 
Merci pour votre aide !!  :jap:


Message édité par minimoack le 18-12-2014 à 09:45:47
Reply

Marsh Posté le 18-12-2014 à 08:50:09   

Reply

Marsh Posté le 18-12-2014 à 09:40:44    

Bon...  
 
j'ai trouvé ça, je vais essayer voir si ça marche :  

Code :
  1. 'On modifie les fichiers tree.xsl et part.xsl pour être lus via n'importe quel navigateur
  2. str = FileInMemory(chemin & "\style\tree.xsl" )
  3. str = Replace(str, "method=" & Chr(34) & "xml" & Chr(34), "method=" & Chr(34) & "html" & Chr(34))
  4. a = MemoryInFile(chemin & "\style\tree.xsl", str)
  5. str = FileInMemory(chemin & "\style\part.xsl" )
  6. str = Replace(str, "method=" & Chr(34) & "xml" & Chr(34), "method=" & Chr(34) & "html" & Chr(34))
  7. a = MemoryInFile(chemin & "\style\part.xsl", str)

Reply

Marsh Posté le 18-12-2014 à 09:41:51    

avec ça comme fontions :  

Code :
  1. Public Function FileInMemory(ByVal stFilePath As String) As String
  2. 'Variable locale
  3.     Dim hFile As Integer
  4. 'Gestion des erreurs
  5.     On Error GoTo InBinary
  6. 'Initialisation
  7.     hFile = FreeFile
  8. 'Ouverture du fichier
  9.     Open stFilePath For Input As hFile
  10.         FileInMemory = Input(LOF(hFile), hFile) 'Ne prend pas les caractères binaires
  11.     Close hFile
  12.     Exit Function
  13. 'Si problème avec des caractères binaires...
  14. InBinary:
  15.     Close hFile
  16.     hFile = FreeFile
  17. 'Ouverture du fichier
  18.     Open stFilePath For Binary As hFile
  19.         FileInMemory = Input(LOF(hFile), hFile) 'Accepte les caractères binaires
  20.     Close hFile
  21. End Function
  22. Public Function MemoryInFile(ByVal stFilePath As String, ByVal stData As String) As Boolean
  23. 'Variable locale
  24.     Dim hFile As Integer
  25. 'Initialisation
  26.     hFile = FreeFile
  27.     MemoryInFile = False
  28. 'Gestion des erreurs
  29.     On Error GoTo fin
  30. 'Ouverture du fichier
  31.     Open stFilePath For Output As hFile
  32.         Print #hFile, stData
  33.     Close hFile
  34. 'true si Ok
  35.     MemoryInFile = True
  36. fin:
  37. End Function


 
Par contre, si quelqu'un peut m'expliquer cette histoire de caractère binaire, je suis partante :D

Reply

Marsh Posté le 18-12-2014 à 09:45:08    

 
           Bonjour,
 
           lire l'intégralité du fichier dans une variable texte (cf aide VBA Open For Input as #1 & Input(LOF(1), #1) …)
           puis y appliquer la fonction Replace et réécrire le fichier (cf Open For Output & Print #…) par exemple.
 
           Edit : trop tard …
 
           Si c'est un fichier texte, pas besoin de gérer les caractères binaires


Message édité par Marc L le 18-12-2014 à 09:47:58
Reply

Marsh Posté le 18-12-2014 à 09:47:31    

ok merci. Le code que j'ai posté précédemment fonctionne, mais je vais voir si je ne peux pas le simplifier en utilisant ce que tu m'as donné, merci ;)

Reply

Marsh Posté le 18-12-2014 à 09:51:04    

 
           Du reste je t'ai déjà indiqué cette méthode de lecture de fichier le 5/02/2013 !
 

Reply

Marsh Posté le 18-12-2014 à 10:06:46    

Arf... :sweat: sorry...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed