khos01
Messages postés5Date d'inscriptionmercredi 20 juillet 2005StatutMembreDernière intervention20 juillet 2005
-
20 juil. 2005 à 09:28
jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 2006
-
20 juil. 2005 à 17:55
Bonjour à tous,
Je suis actuellement en stage et une problématique se pose je doit faire une Macro pour sortir certaines données d'un fichier texte dans un tableau excel. Le plus compliquer est que j'ai fait des étude de mécanique et donc sans expérience en Macro.
Voila dans le fichier texte les information sont séparé par des ";" et elles peuvent etre autant avec des lettres que des chiffres.
Je doit les traiter ligne par ligne afin de récupérer les bonne infos et les envoyer sur Excel, j'aimerai automatiser cette tâche car tous les fichiers textes sont construit de la même manière.
cs_Alexafer
Messages postés2Date d'inscriptionmercredi 20 juillet 2005StatutMembreDernière intervention29 juillet 2005 20 juil. 2005 à 10:07
Salut
Je suis aussi en stage et je dois importer dans Excel des tableaux contenus dans des fichiers txt. Il n'y a que des chiffres pour moi, mais je crois que ca n'a pas trop d'importance... à voir. Il y a encore quelques défauts dans la recopie des données, genre des carrés qui se placent entre les chiffres... à travailler donc.
J'ai commencé par enregistrer une macro dans Excel - facile, j'en avais jamais fait et j'ai vite compris. Tu vas dans outils > macros > nouvelle macro et apres tout ce que tu fais dans Excel est enregistré et traduit en langage VB... plutôt cool : fais la manip d'import une fois manuellement donc.
Ensuite j'ai trouvé un code sur VBFrance (cf. ci dessous le Sub macrodir() )
Tu crées un répertoire ou tu mets les fichiers txt. Copie l'emplacement dans le code la ou il y a MonRep.
Sub import(MonFic) c'est le nom de ma macro créée par Excel. J'ajoute entre parentheses le MonFic - c est a dire le fichier txt en cours de traitement, passé en paramètre - et tout ce que tu as fait manuellement est dans cette macro et sera appliqué à ton fichier courant. Juste le début du code est à changer comme ci dessous pour que le fichier utilisé soit le fichier courant et non le fichier txt "fixe" à partir duquel tu as fait le premier import...
Bon, c'est un peu chaud à expliquer, surtout que je suis débutant en VB (depuis hier) + quelques cours de DEUG un peu loin!
A+
Sub import(MonFic)
'
' import Macro
' Macro enregistrée le 19/07/2005 par alex
'
' Touche de raccourci du clavier: Ctrl+Maj+I
'
MonRep = "C:\Documents and Settings\rupert\Bureau\MACRO"
MonFic = ""
Set fs = Application.FileSearch
With fs
'* tu lui donne l'arborescence
.LookIn = MonRep
'* le type de fichier "*.csv" ici tous les fichiers
.Filename = "*.txt"
If .Execute > 0 Then
'* Pour débugage
'MsgBox "There were " & .FoundFiles.Count & " file(s) found."
For i = 1 To .FoundFiles.Count
'* Récupération du nom
MonFic = .FoundFiles(i)
'* Appel de mon traitement d'importation
Call import(MonFic)
MonFic = ""
Next i
Else
MsgBox "There were no files found."
End If
End With
End Sub
khos01
Messages postés5Date d'inscriptionmercredi 20 juillet 2005StatutMembreDernière intervention20 juillet 2005 20 juil. 2005 à 16:23
Ok jpleroisse
pour la derniere macro ca marche mais les infos ne sont pas séparer dans des cases différentes.
Mais en bidouillant un peut j'ai pu intégrer le texte dans excel sans utiliser la Macro. En utilisant Fichier--> ouvrir --> tout les fichier sélectionner mon fichier text et en cliquant sur la séparation par ";".
Bon maintenant, j'ai deux base excel une avec la présentation et l'organisation dont j'ai besoin et celle créé plus haut avec le fichier texte (donc mon fichier résultat). J'ai besoin de faire passé des donnés d'un coté a l'autre et surtout je dois l'automatiser. Si vous avez vos idées n'esitez pas. Je suis un peu charette en VB/excel.
jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 200627 20 juil. 2005 à 17:55
Re,
Une solution consiste qu'à n'avoir toujours q'un seul fichier txt.
Lorsque tu as importé le fichier (ici, je prend exemple avec mon code),
tu le modifies à ta guise et tu le renvoies dans ce même
fichier.txt.Bien sur ne connaissant pas à l'avance les modifications
que tu peux faire, tu dois sélectionnner la plage de cellules à envoyer
(normal).Le texte de l'ancien fichier sera remplacer par le nouveau.
Sub ExportPlage()
Dim FileName As String
Dim NumRows As Long, NumCols As Integer
Dim r As Long, c As Integer
Dim Data
Dim ExpRng As Range
Set ExpRng = Selection
NumCols = ExpRng.Columns.Count
NumRows = ExpRng.Rows.Count
FileName = "C:\Mes documents\MonFichier.txt"
Open FileName For Output As #1
For r = 1 To NumRows
For c = 1 To NumCols
Data = ExpRng.Cells(r, c).Value
If IsNumeric(Data) Then Data = Val(Data)
If IsEmpty(ExpRng.Cells(r, c)) Then Data = ""
If c <> NumCols Then
Print #1, Data
Else
Print #1, Data
End If
Next c
Next r
Close #1
End Sub
Si tu veux le renvoyer séparer par des ; tu remplace le 1 er Print #1, Data par Write #1, Data ; et le 2ème par Write #1, Data
jpleroisse
PS, Si tu fais un essai et si c'est un fichier important, fait une copie avant en cas d'erreur de sélection!!