XL 2010 Transfert d'un tableau 1 dimension > 65000 lignes vers feuille

Guigui

XLDnaute Occasionnel
Bonjour Le forum,
Des années que je ne suis pas venu ici .. j'arrivais à m'en sortir tout seul :)
Mais là je sèche :

J'ai un fichier texte (.txt) avec un nombre de ligne variable.
Je l'ouvre et "stock" chaque ligne dans un tableau.
Ensuite je transfert ce tableau dans ma feuille Excel.

Le problème se pose lorsque je dépasse les 65000 lignes.
J'ai lu qu'il existait une limitation en utilisant "transpose" mais je ne m'en sors pas pour contourner le probléme.

Voici mon code :

VB:
sub test

Dim IndexFichier As Integer
Dim MonFichier As String
Dim ContenuLigne As String

MonFichier = "C:\ASM SSM.txt" '<-- mettez ici le nom du fichier à lire
IndexFichier = FreeFile()
Open MonFichier For Input As #IndexFichier 'ouvre le fichier
a = 1
Dim Nbligne As Long
    While Not EOF(IndexFichier)
        Line Input #IndexFichier, ContenuLigne
        Nbligne = Nbligne + 1
    Wend
Close #IndexFichier ' ferme le fichier

Dim tabl_txt
Open MonFichier For Input As #IndexFichier 'ouvre le fichier
ReDim tabl_txt(1 To Nbligne)
While Not EOF(IndexFichier) '
    Line Input #IndexFichier, ContenuLigne     ' lecture du fichier ligne par ligne: la variable "ContenuLigne" contient le contenu de la ligne active
  
    If (ContenuLigne = (Chr(13) & Chr(10)) Or (ContenuLigne = "")) Then GoTo suite
    If ContenuLigne Like "Q? [A-Z][A-Z][A-Z]???? *" Then GoTo suite
    If ContenuLigne Like ".[A-Z][A-Z][A-Z]???? ######*" Then GoTo suite
    If ContenuLigne Like "[A-Z][A-Z][A-Z]???? [A-Z][A-Z][A-Z]???? [A-Z][A-Z][A-Z]???? *" Then GoTo suite
    If ContenuLigne Like "*@*" Then GoTo suite
    
    tabl_txt(a) = Left(ContenuLigne, 250)
    a = a + 1

suite:
Wend

Close #IndexFichier ' ferme le fichier

'Ca coince ici:
Range("A20").Resize(UBound(tabl_txt)) = Application.Transpose(tabl_txt)

end sub

Je cherche donc une solution pour transférer un tableau 1 dimension de plus de 65000 lignes dans une feuille (cellule A20 à Axxxx)

Merci par avance pour votre aide
Guillaume
 

Guigui

XLDnaute Occasionnel
Bonsoir Staple1600, le forum,

Effectivement ! :)
J'ai adapté une solution parlant des "Dico"

J'ai déclarer mon tableau "différemment"

VB:
ReDim tabl_txt(1 To Nbligne, 1 to 1)

[...]
    tabl_txt(a,1) = Left(ContenuLigne, 250)
    a = a + 1


[...]

 Range("A20").Resize(UBound(tabl_txt), 1) = tabl_txt

Et le tour est joué.

Merci ! :)
Bonne soirée
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 846
dernier inscrit
Silhabib