Accueil > Forum > > > > décomposer fichier txt en plusieurs fichiers excel
décomposer fichier txt en plusieurs fichiers excel
lundi 21 juin 2004 à 08:16:07 |
décomposer fichier txt en plusieurs fichiers excel

davidouz
|
davidouz je n'arrive pas à décomposer un "grand" fichier txt (800 colonnes) en plusieurs fichiers excel en répartissant les colonnes dans les différents fichiers. si possible, je souhaiterai une macro me permetant de le faire. Pas si simple, non ?(j'ai pas access au boulot ...)
|
|
lundi 21 juin 2004 à 10:04:43 |
Re : décomposer fichier txt en plusieurs fichiers excel

HFanny
|
Bonjour, comme j'ai vu que tout le monde séchait sur ta question, je t'ai fait ce petit code qui décompose un grand fichier texte (j'ai essayé avec un fichier de 800 colonnes et de 100 lignes) mais qui est très long. En attendant que quelqu'un te trouve autre chose. Par contre, j'ai mis comme délimiteur le point virgule, à toi de le changer s'il faut. Sub ouvrirGrandFichier()
Dim feuille As Worksheet Set feuille = Worksheets(1) Dim cellule As Range Set cellule = feuille.Range("a1")
Dim tableauLigne() As String Dim ligneFichier As String
'les bornes limites pour les boucles Dim compteur1, compteur2, reste As Integer
'le compteur pour le tableau Dim cptTab As Integer
'les variables pour les boucles internes Dim i, j As Integer
'Numéro libre pour l'ouverture du fichier Dim numFichier As Integer numFichier = FreeFile
'nombre de passage dans le fichier Dim numeroLigne As Integer numeroLigne = 1
Open ("D:\User\Tout\petitTexte.txt") For Input As #numFichier
While Not EOF(numFichier) Set feuille = Worksheets(1) Set cellule = feuille.Cells(numeroLigne, 1) Input #numFichier, ligneFichier
tableauLigne = Split(ligneFichier, ";")
cptTab = 0
compteur1 = CInt((UBound(tableauLigne) + 1) / 256) compteur2 = 256 reste = (UBound(tableauLigne) + 1) Mod 256
If reste <> 0 Then compteur1 = compteur1 + 1
'vérification du bon nombre de feuilles pour insérer l'ensemble des données Do Until Worksheets.Count = compteur1 Worksheets.Add After:=Worksheets(Worksheets.Count) Loop
For i = 0 To compteur1 - 1 If reste <> 0 And i = compteur1 - 1 Then compteur2 = reste For j = 0 To compteur2 - 1 cellule.Offset(0, j).Value = tableauLigne(cptTab) cptTab = cptTab + 1 Next j If cptTab <> UBound(tableauLigne) + 1 Then Set feuille = Worksheets(feuille.Index + 1) Set cellule = feuille.Cells(numeroLigne, 1) End If Next i
numeroLigne = numeroLigne + 1
Wend Close #numFichier End Sub
|
Pour explication, le code lit ligne par ligne le fichier. A chaque ligne, - il met la ligne dans une variable tableau (avec le délimiteur) - il décompose en divisant par 256 (nombre de colonnes d'exel), - vérifie s'il y a le bon nombre de feuilles pour contenir toutes les données - boucle sur les 256 et écris dans chaque cellule. (en gros ça fait ça) Fanny
|
|
lundi 21 juin 2004 à 10:42:28 |
Re : décomposer fichier txt en plusieurs fichiers excel

davidouz
|
davidouz Olala merci bcp, je vais de suite essayer.  que du bonheur MR VBA
|
|
lundi 21 juin 2004 à 10:52:33 |
Re : décomposer fichier txt en plusieurs fichiers excel

HFanny
|
Euh ... MR VBA ?? C'est pour moi que tu dis ça ??  Si oui, jusqu'à preuve du contraire je suis une fille lol   Dis moi si ça te convient. Fanny
|
|
lundi 21 juin 2004 à 11:04:20 |
Re : décomposer fichier txt en plusieurs fichiers excel

davidouz
|
davidouz AYE, ma version d'excel ne reconnait pas : tableauLigne = Split(ligneFichier, ";") SPLIT
|
|
lundi 21 juin 2004 à 11:07:20 |
Re : décomposer fichier txt en plusieurs fichiers excel

davidouz
|
davidouz up'ss pardon ma cher fanny
|
|
lundi 21 juin 2004 à 11:22:11 |
Re : décomposer fichier txt en plusieurs fichiers excel

HFanny
|
Erf bon ben tant pis, je viens de recréer la fonction Split  : (enfin, je l'ai renommé Decompose pour éviter les ennuis) Function Decompose(ByVal chaine As String, ByVal delim As String) As String() Dim tableau() As String Dim indice As Integer indice = 0 ReDim Preserve tableau(indice)
For i = 0 To Len(chaine) If Mid(chaine, i + 1, 1) = delim Then indice = indice + 1 ReDim Preserve tableau(indice) Else tableau(indice) = tableau(indice) + Mid(chaine, i + 1, 1) End If
Next i Decompose = tableau End Function
|
Il te suffit de l'utiliser comme n'importe quelle fonction VB : tableauLigne = Decompose(ligneFichier, ";")
|
Voilou voilou, ça devrait fonctionner. Fanny
|
|
lundi 21 juin 2004 à 11:24:37 |
Re : décomposer fichier txt en plusieurs fichiers excel

HFanny
|
Oups, avec le mot Decompose ça ne marche pas chez moi, mais avec toto si  . Nommes la plutot : Function SepareMots(.....) As String() Fanny
|
|
lundi 21 juin 2004 à 11:52:18 |
Re : décomposer fichier txt en plusieurs fichiers excel

davidouz
|
davidouz
tableauLigne = Separemots(ligneFichier, ";") il me dit "impossible d'affecter à une macro
De plus j'ai du enlever les parenthèse à la fin fin pr que la fonction soit reconnu :Function SepareMots(.....) As String
|
|
lundi 21 juin 2004 à 12:55:35 |
Re : décomposer fichier txt en plusieurs fichiers excel

HFanny
|
Aie donc pas bon ça. Tu as bien mis la fonction juste après le code ? Sub ouvrirGrandFichier()
Dim feuille As Worksheet Set feuille = Worksheets(1) Dim cellule As Range Set cellule = feuille.Range("a1")
Dim tableauLigne() As String Dim ligneFichier As String
'les bornes limites pour les boucles Dim compteur1, compteur2, reste As Integer
'le compteur pour le tableau Dim cptTab As Integer
'les variables pour les boucles internes Dim i, j As Integer
'Numéro libre pour l'ouverture du fichier Dim numFichier As Integer numFichier = FreeFile
'nombre de passage dans le fichier Dim numeroLigne As Integer numeroLigne = 1
Open ("D:\User\Tout\petitTexte.txt") For Input As #numFichier
While Not EOF(numFichier) Set feuille = Worksheets(1) Set cellule = feuille.Cells(numeroLigne, 1) Input #numFichier, ligneFichier
tableauLigne = SepareMots(ligneFichier, ";")
cptTab = 0
compteur1 = CInt((UBound(tableauLigne) + 1) / 256) compteur2 = 256 reste = (UBound(tableauLigne) + 1) Mod 256
If reste <> 0 Then compteur1 = compteur1 + 1
'vérification du bon nombre de feuilles pour insérer l'ensemble des données Do Until Worksheets.Count = compteur1 Worksheets.Add After:=Worksheets(Worksheets.Count) Loop
For i = 0 To compteur1 - 1 If reste <> 0 And i = compteur1 - 1 Then compteur2 = reste For j = 0 To compteur2 - 1 cellule.Offset(0, j).Value = tableauLigne(cptTab) cptTab = cptTab + 1 Next j If cptTab <> UBound(tableauLigne) + 1 Then Set feuille = Worksheets(feuille.Index + 1) Set cellule = feuille.Cells(numeroLigne, 1) End If Next i
numeroLigne = numeroLigne + 1
Wend
Close #numFichier
End Sub
Function SepareMots(ByVal chaine As String, ByVal delim As String) As String() Dim tableau() As String Dim indice, i As Integer indice = 0 ReDim Preserve tableau(indice)
For i = 0 To Len(chaine) If Mid(chaine, i + 1, 1) = delim Then indice = indice + 1 ReDim Preserve tableau(indice) Else tableau(indice) = tableau(indice) + Mid(chaine, i + 1, 1) End If
Next i SepareMots = tableau End Function
|
Sinon tant pis, intègre la fonction au code : Option Explicit Sub ouvrirGrandFichier()
Dim feuille As Worksheet Set feuille = Worksheets(1) Dim cellule As Range Set cellule = feuille.Range("a1")
Dim tableauLigne() As String Dim ligneFichier As String
'les bornes limites pour les boucles Dim compteur1, compteur2, reste As Integer
'les compteurs pour les tableaux Dim cptTab, indice As Integer
'les variables pour les boucles internes Dim i, j As Integer
'Numéro libre pour l'ouverture du fichier Dim numFichier As Integer numFichier = FreeFile
'nombre de passage dans le fichier Dim numeroLigne As Integer numeroLigne = 1
Open ("D:\User\Tout\petitTexte.txt") For Input As #numFichier
While Not EOF(numFichier) Set feuille = Worksheets(1) Set cellule = feuille.Cells(numeroLigne, 1) Input #numFichier, ligneFichier
'remplacement de la fonction split : indice = 0 ReDim Preserve tableauLigne(indice)
For i = 0 To Len(ligneFichier) If Mid(ligneFichier, i + 1, 1) = ";" Then indice = indice + 1 ReDim Preserve tableauLigne(indice) Else tableauLigne(indice) = tableauLigne(indice) + Mid(ligneFichier, i + 1, 1) End If Next i cptTab = 0
compteur1 = CInt((UBound(tableauLigne) + 1) / 256) compteur2 = 256 reste = (UBound(tableauLigne) + 1) Mod 256
If reste <> 0 Then compteur1 = compteur1 + 1
'vérification du bon nombre de feuilles pour insérer l'ensemble des données Do Until Worksheets.Count = compteur1 Worksheets.Add After:=Worksheets(Worksheets.Count) Loop
For i = 0 To compteur1 - 1 If reste <> 0 And i = compteur1 - 1 Then compteur2 = reste For j = 0 To compteur2 - 1 cellule.Offset(0, j).Value = tableauLigne(cptTab) cptTab = cptTab + 1 Next j If cptTab <> UBound(tableauLigne) + 1 Then Set feuille = Worksheets(feuille.Index + 1) Set cellule = feuille.Cells(numeroLigne, 1) End If Next i
numeroLigne = numeroLigne + 1
Wend
Close #numFichier
End Sub
| Fanny
|
|
Cette discussion est classée dans : fichier, excel, fichiers, txt, décomposer
Répondre à ce message
Sujets en rapport avec ce message
Exportation de plusieurs fichiers .txt dans différents dossiers vers un fichier Excel [ par xl_squal_lx ]
Bonjour,Pouvez vous me dire s'il est possible de récupérer des données se trouvant dans plusieurs fichiers au format txt ( le chemin est le meme il n'
gestion de fichier txt [ par tsithtsith ]
bonjour à tous!J'ai un petit problème de programmation avec quelques fichiers txt.: je veux recupérer des lignes pour pouvoir les mettre dans une base
Suppression de fichiers listé dans un fichier texte [ par huby40one ]
Bonjour à la communauté,J'expose mon probleme,J'ai dans un fichier texte (.txt), une liste de fichier (jpg pour la plus part).Dans un Dossier (Uploads
traitement de fichiers en série [ par dartagnian81 ]
Bonjour!voilà ma question concerne l'automatisation de traitements de fichiers. J'ai récupéré un grand nombre de fichiers textes (400) d'une simulatio
Importer un fichier .txt [ par darkflyer ]
bonjour,je souhaite cette fois ( pour les gens qui ont eu affaire à moi ;-) )importer toutes les informations d'un fichiers texte . en faite chaque li
manipulation de fichiers Excel [ par rico59_59 ]
Bonjour à tous,Voila je debut en vba sous excel, je voudrais créer une macro (si je peux) qui permettrait de faire un remplacement de cellule ou d'une
compter des fichiers [ par bimbo777 ]
Bonsoir à tous,J'aimerai savoir si il est possible de générer un fichier texte à partir d'un dossier.Genre qui compte et inscris le résultat dans ce f
Txt -> Excel en vba [ par shown ]
Bonjour,j'aurai voulu savoir si quelqu'un savait comment lire un fichier .txt présenté sous la forme :xx ; yy ; zzaa ; bb ; ccet l'écrire dans un fich
Ecriture dans une txtbox Excel [ par lensois62 ]
bonjourje doit lire un fichier txt , ensuite je doit écrire les informations du fichier txt dans un txtbox excel Mais voila je n'y arrive pas Le probl
[VBA Excel] Fichier d'aide [ par tof008 ]
Bonjour à tous! J'aurais voulu savoir s'il était possible d'attacher un fichier d'aide à des fichiers Excel. Ceci me serait utile car j'ai crée des ma
Livres en rapport
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|