begin process at 2012 02 13 00:01:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

J'AI BESOIN D'AIDE !!!! :)

 > 

décomposer fichier txt en plusieurs fichiers excel


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

1 2

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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,855 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales