!! URGENT !! Copie de fichier texte à la suite dans excel

Résolu
xpmich Messages postés 62 Date d'inscription lundi 29 novembre 2004 Statut Membre Dernière intervention 11 mars 2010 - 24 févr. 2006 à 11:50
neptunelle Messages postés 1 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 21 août 2007 - 21 août 2007 à 09:24
Bonjour,
Je programme sous Microsof visual Basic.
Je voudrais grâce à un macro ouvrir dans l'ordre des fichiers textes (de même forme) et les copier à la suite dans une même feuille excel. Pour cela, je voudrais savoir
- comment faire pour copier à la suite les fichiers textes dans la feuille
- comment faire pour saisir la date (Integer=mois, integer=jour, integer=année)

exemple des noms de fichiers :
P060224.txt (P + date à l'envers)
P060223.txt
...

format fichier texte
qsdsqd sdfqdsf 4564
sdfdsd sqdsqd 7897
....

Merci d'avance

10 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
24 févr. 2006 à 15:31
Re;

Essaie de remplacer:

....
f.range("A" & NumLigne).Value = Split(It, VbTab)(0)
f.range("B" & NumLigne).Value = Split(It, VbTab)(1) 'Petite correction du Copier coller d'avant
f.range("C" & NumLigne).Value = Split(It, VbTab)(2) 'Petite correction du Copier coller d'avant
....

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
24 févr. 2006 à 16:51
Salut,

l'indice n'appartient pas à la sélection (0), je pense que c'est l'indice (1) qui ne va pas

En fait il ca ne marche pas car le Split ne fait pas ce qu ont lui demande...
NOTE: Ce nest pas "VBTab" que je t ai mis mais VBtab sans "" (Ca ne marche pas non plus...)

Je teste autre chose.

PS: Je suppose que tu ne peux pas modifier ton delimiteur
@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
3
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
24 févr. 2006 à 12:16
Bonjour

tu peux peut-être t'inspirer de la réponse de ce jour "Récupérer et traiter tous les fichiers..."
http://www.vbfrance.com/infomsg/RECUPERER-TRAITER-TOUT-FICHIERS-APRES-AUTRE-REPERTOIRE-DONNE-1_671867.aspx
Saisir un date c'est simple en VBA
jour=InputBox("Entrer le jour (SVP):")
ou utilises l'objet Calendrier de Microsoft

Sinon Pour concaténer des fichiers texte sous une session DOS :
1-) dir *.TXT >RESULTA.TXT
2-) construire un batch avec tous les fichiers souhaités avec l'éditeur de ton choix
del CONCATENE.TXT
copy CONCATENE.TXT+FICHIER1.TXT CONCATENE.TXT
copy CONCATENE.TXT+FICHIER2.TXT CONCATENE.TXT

Tu ouvres ensuite le fichier sous Excel (Fichier / Importer)
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
24 févr. 2006 à 12:19
Salut,
Attention il faut que le delimiteur soit un espace " "
Appelons la feuille f

Private FunctionCopieFichierDansFeuille(NomFichier)
Static NumLigne as integer
Dim It As String
NumLigne = 1
Open NomFichier For Input As #1
While Not EOF(1)
Input #1, It
f.range("A" & NumLigne).Value = Split(It, " ")(0)
f.range("B" & NumLigne).Value = Split(It, " ")(0)
f.range("C" & NumLigne).Value = Split(It, " ")(0)
NumLigne = NumLigne + 1
Wend
Close #1
End Function

Ensuite tu l'appelle le nombre de fois qu il faut en passant en parametre tes noms de fichiers;

Call FunctionCopieFichierDansFeuille("P060224.txt")
Call FunctionCopieFichierDansFeuille("P060223.txt")

Voila en esperant avoir pu t'aider un peu
PS: explique mieux le deuxieme point j ai pas tres bien compris
@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
xpmich Messages postés 62 Date d'inscription lundi 29 novembre 2004 Statut Membre Dernière intervention 11 mars 2010
24 févr. 2006 à 15:24
salut,
en réponse à loulou 69, je pense que c'est une bonne méthode mais comment faire alors pour exécuter des lignes de commandes dos sous excel ?


en réponse à Julien, les lignes de code marchent mais ma séparation est une tabulation, comment faire alors??

merci d'avance
0
xpmich Messages postés 62 Date d'inscription lundi 29 novembre 2004 Statut Membre Dernière intervention 11 mars 2010
24 févr. 2006 à 16:00
0
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
24 févr. 2006 à 16:38
Executer des commande DOS sous excel en batch

open "c:\monbatch.bat" for output as #1
print #1, lignecommande1
print #1, lignecommande2
close #1

Shell("cmd.exe /c c:\monbatch.bat")

sur l'action d'un bouton dans une frame pour attendre la fin de la commande SHell appeler CopieFichierDansFeuille de "jrivet", merci à lui
0
xpmich Messages postés 62 Date d'inscription lundi 29 novembre 2004 Statut Membre Dernière intervention 11 mars 2010
24 févr. 2006 à 16:45
erreur : l'indice n'appartient pas à la sélection (0), je pense que c'est l'indice (1) qui ne va pas
c'est l'erreur affiché pour les lignes de codes suivantes :
Range("A" & NumLigne).Value = Split(It, "VbTab")(0)
Range("B" & NumLigne).Value = Split(It, "VbTab")(1)
Range("C" & NumLigne).Value = Split(It, "VbTab")(2)
de plus, la tabulation ne marche pas, voila ce que j'ai en A1
"24/02/2006***08:24:11***AQ528***En cours" ou *** est un carré
moi je voudrais
A1 24/02/2006
B1 08:24:11
C1 AQ528
D1 En cours

Je pense aussi qu'il faudrai ressortir le numéro de ligne pour pouvoir concaténer les deux fichiers !!
Call CopieFichierDansFeuille("P060224.txt")
Call CopieFichierDansFeuille("P060223.txt")

ex : de 1 à 200, le 1er fichier et de 201à 400 le second.

Merci d'avance
0
xpmich Messages postés 62 Date d'inscription lundi 29 novembre 2004 Statut Membre Dernière intervention 11 mars 2010
2 mars 2006 à 12:30
Salut,
Voici le code bon grâce au mix de vos messages. Je vous en remercie d'anvance.
J'utilise une fonction qui retourne le numéro de la ligne ou est rendu la fin du fichier copier.

Function CopieFichierDansFeuille(NomFichier, NumLigne As Integer) As Integer
'fonction permettant la copie des fichiers à partir de NumLigne
Dim It As String
Open NomFichier For Input As #1
While Not EOF(1)
Input #1, It
Range("A" & NumLigne).Value = Split(It, vbTab)(0)
Range("B" & NumLigne).Value = Split(It, vbTab)(1)
Range("C" & NumLigne).Value = Split(It, vbTab)(2)
Range("D" & NumLigne).Value = Split(It, vbTab)(3)
NumLigne = NumLigne + 1
CopieFichierDansFeuille = NumLigne
Wend
Close #1
End Function

Merci encore à tout ceux qui m'ont aider.
0
neptunelle Messages postés 1 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 21 août 2007
21 août 2007 à 09:24
Bonjour,


Désolée de faire remonter un post aussi vieux mais j'ai presque le meme souci sauf que moi j'ai :


dans un dossier : 205 par exemple 247 fiches en texte séparé par des ;
J'aimerais pouvoir ouvrir les 247 fiches dans excel mais garder que la deuxieme colonne de mon fichier texte soit tout ce qui est deriere le ;

je vous remercie par avance de votre aide !!!

Gros bisous Alexandra.
0
Rejoignez-nous