Bonjour à tous,
à la suite d'une conversion d'un fichier texte en tableau, je cherche à intégrer celui-ci sur ma "Feuil3" d'Excel.
Il y a dans mon code 4 parties :
- les déclarations
- la lecture du fichier
- le stockage dans un tableau 2D
- l'écriture dans ma Feuil3 (problème dans cette partie)
Le fait est que la longueur de la ligne est variable donc je reçois tout le temps l'erreur "L'indice n'appartient pas à la sélection" dans mon "UBound(tableau, 2)".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 Dim tableau(), tab_line() As String Dim i As Long, j As Long Dim fso As IWshRuntimeLibrary.FileSystemObject Dim oTs As IWshRuntimeLibrary.TextStream Dim sFichiertxt As String, sContenu As String, sLigne As String ChDir ThisWorkbook.Path ChDrive ADR If (Fichier_et3 <> "") Then sFichiertxt = Fichier_et3 Else sFichiertxt = Application.GetOpenFilename("Text Files (*.txt), *.txt") End If Set fso = New IWshRuntimeLibrary.FileSystemObject Set oTs = fso.OpenTextFile(sFichiertxt, ForReading) Do Until oTs.AtEndOfStream sContenu = oTs.ReadAll Loop tab_line = Split(sContenu, vbCrLf) ReDim tableau(0 To UBound(tab_line)) For i = 0 To UBound(tab_line) tableau(i) = Split(tab_line(i), Chr(9)) Next i 'Sheets("Feuil3").Select Application.EnableEvents = False With Worksheets("Feuil3") .Range("A1").Resize(UBound(tableau, 1), UBound(tableau, 2)) = tableau 'Erreur ici End With Application.EnableEvents = True
Quelqu'un saurait comment traiter ce problème sans toutefois rentrer dans une boucle ? (car mes fichiers sont lourds)
Merci d'avance,
Cordialement
Au pire si quelqu'un connait une méthode "bouclée" assez rapide qui n'hésite pas, de toute façon je n'avance pas... !
J'avais peut être pensé à trouver la ligne possédant le plus de colonnes et à intégrer dans toutes les autres lignes un nombre de caractère égal à la différence de caractère entre les 2 lignes ... Ce n'est qu'une idée je ne sais pas trop comment la mettre en place... !
Cordialement![]()
Partager