toujours avec mes problemes d'importation de données d'un fichier txt

  • Initiateur de la discussion dj.run
  • Date de début
D

dj.run

Guest
Bonjour à tous et à toutes,

J'avais ouvert un premier fil avant ce long week end mais n'ayant pas obtenu, les renseignements voulus, je me permet d'en ouvrir un autre . Je sais c'est pas bien .

voici mon probleme :

je voudrai recuperer des données d'un fichier txt pour les inserer dans ma feuille de calcul . manuellement j'y arrive, mais avec une macro, cela m'importe bien les données mais, il y a un mais elles ne sont pas reconnues en format nombre.

je travaille sur win98 et office97 pro.

le plus surprenant c'est : avec office small busines ça fontionne normalement (sur un autre poste).

de plus quand j'enregistre la macro avec le vbe, les données sont bien reconnues, mais quand je l'execute c'est là que ça fontionne plus .

que dois je faire ??

ci joint le code :

Workbooks.OpenText FileName:="a:\STATFAM.TXT", Origin:=xlWindows, StartRow _
:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, 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))
Range("A2:A51,B2:B51,C2:D51").Select
Range("C2").Activate
ActiveWindow.ScrollRow = 1
Range("A2:A51,B2:B51,C2:D51,F2:F51").Select
Range("F2").Activate
Selection.Copy
Windows("statfammodl.xls").Activate
ActiveWindow.ScrollRow = 1
Range("B7").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

Application.CutCopyMode = False ''on vide le presse papier
Windows("STATFAM.TXT").Activate
ActiveWindow.Close SaveChanges:=False

MsgBox "Vous devez changer de mois puis cliquer sur le bouton Sauvegarde", 64

Range("a1").Select

merci pour votre aide

dj.run
 
C

chris

Guest
Bonjour,
Cela ne va pas t'aider mais j'ai déjà remarqué une anomalie lors de l'export en texte : à la main ou en enregistrement macro je n'avais pas le même résultat quà l'exécution de la macro enregistrée, notamment sur un format date.
Chris
 
A

albert

Guest
bonjour dj.run ,
je travaille avec des macros qui importent du texte
ce que tu obtiens avec
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))

est le résultat obtenu à l'aide de l'assistant importation quand tu enregistres la macro.
Ensuite si tu gardes le même code, mais que tu veux utiliser un fichier différent, ça ne marche plus.

il faut donc refaire le code avec l'eregistreur de macro,
tu ouvres le fichier et tu utilises l'assistant etc
 
A

AlainP

Guest
Une autre possibilité c'est d'utiliser la commande :

Open FICHIER_CIBLE For Input As #1

Do While Not EOF(1) ' Effectue la boucle jusqu'à la fin du fichier.
Line Input #1, TextLine ' Lit la ligne dans la variable.

LONGUEUR_LIGNE = Len(TextLine) 'un traitement sur ta ligne du fichier texte par exemple la longueur

Close #1

L'avantage c'est qu'en VBA tu peux retraiter toute les données (nb, date ...)

De meme on peut réecrire dans un fichier texte avec la commande :

Open FICHIER_RESU For Append Shared As #2
Print #2, RECONSTITUTION_2
Close #2

ou RECONSTITUTION correspond à une variable qui correspond à une ligne de fichier texte


Voila
 
B

Baroude

Guest
Hello le forum !

Pour AlainP :

J'ai regardé le fichier de dj.run, le problème c'est lorsque l'on a un fichier texte avec des enregistrements qui contiennent des virgules. Chaque fois qu'on lit le fichier et qu'il rencontre une virgule, il passe à un enregistrement suivant.
Y a t-il une solution ?
Baroude
 
A

AlainP

Guest
J'ai utilisé "Line Input #1". J'ai regardé dans l'aide et je pense que l'on peut traiter le problème des virgules ou points virgule en utilisant à la place soit :
- Input(number, [#]filenumber) : la fonction Input renvoie tous les caractères lus, y compris les virgules, les retours chariot, les sauts de ligne, les points d'interrogation et les espaces à gauche. (c'est la copie de l'aide)
- Input #1

Voila. En fonction du résultat que l'on obtient avec le fichier, une des 3 méthodes devraient fonctionner.

Alain
 
D

dj.run

Guest
re a tous,

je vous remerci de votre aide, mais vu mes petotes connaissances en vba, personne n'aurait un exemple à me faire passer car je ne vois pas qu'elle est la construction du code avec line input

merci à vous tous

dj.run
 
D

dj.run

Guest
re à tous

pour info j'ai essayé de construire le code comme cela :

Sub toto()
Dim TextLine

Open "a:\STATFAM.TXT" For Input As #1 ' Ouvre le fichier.
' Effectue la boucle jusqu'à la fin du fichier.
Do While Not EOF(1)
' Lit la ligne dans la variable.
Line Input #1, TextLine
' Affiche dans la fenêtre Exécution.
Debug.Print TextLine
Loop
Close #1 ' Ferme le fichier.
End Sub

et il ne se passe rien

j'ai du faire une erreur !!

merci à tous

dj.run
 
A

AlainP

Guest
Voila un petit projet qui fonctionne :

Sub test()

FICHIER_CIBLE = "a:\STATFAM.TXT" '

Open FICHIER_CIBLE For Input As #1

Do While Not EOF(1) ' Effectue la boucle jusqu'à la fin du fichier.
Line Input #1, TextLine ' Lit la ligne dans la variable.
LONGUEUR_LIGNE = Len(TextLine)

debug.Print TextLine
Loop
Close #1
End Sub
 
D

dj.run

Guest
re bonjour à tous,

je vais peut etre vous sembler lourd,

mais AlainP, tout d'abord je te remercie pour ton exemple, mais que doit il se passer une fois que l'on a executer la macro car chez moi il ne se passe rien . rien de rien .

je travaille sous win98 et excel97 office pro, je sais pas si cela a un rapport.

merci

dj.run
 
A

AlainP

Guest
La commande debug.Print te retranscit dans la fenetre d'execution les lignes de ton fichier texte. Tu doit récuperer les données pour les retraiter en fonction de tes besoins;

Question : la fenetre d'execution est ellle bien ouverte ?
 
B

Baroude

Guest
Hello,

Je te joins un fichier zip avec dedans un fichier excel et un fichier texte qu'il faut mettre (si c'est possible) sur le répertoire racine C: sinon change la destination directement dans la macro.

Ouvre le fichier Excel et clique sur le bouton rose...

J'espère que ça peut t'aider
Baroude
 

Pièces jointes

  • essai.zip
    7.9 KB · Affichages: 28
  • essai.zip
    7.9 KB · Affichages: 28
  • essai.zip
    7.9 KB · Affichages: 26
D

dj.run

Guest
merci Baroude et AlainP

pour votre aide, AlainP question bete, c'est quoi la fenetre d'execution ?
ça se trouve où ?

Baroude ton exemple m'eclaire un peu plus mais comment peut on faire pour avoir la somme des scores ?

car ton exemple est exactement ce que je veux faire mais en plus j'aimerai avoir la somme des scores mais il ne reconnait pas les scores en format nombre .

merci encore à tous

dj.run
 
D

dj.run

Guest
re à tous, Baroude,

apres avoir fait des tests avec mon fichier txt, je constate qu'il y a un probleme, car il me renvoit des carrés à la place des tabulations .

je me permets de joindre mon fichier txt .

merci pour ton aide

dj.run
 

Pièces jointes

  • STATFAM.zip
    1.4 KB · Affichages: 23

Discussions similaires

  • Question
Microsoft 365 Formules
Réponses
2
Affichages
460