Macro Texte to Excel

Résolu
khos01 Messages postés 5 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 20 juillet 2005 - 20 juil. 2005 à 09:28
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 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.

AU SECOUR!!!!!!

Merci de votre aide!!!

++

8 réponses

Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
20 juil. 2005 à 09:40
salut,



j'ai pas testé mais cette macro doit te permettre d'importer les données du fichier FileName dans la feuille1 de ton classeur



Private Sub charger_fichier(FileName as string)

Worksheets("Feuil1").Select

Dim sUser As String

Dim sfile As String

sPath = "" & App.path

Cells.Select

Selection.Delete Shift:=xlUp

sfile = sPath + ""+ "" & FileName

Open sfile For Input As #1

Do While Not EOF(1)

I = I + 1

J = 0

iCol = 0

Line Input #1, sTring1

iLongueur = Len(sTring1)

Do

J = J + 1

sCaract = Mid(sTring1, J, 1)

If sCaract = ";" Then

iCol = iCol + 1

Cells(I, iCol).Value = sMot

sMot = ""

Else

sMot = sMot + sCaract

End If

Loop Until J > iLongueur

Loop

Cells.Select

Selection.Columns.AutoFit

Close #1

End Sub




++

Zlub
3
cs_Alexafer Messages postés 2 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 29 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
'



Workbooks.OpenText Filename:=MonFic _
, Origin:=xlWindows, StartRow:=7, DataType:=xlFixedWidth, FieldInfo:= _
Array(Array(0, 1), Array(9, 1), Array(14, 1), Array(19, 1), Array(24, 1), Array(29, 1), _
Array(34, 1), Array(39, 1), Array(44, 1), Array(49, 1), Array(54, 1), Array(59, 1), Array( _
64, 1), Array(69, 1), Array(74, 1), Array(79, 1), Array(84, 1), Array(89, 1), Array(94, 1), _
Array(99, 1), Array(104, 1), Array(109, 1), Array(114, 1), Array(119, 1), Array(124, 1), _
Array(129, 1), Array(134, 1), Array(139, 1), Array(144, 1), Array(149, 1), Array(154, 1), _
Array(159, 1), Array(164, 1), Array(169, 1), Array(174, 1), Array(179, 1), Array(184, 1), _
Array(189, 1), Array(195, 1), Array(200, 1))
End Sub

Sub macrodir()


'
Dim MonRep As String
Dim MonFic As String


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
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
20 juil. 2005 à 10:25
Bonjour,



Sub ImporterFichier()

Dim r, Data

Range("A1").Select

Open "C:\Mes documents\MonFichier.txt" For Input As #1

r = 0

Do Until EOF(1)

Line Input #1, Data

ActiveCell.Offset(r, 0) = Data

r = r + 1

Loop

Close #1

End Sub



jpleroisse
0
khos01 Messages postés 5 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 20 juillet 2005
20 juil. 2005 à 12:48
Merci je vais testé tout ca et je vous en fait part.

ENCORE MERCI

Vive Linux!!!
Khos
0

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

Posez votre question
khos01 Messages postés 5 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 20 juillet 2005
20 juil. 2005 à 12:48
Merci je vais testé tout ca et je vous en fait part.

ENCORE MERCI

Vive Linux!!!
Khos
0
khos01 Messages postés 5 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 20 juillet 2005
20 juil. 2005 à 12:48
Merci je vais testé tout ca et je vous en fait part.

ENCORE MERCI

Vive Linux!!!
Khos
0
khos01 Messages postés 5 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 20 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.


Merci


Vive Linux!!!
Khos
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
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!!
0
Rejoignez-nous