Annuler la conversion automatique import txt vers excel

Fermé
conrade82 Messages postés 96 Date d'inscription dimanche 21 avril 2013 Statut Membre Dernière intervention 9 septembre 2016 - Modifié par conrade82 le 20/11/2015 à 18:25
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 30 nov. 2015 à 18:21
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
A voir également:

2 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
21 nov. 2015 à 15:17
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

0
conrade82 Messages postés 96 Date d'inscription dimanche 21 avril 2013 Statut Membre Dernière intervention 9 septembre 2016 4
Modifié par conrade82 le 30/11/2015 à 00:03
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.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
30 nov. 2015 à 08:07
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
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
30 nov. 2015 à 08:29
Dans ce code la conversion se fait sur la même feuille, il faudrait indiquer la feuille de destination. Ce n'est pas la peine de mettre 2 fois
Application.DisplayAlerts = False
0
conrade82 Messages postés 96 Date d'inscription dimanche 21 avril 2013 Statut Membre Dernière intervention 9 septembre 2016 4 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
30 nov. 2015 à 18:05
Bonjour,

La feuille s'appelle "Forcast1". J'ai transmis un bout du code car il s'agit d'une boucle qui effectue cette action sur 3 feuilles "Forecast1/2/3".

En effet "application..." est redondant.
Merci beaucoup.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
30 nov. 2015 à 18:21
Voilà, j'espère que j'ai compris!

http://www.cjoint.com/c/EKEruJ1fE3Q
0