Macro pour remplacer les tabulations dans un fichier texte (bloc note).

pduval34

XLDnaute Nouveau
Débutant, j'ai trouvé comment ouvrir depuis Excel le BLOC NOTE et y recopier des données venant de ma feuille Excel.

Mon problème : le texte copier (colonnes issues de ma feuille Excel contient des tabulations (séparateurs de cellules)
Il me faut supprimer ces tabulations (fonction CRTL-H)
Disposeriez des commandes en VBA me permettant d'intégrer cette tâche dans ma macro.

Merci infiniment (c'est l'ultime) problème que je rencontre pour un programme sur lequel je travaille depuis plusieurs jours !!

Signé : Un dinosaure qui utilise encore Office97
 

Staple1600

XLDnaute Barbatruc
Re : Macro pour remplacer les tabulations dans un fichier texte (bloc note).

Bonjour

Disposeriez des commandes en VBA me permettant d'intégrer cette tâche dans ma macro.
Oui tout comme toi.

Car il te suffit de créer le code adéquat avec l'enregistreur de macros ;)

PS: Ce serait plus simple pour faire des tests, si tu joignais dans ta discussion le code actuel de ta macro et un extrait simplifié et anonymisé de ton fichier texte.
 

pduval34

XLDnaute Nouveau
Re : Macro pour remplacer les tabulations dans un fichier texte (bloc note).

Merci de votre attention :

Sub Copie_Bloc_Note()
' Copie la colonne 1 (colonne de titre) et chaque colonne contenant des données dans X fichier
' (Un fichier pour chaque colonne)

Dim i As Long, nwbk As Workbook, chemin$
chemin = "C:\Temp\"

Application.ScreenUpdating = False

For i = 2 To Columns.Count
With ThisWorkbook.ActiveSheet

If .Cells(1, i) <> "" Then
' Tant que la première cellule d'une colonne est remplie

Set nwbk = Workbooks.Add(-4167)

.Range("A1:A20").Copy nwbk.Sheets(1).[A1]
" le libellé des 20 champs
.Cells(1, i).Resize(.Cells(.Rows.Count, i).End(xlUp).Row).Copy nwbk.Sheets(1).[B1]

Application.DisplayAlerts = False
'Evite message de confirmation

nwbk.SaveAs chemin & .Cells(1, i).Text & ".xml", xlText
nwbk.Close

'nwbk.SaveAs chemin & .Cells(1, i).Text & ".txt", xlText, False
'nwbk.Close True

Application.DisplayAlerts = True

End If
End With
Set nwbk = Nothing
Next i




End Sub


On retrouve donc dans chaque fichier la colonne titre plus chacune des colonnes de données.
Dans le fichier texte les données sont séparées par une tabulation je souhaite supprimer toutes les tabulations avant de sauvegarder les fichiers.

Exusez cet exposé brouillon !
 

pduval34

XLDnaute Nouveau
Re : Macro pour remplacer les tabulations dans un fichier texte (bloc note).

Bonsoir,


Pardon pour ces précisions peu claires :
L'exemple joint est surement plus parlant.
Je souhaite donc supprimer les tabulations qui se retrouvent entre ces balises xml de chacun des fichiers générés.
Merci infiniment pour votre aide.
 

Pièces jointes

  • TEST_CREATION_FICHIER.xls
    51 KB · Affichages: 154

Staple1600

XLDnaute Barbatruc
Re : Macro pour remplacer les tabulations dans un fichier texte (bloc note).

Bonsoir


Essaies la macro PMain pour voir.
(C'est une macro qui lance la macro XL2TXT qui est une macro avec paramètres)

PS: N'hésites pas si tu as des questions ;)
VB:
Sub PMain()
XL2TXT "C:\Temp\", "testTXT.txt", xlCSV
End Sub
VB:
Private Sub XL2TXT(chemin$, NFic$, x As XlFileFormat)
Dim nwbk As Workbook
With Application
.ScreenUpdating = 0
    ThisWorkbook.Sheets("F").Copy
    Set nwbk = ActiveWorkbook
        With nwbk.Sheets(1)
            .Columns("A:A").Delete: .Rows("10:65536").Clear: .Range("HH:IV").Clear
        End With
    .DisplayAlerts = 0
    nwbk.SaveAs chemin & NFic, x, 0: nwbk.Close -1
    .DisplayAlerts = -1
End With
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Macro pour remplacer les tabulations dans un fichier texte (bloc note).

Re


Tu copies/colles les deux macros de mon précédent message dans un module dans ton fichier exemple.
Ensuite tu fais Outils/Macros/PMain -> Exécuter

PS: Il faut qu'il existe un dossier C:\Temp , c'est là que sera copier le fichier texte.

Essayes et redis moi si tu as réussis à lancer la macro ;)
 

pduval34

XLDnaute Nouveau
Re : Macro pour remplacer les tabulations dans un fichier texte (bloc note).

De plus, je me rends compte que non content d'avoir des tabulations parasites, j'ai également des guillemets qui apparaissent.
Cette macro étant normalement prévue pour une intégration d'un fichier excel dans une base de données qui impose comme protocole un enregistrement des fiches au format xml avec un fichier par enregistrement.

Cf mon exemple joint qui a évolué !
En tout cas merci et vu l'heure, plutôt à demain....
 

Pièces jointes

  • TEST_CREATION_FICHIER3.xls
    52.5 KB · Affichages: 105

pduval34

XLDnaute Nouveau
Re : Macro pour remplacer les tabulations dans un fichier texte (bloc note).

C'est ce que j'avais fait, je pensais avoir fait une erreur car à l'éxécution j'ai un message d'erreur "type d'ActiveX non gérer par Visual Basic (je suis sur une version 97 d'Excel, ceci explique peut être cela !
 

pduval34

XLDnaute Nouveau
Re : Macro pour remplacer les tabulations dans un fichier texte (bloc note).

Excuse-moi pour l'absence (ma femme m'a poussé au lit hier soir !)

lorsque je lance la macro Pmain
La compilation bute sur la ligne : Private Sub XL2TXT(chemin$, NFic$, x As XlFileFormat)
Le message d'erreur apparaissant est :
"Erreur compilation : Type ActiveX non géré dans Visual basic

Je rappelle ma problématique :

Il me faut générer un fichier txt pour chaque enregistrement (chaque colonne) auquel j'affecte l'extension xml. Ce qui me permet d'obtenir un fichier au format xml.
Mais sur le texte je souhaite supprimer : les délimitants de colonnes (tabulations) et certaines guillemets parasites qui apparaissent cf l'exemple :

Exemple_Fichier_Final.jpg
En fait il me faudrait un code permettant dans le bloc note :
- la suppression de toutes les tabulations.
- le remplacement des chaînes de caractères :
>" en >
"" en "
Cela par une commande dans ma macro à ce niveau :

Code:
   If .Cells(4, i) <> "" Then

Set nwbk = Workbooks.Add(-4167)

.Range("A2:A13").Copy nwbk.Sheets(1).[A1]
.Cells(2, i).Resize(.Cells(.Rows.Count, i).End(xlUp).Row).Copy nwbk.Sheets(1).[B1]
.Range("A14:A24").Copy nwbk.Sheets(1).[C1]

' ********** COMMANDE DE SUPPRESSION DES CARACTERES PARASITES ********

   Application.DisplayAlerts = False
    ' Evite message de demande de confirmation
 
 
 nwbk.SaveAs chemin & .Cells(1, i).Text & ".xml", xlText
 nwbk.Close

'nwbk.SaveAs chemin & .Cells(1, i).Text & ".txt", xlText, False
'nwbk.Close True

     Application.DisplayAlerts = True
     
End If
End With
Set nwbk = Nothing
Next i




End Sub

Avec l'utilisation de word je réglerais le problème avec les macros de word, mais je n'arrive pas sur ma macro de départ à reproduire la création des fichiers avec l'extension xml.
Avec ma version de VBA, pour ouvrir Word il me faut utiliser une commande du type :
Code:
MyAppID = Shell("Winword.EXE " & Chr(34) & ThisWorkbook.Path & "\FICHIER", 1)
AppActivate MyAppID

Mais je ne sais pas ouvrir un nouveau fichier, le sauver avec un nom récupérer sur une cellule d'Excel.

Merci pour votre aide et bonne journée.
 

Pièces jointes

  • Exemple_Fichier_Final.jpg
    Exemple_Fichier_Final.jpg
    30.6 KB · Affichages: 128
  • Exemple_Fichier_Final.jpg
    Exemple_Fichier_Final.jpg
    30.6 KB · Affichages: 142
  • Exemple_Fichier_Final.jpg
    Exemple_Fichier_Final.jpg
    30.6 KB · Affichages: 141
  • Exemple_Fichier_Final.jpg
    Exemple_Fichier_Final.jpg
    51.7 KB · Affichages: 260
  • Exemple_Fichier_Final.jpg
    Exemple_Fichier_Final.jpg
    51.7 KB · Affichages: 270

Staple1600

XLDnaute Barbatruc
Re : Macro pour remplacer les tabulations dans un fichier texte (bloc note).

Bonjour


Essayes avec cette seule macro alors
Sub XL2TXTII()
Dim chemin As String
Dim NFic As String
chemin="C:\Temp\"
NFic="FicTest.txt"
Dim nwbk As Workbook
With Application
.ScreenUpdating = 0
ThisWorkbook.Sheets("F").Copy
Set nwbk = ActiveWorkbook
With nwbk.Sheets(1)
.Columns("A:A").Delete: .Rows("10:65536").Clear: .Range("HH:IV").Clear
End With
.DisplayAlerts = 0
nwbk.SaveAs chemin & NFic, 21, 0
nwbk.Close -1
.DisplayAlerts = -1
End With
End Sub

PS: Auparavant tu supprimes le code de mon précédent message
et tu copies le code dans le chasseur que tu as joint (c'est avec celui-ci que j'ai testé et cela fonctionne)

Et il faut qu'il existe un dossier nommé Temp sur le disque C

 
Dernière édition:

pduval34

XLDnaute Nouveau
Re : Macro pour remplacer les tabulations dans un fichier texte (bloc note).

Oui la macro fonctionne maintenant dans mon environnement, mais les tabulations sont toujours présentes.
Je laisse tomber cette voie pour une utilisation de word au lieu du bloc note d'autant que j'ai ce problème de guillemets parasite lorsqu'une cellule contient des valeurs du type <var nom="Correspondant"> se transforme curieusement en "<var nom=""Correspondant""> (c'est à dire 3 " nouvelles qui viennent de nul part !!!
En tout cas merci beaucoup.
 

Statistiques des forums

Discussions
312 209
Messages
2 086 266
Membres
103 168
dernier inscrit
isidore33