Annuler la conversion automatique import txt vers excel
conrade82
Messages postés
105
Statut
Membre
-
cs_Le Pivert Messages postés 8437 Statut Contributeur -
cs_Le Pivert Messages postés 8437 Statut Contributeur -
Bonjour,
Je travaille sur un projet pour lequel j'exporte d'un logiciel (appelons-le Alpha) des données sous format txt. A l'origine, ces données sont sauvegardées dans un fichier txt. Puis, à partir d'un fichier excel, une macro lance l'importation des données du fichier txt. En procédant ainsi, je parviens à convertir les données selon un ordre bien précis à savoir:
1- convertir les données des lignes 2 à la dernière ligne importée
2- convertir séparément la ligne 1 qui a une typographie différente.
Afin d'éviter de procéder par ces intermédiaires (fichier txt, puis macro, puis un autre process), je souhaite coller les données exportées de Alpha directement dans une feuille excel. Quand on effectue cette manipulation pour la première fois (simple copier/coller), les données d'Alpha sont brutes sans conversion en colonne A. Si je convertis les données de la colonne A (manuellement comme par macro VBA), j'obtiens le format qui m'intéresse. Cette opération peut être effectuée plus d'une fois et de façon régulière.
Mon souci: dès l'instant que j'ai déjà effectué une conversion, toutes les autres importations (les copier/coller) se convertissent automatiquement mais pas dans le bon format. Je souhaite annuler cette conversion automatique. Pour le moment, le seul moyen plus ou moins efficace est celui de redémarrer mon ordinateur et encore parfois, cela ne fonctionne pas du premier coup. Quelqu'un sait-il comment faire en sorte que chaque fois que je copie mes données txt, qu'elles ne se convertissent pas et restent brutes en une seule colonne ?
C'est un roman que j'ai écrit. J'espère avoir malgré tout été assez explicite. A dispo pour plus d'explication s'il y a lieu.
Merci d'avance.
Cordialement,
Conrade82
Je travaille sur un projet pour lequel j'exporte d'un logiciel (appelons-le Alpha) des données sous format txt. A l'origine, ces données sont sauvegardées dans un fichier txt. Puis, à partir d'un fichier excel, une macro lance l'importation des données du fichier txt. En procédant ainsi, je parviens à convertir les données selon un ordre bien précis à savoir:
1- convertir les données des lignes 2 à la dernière ligne importée
2- convertir séparément la ligne 1 qui a une typographie différente.
Afin d'éviter de procéder par ces intermédiaires (fichier txt, puis macro, puis un autre process), je souhaite coller les données exportées de Alpha directement dans une feuille excel. Quand on effectue cette manipulation pour la première fois (simple copier/coller), les données d'Alpha sont brutes sans conversion en colonne A. Si je convertis les données de la colonne A (manuellement comme par macro VBA), j'obtiens le format qui m'intéresse. Cette opération peut être effectuée plus d'une fois et de façon régulière.
Mon souci: dès l'instant que j'ai déjà effectué une conversion, toutes les autres importations (les copier/coller) se convertissent automatiquement mais pas dans le bon format. Je souhaite annuler cette conversion automatique. Pour le moment, le seul moyen plus ou moins efficace est celui de redémarrer mon ordinateur et encore parfois, cela ne fonctionne pas du premier coup. Quelqu'un sait-il comment faire en sorte que chaque fois que je copie mes données txt, qu'elles ne se convertissent pas et restent brutes en une seule colonne ?
C'est un roman que j'ai écrit. J'espère avoir malgré tout été assez explicite. A dispo pour plus d'explication s'il y a lieu.
Merci d'avance.
Cordialement,
Conrade82
2 réponses
-
Bonjour,
Essaie ceci:
Option Explicit Private Sub CommandButton1_Click() ImportText ThisWorkbook.Path & "\Data_Base_à_intégrer.txt", Range("A1") End Sub Sub ImportText(FileName As String, PosImport As Range) Dim QT As QueryTable Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & FileName, Destination:=PosImport) With QT .TextFileSemicolonDelimiter = True .TextFileTextQualifier = xlTextQualifierDoubleQuote .Refresh End With End Sub Private Sub CommandButton2_Click() Export End Sub Sub Export() Dim mafeuille As Worksheet Set mafeuille = ActiveWorkbook.ActiveSheet Range("E:E").NumberFormat = "dd/mm/yyyy;@" Range("F:F").NumberFormat = "dd/mm/yyyy;@" mafeuille.Copy With ActiveWorkbook ChDir ThisWorkbook.Path & "\" Application.DisplayAlerts = False ActiveWorkbook.SaveAs FileName:= _ ThisWorkbook.Path & "\Data_Base_à_intégrer.txt", _ FileFormat:=xlText, CreateBackup:=False .Close SaveChanges:=True End With ActiveWorkbook.Save End Sub
-
Bonjour Le Pivert,
Merci pour votreretour rapide. Juste une petite précision: vous m'avez aidé pour la macro Export et je vous en remercie. Mais la question de ce poste n'est absolument pas en lien avec votre première aide. Et c'est aussi pour éviter d'utiliser un fichier text que je prends une autre direction. Je veux coller des datas en collage spécial text. ci-joint un fichier excel avec trois feuilles. La feuille 1 correspond à ce que je veux quand je colle les nouvelles données de mon logiciel vers excel. La feuille 2 est le résultats après conversion des données ainsi importées. Probleme. Quand je colle de nouvelles données, elles ne se collent pas comme dans la feuille 1 mais directement et automatiquement comme dans la feuille 3.C'est comme si Excel gardait en mémoire la dernière conversion text. Je suis à la recherche de l'action qui évitera cette auto-conversion (si c'est possible)...
https://www.cjoint.com/c/EKDw3UvuL2V
Et pour info, voici mon code (et donc le résultat qui m'intéresse):
Sub Extraction ()
dl = .Range("A2").End(xlDown).Row
Application.DisplayAlerts = False
.Range(Cells(2, 1), Cells(dl, 1)).TextToColumns Destination:=Range("A2"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array _
(20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), _
Array(27, 1)), TrailingMinusNumbers:=True
Application.DisplayAlerts = False
.Range("A1").TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(7, 2), Array(10, 1), Array(13, 9), Array(14, 2), _
Array(17, 1), Array(20, 9), Array(21, 2), Array(24, 1), Array(27, 9), Array(28, 2), Array( _
31, 1), Array(34, 9), Array(35, 2), Array(38, 1)), TrailingMinusNumbers:=True
End sub
Merci d'avance. -
Dans le code ci-dessus, il manque le nom de la feuille:
Sub Extraction() Dim dl As Integer With Sheets("Sheet1") dl = .Range("A2").End(xlDown).Row Application.DisplayAlerts = False .Range(Cells(2, 1), Cells(dl, 1)).TextToColumns Destination:=Range("A2"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _ :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _ Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _ ), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array _ (20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), _ Array(27, 1)), TrailingMinusNumbers:=True Application.DisplayAlerts = False .Range("A1").TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _ FieldInfo:=Array(Array(0, 1), Array(7, 2), Array(10, 1), Array(13, 9), Array(14, 2), _ Array(17, 1), Array(20, 9), Array(21, 2), Array(24, 1), Array(27, 9), Array(28, 2), Array( _ 31, 1), Array(34, 9), Array(35, 2), Array(38, 1)), TrailingMinusNumbers:=True End With End Sub -
-
-
Voilà, j'espère que j'ai compris!
http://www.cjoint.com/c/EKEruJ1fE3Q