Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Problème importation fichier texte dans Excel

  • Initiateur de la discussion Initiateur de la discussion sophievba
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

sophievba

Guest
Bonjour à tous,


J'ai une problèmatique que je ne m'explique pas, j'ai eu beau fouiller un peu partout.

Lorsque je crée un fichier texte en mettant une série de chiffre, et qu'ensuite je l'importe dans Excel celui-ci me modifie ma série de chiffre ! Avez-vous déjà remarqué ce phénomène et trouver la solution, SVP?

Exemple : Créer un fichier texte avec plus de 15 chiffres tel que

1ère ligne mettre : 1234567891234567
2ème ligne mettre : 012345678912345678

Ouvrir le fichier avec Excel et vous obtiendrez :

Dans la première cellule : 1234567891234560
Dans la deuxième cellule : 12345678912345678

Vous remarquez dans la première ligne que le dernier chiffre est devenu 0 au lieu de 7, alors que dans la deuxième ligne il supprime le premier 0 !!!

Help, please, car cela me fausse mes stats quand j'importe mon fichier.

Par avance merci à tous et très bonne journée.

Sophie.
 
Re : Problème importation fichier texte dans Excel

Re bonjour,

J'ai oublié de dire une chose.
Du fait de mes tests, j'ai constaté qu'il est possible de conserver sa série de chiffres sans modifications, à une seule condition.
Import des données Texte dans Excel en sélectionnant une largeur fixe, or dans mon cas il s'agit de largeur délimitée.

Si vous avez une idée de code VBA qui pourrait importer le fichier texte dans Excel en conservant ma série de chiffres en largeur délimitée (virgule), cela me serait d'un grand secours.

Merci encore.

Sophie.
 
Re : Problème importation fichier texte dans Excel

Re

Voici ce que donne l'enregistreur de macro

Code:
Workbooks.OpenText Filename:="Nom_complet_du_fichier.txt", Origin:= _
        xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
        xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
        , Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(1, 2)
 
Re : Problème importation fichier texte dans Excel

Bonjour PierreJean,

Merci pour ta réponse.
alors j'ai essayé ce bout de code à ce que j'avais déjà en place mais je n'arrive pas à l'adapter.

Peux-tu me dire comment le spécifier dans ce bout de code, SVP ?

Code:
rivate Sub Workbook_Open()

Dim Resultat, Chemin As String
Dim Lecture As Integer
Dim Compteur As Variant
Chemin = Application.GetOpenFilename
If Chemin = "" Then End
Lecture = FreeFile()
Open Chemin For Input As #Lecture
Application.ScreenUpdating = False
Compteur = 1
Do While Not EOF(Lecture)
Line Input #Lecture, Resultat
ActiveCell.Value = Resultat
        
ActiveCell.TextToColumns , DataType:=xlFixedWidth, TextQualifier:=xlDoubleQuote, Comma:=True
If ActiveCell.Row = 65500 Then
ActiveWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
Else
ActiveCell.Offset(1, 0).Select
End If
Compteur = Compteur + 1
Loop
Close #Lecture
Application.ScreenUpdating = True

Merci beaucoup.
 
Re : Problème importation fichier texte dans Excel

Re

J'ai vainement tenté d'amenager ton code pour avoir le resultat attendu

Je te propose l'alternative suivante qui ne resoud pas le probleme de plus de 65536 lignes et a l'inconvenient d'ouvrir (puis de refermer le fichier .txt)

Code:
Application.ScreenUpdating = False
Set w = ActiveWorkbook
Set sh = w.ActiveSheet
ad = ActiveCell.Address
Chemin = Application.GetOpenFilename
If Chemin = "" Then End
Workbooks.OpenText Filename:=Chemin, Origin:= _
        xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
        xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
        , Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(1, xlTextFormat)
ActiveSheet.Range("A1:A" & ActiveSheet.Range("A65536").End(xlUp).Row).Copy Destination:=sh.Range(ad).Offset(n - 1, 0)
ActiveWorkbook.Close
Application.ScreenUpdating = True
 
Dernière édition:
Re : Problème importation fichier texte dans Excel

Re Pierrejean,

Merci pour cette adaptation.
Alors je suis partie d'un classeur vierge auquel j'ai ajouté ton code.
Lorsque j'importe un fichier texte il me met toujours un 0 en seizième position au lieu du chiffre réel présent dans mon txt !

Ne t'embête pas avec la limitation des 65536 lignes, je souhaite juste réussir un import de fichier sans modifs de mes données.

Merci encore.

Sophie.
 
Re : Problème importation fichier texte dans Excel

bonjour sophievba, pierrejean,

voici un autre essai :
Code:
Sub import()
Dim i As Integer, textFile As Object

Set textFile = CreateObject("Scripting.FileSystemObject").OpenTextFile("[COLOR=Red][B]E:\test.txt[/B][/COLOR]", 1)

While Not textFile.AtEndOfStream
    i = i + 1
    Range("A" & i).Value = "'" & textFile.ReadLine
Wend

Set textFile = Nothing
End Sub
PS: adapter le path du fichier

a+
 
Re : Problème importation fichier texte dans Excel

Bonjour mromain,

Merci pour ta participation.
Je viens de tester ce code mais celui-ci ne met pas mes données dans des colonnes, il reste brut.
Il ne prend pas en compte le séparateur virgule.


Merci.

Sophie.
 
Re : Problème importation fichier texte dans Excel

Bonjour mromain,

Merci pour ta participation.
Je viens de tester ce code mais celui-ci ne met pas mes données dans des colonnes, il reste brut.
Il ne prend pas en compte le séparateur virgule.


Merci.

Sophie.


OK,

peux-tu poster un fichier texte exemple et le fichier xls que tu souhaite avoir après l'import stp.

a+
 
Re : Problème importation fichier texte dans Excel

Re

Felicitations mromain

voici une petite adaptation de la macro pour prendre en compte la virgule

Code:
Sub import()
Dim i As Integer, textFile As Object
Chemin = Application.GetOpenFilename
If Chemin = "" Then End
Set textFile = CreateObject("Scripting.FileSystemObject").OpenTextFile(Chemin, 1)
While Not textFile.AtEndOfStream
  x = Split(textFile.ReadLine, ",")
   For n = LBound(x) To UBound(x)
    ActiveCell.Offset(i, n).Value = "'" & x(n)
   Next n
    i = i + 1
Wend
Set textFile = Nothing
End Sub
 
Re : Problème importation fichier texte dans Excel

Re à tous les deux,


Alors là, je vous dit chapeau bas, c'est exactement ce que je souhaitais obtenir.

Dernière petite question, lorsque le séparateur (,), j'ai entre chaque (,) un ("), comment puis-je faire pour le supprimer en même temps que la virgule ?

De plus, l'import se fait au ralenti, y a -t- il une syntaxe à ajouter au code qui permet de faire en sorte que cela aille plus vite ?

Merci beaucoup.

Sophie.
 
Re : Problème importation fichier texte dans Excel

Re

A tester

Code:
Sub import()
Application.ScreenUpdating = False
Dim i As Integer, textFile As Object
Chemin = Application.GetOpenFilename
If Chemin = "" Then End
Set textFile = CreateObject("Scripting.FileSystemObject").OpenTextFile(Chemin, 1)
While Not textFile.AtEndOfStream
  x = Split(textFile.ReadLine, ",")
   For n = LBound(x) To UBound(x)
    ActiveCell.Offset(i, n).Value = "'" & Replace(x(n), """", "")
   Next n
    i = i + 1
Wend
Set textFile = Nothing
Application.ScreenUpdating = True
End Sub

As-tu des formules dans ton fichier ?
 
Re : Problème importation fichier texte dans Excel

Re,


Pierrejean, je n'ai aucune formule dans le fichier texte, il s'agit de données brutes.
Cependant ton code est parfait, il me supprime bien les (,) et le (").

Je vais maintenant essayer de l'adapter au bout de code qui permet de dépasser les 65536 lignes (c'est pas gagné mais je vais tenter le coup 🙂 ).

Merci à toi et à mrromain pour cette aide précieuse.

Bon WE à tous.

Sophie.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
589
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…