Bonjour à tous,

Je viens vous faire part d'un problème que je rencontre avec ma macro VBA sous Excel.

En effet, je dois ouvrir un fichier texte puis importer son contenu dans Excel.
C'est exactement ce que l'on fait lorsque l'on fait fichier > Ouvrir > sélection du fichier texte.

Dans ce fichier texte, mes données sont séparées par des ";".
J'ai précisé dans le code que mon séparateur est un ";".
Jusque là tout va bien.

Le problème survient lorsque j'ai des virgules "," dans mon fichier texte.
En effet, lorsque une virgule est rencontrée, les données qui suivent vont à la ligne sur le tableau Excel, un peu comme si c'était une nouvelle entrée.

Par exemple, dans mon fichier texte j'ai : 45684;01;demande d'ouverture, opération de type 54;01

Lorsque la virgule est rencontrée, la suite va à la ligne, ce que je ne souhaite pas.

Je vous transmets mon code VBA pour mieux comprendre :

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
36
37
38
39
40
41
42
43
44
45
46
47
 
 
Sub FichierTexteCopie()
Dim ligne As String, NoLigne As Long, NoCol As Long
Dim Tableau, nomFich(), separateur
 
    Application.ScreenUpdating = False
 
    Sheets(1).Activate
 
    'Ouverture de la boîte de dialogue
    nomFich() = Application.GetOpenFilename _
    (, , , , True)
 
    ' J'ai plusieurs fichiers textes à traiter d'où la boucle
    For i = 1 To UBound(nomFich)
 
    '********************************
 
        Sheets(i).Activate
 
        NoLigne = 0
        Open nomFich(i) For Input As #FreeFile
 
        'Lecture
        While Not EOF(1)
            Input #1, ligne
 
            separateur = ";"
 
            'création d'un tableau des données de la ligne
            Tableau = Split(ligne, separateur)
 
            NoLigne = NoLigne + 1
 
 
            'transfert des données dans la feuille Excel
            For NoCol = 0 To UBound(Tableau)
                Cells(NoLigne, NoCol + 1).Value = Tableau(NoCol)
            Next NoCol
        Wend
        Close #1
    Next i
 
    Application.ScreenUpdating = True
    MsgBox "Opération terminée"
End Sub
Alors, je pense savoir d'où viens le problème mais je ne sais pas comment corriger cela.
D'après moi, il s'agit de l'instruction
car dans la doc il est dit :
Input #filename, varlist

varlist est une "liste, délimitée par des virgules, de variables auxquelles sont attribuées les valeurs lues dans le fichier"
Avez-vous des solutions ou des idées pour résoudre mon problème ?

Merci !