Pb de separateur ds fichier txt

  • Initiateur de la discussion Coucou
  • Date de début
C

Coucou

Guest
Bonjour le forum,

Je dois trouver un code qui va extraire les données de plusieurs fichiers.

J'ai fait un essai sur un seul fichier au départ mais celui-ci ne marche que si le séparateur dans le fichier source est la virgule ','
Pourrais-je le remplacer par autre chose (';' ou tabulation)

Cf fichiers joints.

Merci et bonne journée [file name=Synthese_20060522104354.zip size=15272]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Synthese_20060522104354.zip[/file]
 

Pièces jointes

  • Synthese_20060522104354.zip
    14.9 KB · Affichages: 38

Droussel

XLDnaute Occasionnel
le code pour récuperer un fichier texte est le suivant

Workbooks.OpenText Filename:='C:\\fichiersource.txt', _
Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, _
Comma:=False, Space:=False, Otherchar:=';', TrailingMinusNumbers:=True


ou en face l'argument otherchar tu mets le caractère que tu veux
A+
Denis
 
C

Coucou

Guest
Bonjour,

Merci pour ta réponse, mais ça bloque dans mon code.
Je ne suis pas assez calé pour l'intégrer ou il faut.

En fait, ce qui est fait actuellement est de lire le fichier sans l'ouvrir a l'ecran.

A+
 

Hervé

XLDnaute Barbatruc
bonjour coucou, droussel, le forum

peut etre pourrais tu t'inspirer de ce code pour le ; :


Sub Import_Donnees()

'Importer les données d'un fichier dans le classeur Synthese

'****** ATTENTION: NE MARCHE QUE SI SEPARATEUR ',' ******

Dim CeFichier As String ' Nom du fichier source
Dim Nlig As Integer 'N° ligne fichier Synthese
Dim ChampFichier As String 'Champ du fichier source
Dim NoC As Integer 'N° colonne ficier source
Dim ligne As Integer
Dim tablo
Dim calcul As String
Dim i As Byte

ligne = Range('b65536').End(xlUp).Row + 1
'Annuler le calcul automatique:
calcul = Application.Calculation
' Choix du fichier à importer
        ChDir 'C:'
        CeFichier = Application.GetOpenFilename('Tous fichiers (*.*),*.txt')

'SI BESOIN DE VERIFIER SI LE FICHIER DE DONNEES A DES CHAMPS VIDES:
'If Not FichierComplet(CeFichier) Then Exit Sub

Open CeFichier For Input As #1

'Recupérer les données du fichier txt (SI séparateur ','):
Do While Not EOF(1) 'Effectuer jusqu'a la fin du fichier:
        Line
Input #1, ChampFichier
       
Debug.Print ChampFichier
        tablo = Split(ChampFichier, ';')
       
For i = 0 To 9
                Cells(ligne, i + 2) = tablo(i)
       
Next i
        Cells(ligne, 12) = Cells(ligne, 10) * Cells(ligne, 11)
        ligne = ligne + 1
        Loop
Close #1
'reactiver calcul automatique:
            Application.Calculation = calcul

End Sub


salut
 
C

Coucou

Guest
Bonjour Hervé,

Merci pour ton code ça marche impeccable.

Dernière exigence tout de meme, si mon fichier source a une ligne de titre dont je n'ai pas besoin comment peut-on commencer par la deuxieme ligne du fichier.

Bonne journée.
 

Hervé

XLDnaute Barbatruc
re

il te suffit de placer une condition, comme ceci :


Open CeFichier For Input As #1

'Recupérer les données du fichier txt (SI séparateur ','):
Do While Not EOF(1) 'Effectuer jusqu'a la fin du fichier:
        Line
Input #1, ChampFichier
       
If premier = 1 Then
               
               
Debug.Print ChampFichier
                tablo = Split(ChampFichier, ';')
               
For i = 0 To 9
                        Cells(ligne, i + 2) = tablo(i)
               
Next i
                Cells(ligne, 12) = Cells(ligne, 10) * Cells(ligne, 11)
                ligne = ligne + 1
       
Else
                premier = 1
       
End If
Loop

Close #1


reste du code inchangé.

salut
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 339
Membres
102 865
dernier inscrit
FreyaSalander