Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2749 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2246419
minimoack
Posté le 18-12-2014 à 08:50:09  profilanswer
 

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
mood
Publicité
Posté le 18-12-2014 à 08:50:09  profilanswer
 

n°2246422
minimoack
Posté le 18-12-2014 à 09:40:44  profilanswer
 

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)

n°2246423
minimoack
Posté le 18-12-2014 à 09:41:51  profilanswer
 

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

n°2246425
Marc L
Posté le 18-12-2014 à 09:45:08  profilanswer
 

 
           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
n°2246426
minimoack
Posté le 18-12-2014 à 09:47:31  profilanswer
 

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 ;)

n°2246427
Marc L
Posté le 18-12-2014 à 09:51:04  profilanswer
 

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

n°2246428
minimoack
Posté le 18-12-2014 à 10:06:46  profilanswer
 

Arf... :sweat: sorry...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
boutons ajout date et heure actuelle si la case est vide (excel)Création de script avec lecture d'un fichier texte
taille de police dans une box de texte (moteur de recherche excel vba)[VBA-Excel] Copier-coller sélection à partir d'une recherche
Formulaire web pour accéder à des données sur fichier exceleclatement de fichier excel
Macro Excel supprimer une ligneGestion de Base de données partagées Excel
Plus de sujets relatifs à : [Résolu]Excel 2010 - remplacer chaine de caractère dans un fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR