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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionFunction 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
tableauLigne = Decompose(ligneFichier, ";")
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
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
Sub remplirFichier() 'Numéro libre pour l'ouverture du fichier Dim numFichier, i, j As Integer numFichier = FreeFile Dim chaine As String Open ("D:\User\Tout\petitTexte.txt") For Output As #numFichier For i = 1 To 100 chaine = "" For j = 1 To 800 chaine = chaine & "ligne " & i & ", colonne " & j & ";" Next j Write #numFichier, Mid(chaine, 1, Len(chaine) - 1) Next i Close #numFichier End Sub