Fichier excel entxt avec "

dbou76 Messages postés 2 Date d'inscription mardi 22 juin 2010 Statut Membre Dernière intervention 29 novembre 2010 - 26 nov. 2010 à 16:25
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 - 29 nov. 2010 à 15:14
J'enregistre un tableau Excel en mode txt.Pas de soucis sauf:
- quand la cellule contient un " (guillemet) ou une ,(virgule)
le texte est alors entouré avec des guillemets.

Ceci pose un pb pour l'exploitation du txt.

Peut on éviter cela

Merci

3 réponses

cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
26 nov. 2010 à 17:09
Bonjour donc quand on le sait on prévient avant de guérir

Avant d'enregistrer le fichier excel en texte (événement BaforeSave) , on parcourt les cellules et on remplace les guillemets et virgules par d'autres caractères (exemple simple cote et point) qui sont acceptables pour l'utilisateur final.


Sub TraiterFeuilleAvantEnregistrer(Feuille)
Dim lastCol
Dim lastRow
Sheets(Feuille).Activate
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row

For each Cell in ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select

Cell.Value = Replace(Cell.Value,Chr(34),"'")
Cell.Value = Replace(Cell.Value,",",".")
Next
End Sub


Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call TraiterFeuilleAvantEnregistrer(Feuil1)
End Sub
0
dbou76 Messages postés 2 Date d'inscription mardi 22 juin 2010 Statut Membre Dernière intervention 29 novembre 2010
29 nov. 2010 à 12:02
Merci de ta réponse.

Par contre, je ne peux pas remplacer les " ou ; ,ils sont utilisés dans l'application finale.

Bye
0
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
29 nov. 2010 à 15:14
la commande Replace fait cela

Chr(34) est le caractère double-cote on le remplace par une simple cote

Cell.Value = Replace(Cell.Value,Chr(34),"'")
0
Rejoignez-nous