problème macro import fichier text excel - VB/VBA/VBS - Programmation
Marsh Posté le 08-02-2011 à 13:10:37
Nico
Attention dans excel par défaut la virgule est un séparateur des centaines et des milliers (Format US 100,000,000.99) la virgule est en fait le « . »
Si tu ne change pas le setting d’excel remplace dans ton fichier texte les « , » par des « . »
De plus les nombres que tu auras dans les cellules auront le format définit « format cell -> number
Mcdx
Marsh Posté le 08-02-2011 à 14:04:12
pourtant dans mon cas je suis bien en virgule pour le séparateur des décimales et non des milliers.
Sinon j'ai trouvé une petite astuce:
format(Mid(strligne, 1, pos),"###0.00000" )
et dans ce cas les nombres utilise le séparateur point pour les décimales et cela fonctionne
Marsh Posté le 08-02-2011 à 14:04:27
Salut,un échantillon du fichier texte à traiter par exmple via http://cjoint.com/ serait utile
Marsh Posté le 08-02-2011 à 14:19:20
voici le lien vers un échantillon de mon fichier texte à traiter :
http://cjoint.com/?1ciosx4t4Zd
Marsh Posté le 08-02-2011 à 14:47:41
Salut,de façon je dirais bestiale
en affectant un bouton à LectureTxt, ShTst étant le CodeName de la feuille recevant les données
il y aura lieu peut-être lieu d'utiliser un IsNumeric
Pour le CodeName voir son utilité sur http://www.ozgrid.com/VBA/excel-vba-sheet-names.htm
Pour améliorer (peut-être) les performances via ADO voir http://excel.developpez.com/faq/?page=ChapFichiersTxt
|
Marsh Posté le 08-02-2011 à 15:15:34
c'est un peu compliqué pour moi, je ne fais que débuter en VB, cependant je te remercie pour ton aide et je vais regarder cela de plus près, malgréer que mon astuce fonctionne.
Nico
Marsh Posté le 08-02-2011 à 11:27:48
bonjour,
Voici mon problème :
j'ai réalisé la macro suivante pour ouvrir un fichier texte de plus de 65000 lignes:
Sub test3()
Dim numfichier As Integer
Dim strligne As String
numfichier = FreeFile()
filename = Application.GetOpenFilename("Fichier Texte(*.txt),*.txt" )
If filename = "" Then End
Open filename For Input As numfichier
i = 1 'ligne
j = 1 'colonne
While Not EOF(numfichier)
Line Input #numfichier, strligne
'séparer la ligne lu en deux par l'espace
pos = InStr(strligne, " " )
Cells(i, j).Value = Mid(strligne, 1, pos)
Cells(i, j + 1).Value = Mid(strligne, pos)
' chagement de colonne à la ligne 60000
If i = 60000 Then
j = j + 2
i = 1
End If
i = i + 1
Wend
Close numfichier
End Sub
elle fonctionne très bien pour l'ouverture, mais le problème viens quand je sépare mes lignes à l'aide de l'espace.
Exemple:
sur une ligne du fichier texte j'ai 0,0001 -0,5861 et dans le fichier Excel j'obtiens : 1er colonne 0,0001 et 2e colonne -0,5861.
Par contre, quand j'ai 0,0056 -1,56982, dans le fichier Excel j'obtiens 0,0056 et 156982 sans la virgule.
En gros, dès que je suis supérieur ou égale à 1, il ne tient plus compte de la virgule.
Donc je viens chercher un peu d'aide.
Merci
Nico