Bonjour,
J'ai un souci avec une macro que j'ai récupéré sur un forum.
Elle permet de lire un fichier .csv sans l'ouvrir puis le stocker dans une table, et enfin recopier son contenu dans une feuille excel.
Cette macro fonctionne lorsque j'ai un fichier de peu de lignes, mais affiche le message suivant lorsque j'utilise mon fichier complet:
Je soupçonne la déclaration de mon tableau tab_lu, mais j'ai essayé plusieurs déclarations sans succès.
Voici mon code :
---------------------------------------------------------
Sub remplir_tab()
Dim var As Variant
Dim tab_val()
Dim tab_lu()
Dim i, j, cpt As Integer
'ouvre et lie le fichier fastclose et le stocke en mémoire
fich_in = Application.GetOpenFilename("Fichiers csv, *.csv")
'vérification des données dans le fichier
cpt = 0
caract_en_erreur = "*?!%"
erreur_lec = False
num_fich = FreeFile
Open fich_in For Input As #num_fich
Do While Not EOF(num_fich)
Line Input #num_fich, textline
' compteur
cpt = cpt + 1
' boucle des caractères invalides
For i = 1 To Len(caract_en_erreur)
erreur_lue = Mid(caract_en_erreur, i, 1)
caractere = InStr(1, textline, erreur_lue)
If caractere <> 0 Then
erreur_lec = True
End If
Next i
'dimensionnement des champs
tab_lu = Split(textline, ";")
'dimensionnement du tableau
ReDim Preserve tab_val(UBound(tab_lu, 1) + 1, cpt)
' boucle de chargement des données
For j = 1 To UBound(tab_lu, 1)
tab_val(j, cpt) = tab_lu(j - 1)
Next j
Loop
FinTab = cpt
Close #num_fich
Sheets("Prévisionnel").Activate
Range("A4:K9999").End(xlUp).ClearContents
For j = 3 To FinTab
For i = 1 To 11
Cells(j, i) = tab_val(i, j)
Next i
Next j
End Sub
-----------------------------------------------
Merci pour vos réponses.
Jean-Paul
J'ai un souci avec une macro que j'ai récupéré sur un forum.
Elle permet de lire un fichier .csv sans l'ouvrir puis le stocker dans une table, et enfin recopier son contenu dans une feuille excel.
Cette macro fonctionne lorsque j'ai un fichier de peu de lignes, mais affiche le message suivant lorsque j'utilise mon fichier complet:
Je soupçonne la déclaration de mon tableau tab_lu, mais j'ai essayé plusieurs déclarations sans succès.
Voici mon code :
---------------------------------------------------------
Sub remplir_tab()
Dim var As Variant
Dim tab_val()
Dim tab_lu()
Dim i, j, cpt As Integer
'ouvre et lie le fichier fastclose et le stocke en mémoire
fich_in = Application.GetOpenFilename("Fichiers csv, *.csv")
'vérification des données dans le fichier
cpt = 0
caract_en_erreur = "*?!%"
erreur_lec = False
num_fich = FreeFile
Open fich_in For Input As #num_fich
Do While Not EOF(num_fich)
Line Input #num_fich, textline
' compteur
cpt = cpt + 1
' boucle des caractères invalides
For i = 1 To Len(caract_en_erreur)
erreur_lue = Mid(caract_en_erreur, i, 1)
caractere = InStr(1, textline, erreur_lue)
If caractere <> 0 Then
erreur_lec = True
End If
Next i
'dimensionnement des champs
tab_lu = Split(textline, ";")
'dimensionnement du tableau
ReDim Preserve tab_val(UBound(tab_lu, 1) + 1, cpt)
' boucle de chargement des données
For j = 1 To UBound(tab_lu, 1)
tab_val(j, cpt) = tab_lu(j - 1)
Next j
Loop
FinTab = cpt
Close #num_fich
Sheets("Prévisionnel").Activate
Range("A4:K9999").End(xlUp).ClearContents
For j = 3 To FinTab
For i = 1 To 11
Cells(j, i) = tab_val(i, j)
Next i
Next j
End Sub
-----------------------------------------------
Merci pour vos réponses.
Jean-Paul