traitement au sens large en VB d'un fichier txt (csv avec point virgule)

jojo2006

XLDnaute Occasionnel
Bonjour à tous,

a partir d'un fichier excel convertit en txt (csv avec des point virgules pour le séparateur) je dois venir lire et écrire des données dans ce fichier txt en VB. Je dois passé par le txt car le poste ou sera installé le programme ne dispose pas de licence office (excel entre autre). Cependant, le fichier txt (une fois modifié) sera exploité par un autre pc qui dispose de excel.

j'ai trouvé et modifié ce code afin de me permettre de stocker le contenu du txt dans un tableau à 2 dimensions (comme dans une cellule excel)


Sub test2()

Dim cellule(80, 80) 'la variable qui va stocker le contenu du txt


FN = FreeFile
Open "fichier.txt" For Input As #FN
T = Split(Input(LOF(FN), #FN), vbCrLf)
Close #FN
'Ici, T contient tout le fichier. Chacun de ses éléments est une ligne


For i = i To UBound(T) 'lecture de chaque ligne (élément du tableau)
T2 = Split(T(i), ";") 'séparer cette ligne aux points-virgules

For j = 0 To UBound(T2) 'lecture du 2eme tableau qui contient les éléments
'MsgBox T2(j)
'MsgBox T(j)

cellule(i + 1, j + 1) = T2(j) 'on remplie le tableau cellule de chaque élément ligne par ligne
'MsgBox "" & cellule(i, j) & ""
Next
Next

Stop

End sub



je ne sais pas et suis vraiment pas sur que ce soit la meilleure solution (si vous avez mieux je prend :D).

imaginons maintenant que mon fichier csv (ou txt) soit:

nom;prénom;age
boby;lapointe;50
jo;toto;19


grace à ma variable cellule je sais que cellule(3,2)="toto"

la question est: comment remplacer "toto" par "tatan" dans le fichier txt et puis sauvegarder.

tout ca bien sur, pour comprendre comment écrire à un endroit précis (ligne colone ou ";") dans un txt.


Merci et très bon week end à tous


Si vous avez une solution qui permettent de naviguer rechercher remplacer écrire dans txt je suis ouvert.
 
Dernière édition:

wilfried_42

XLDnaute Barbatruc
Re : traitement au sens large en VB d'un fichier txt (csv avec point virgule)

Bonjour

Voici un autre exemple, plus lisible meme 2 ans apres

Code:
Public Type enreg
    nom As String
    prenom As String
    age As String
End Type

Sub trf_txt()
    Open "Essa.txt" For Output As #1
    Dim ligne As enreg
    
    'ta boucle
    For i = 2 To Range("C65536").End(xlUp).Row
        nom = Cells(i, 3)
        prenom = Cells(i, 4)
        age = Cells(i, 5)
    Print #1, enreg
    Next i
    Close #1
End Sub
 

jojo2006

XLDnaute Occasionnel
Re : traitement au sens large en VB d'un fichier txt (csv avec point virgule)

bonjour merci pour ta réponse,

mais malheureusement :( ton code ne fonctionne pas si excel n'est pas installé sur la station (cf mon message d'origine).

En fait je cherche une solution qui ne doit pas utiliser pas les types cells ou range.


Merci à tous pour votre aide, bon week
 

wilfried_42

XLDnaute Barbatruc
Re : traitement au sens large en VB d'un fichier txt (csv avec point virgule)

re:

je ne cromprends plus rien à ce que tu dis ou je n'ai rien compris des le debut lol

je viens de relire, j'ai bien fait d'aller me coucher hier

Pour modifier directement un fichier text, tu prends le bloc note, par contre, il sera brut

Edit :

Ce que tu demandes en realité est un editeur de text qui comprenne tout seul comment sont structures tes fichier text, te permette de les modifier, et d'enregistrer tes fichiers

Pour cela il te faut ecrire un programme : sur QBasic, En VBA, pascal, C++ ou DELPHI par exemple, mais il te faut un language compilable (Qui crée des EXE).......... parce que excel, Acces ..... ne travaillent que sur licence (On appelait cela il y a 25 ans, des systemes proprietaires)

M'enfin tout cela pour dire que c'est faisable, Mais ce n'est pas le bon forum car les jours ou il existe un compilateur pour excel............ Mais cela bilou ne le veut pas!!!!!!!!!!!!!!!
 
Dernière édition:

jojo2006

XLDnaute Occasionnel
Re : traitement au sens large en VB d'un fichier txt (csv avec point virgule)

salut,

oui tout à fait, le code que j'ai posté est ensuite compilé par VB en un .exe.
Le but est simplement de contourner le probleme (le fait que excel ne soit pas installé sur la station).

Pour etre franc, en VBA mon probleme serait déja résolu mais malheureusement ce n'est pas le cas. En fait mon probleme est juste de trouver comment écrire à un endroit précis dans un txt (en réalité un .csv avec ";" comme séparateur) en utilisant print.

Voila je pense que vous avez tous saisie la problématique.

Merci à tous encore pour votre aide.
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 187
dernier inscrit
ebenhamel