Enregistrer les données d'un classeur excell dans un fichier texte et les lire d

olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008 - 1 avril 2005 à 20:35
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008 - 4 avril 2005 à 17:52
Slt,

Comme le dit le titre de ce post, je cherche comment enregistrer les valeurs des cellules de mon appli excel dans un fichier texte. Les données y seront alors séparé par un point virgule (ou un truc dans le genre).

Je cherche ensuite comment pouvoir aller récupéré ces valeurs depuis une autre appli excel.

Ces 2 applis sont bien distincte et le fichier texte sera stocké sur le reseau de l'entreprise.

Merci d'avance pour votre réponse

10 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
2 avril 2005 à 04:01
Salut
Rien de plus simple : il suffit d'enregistrer ton fichier excel au format CSV
Par défaut, je crois que le séparateur est le point-virgule, mais tu choisis ce que tu veux.
Pour relire, suffit d'ouvrir le fichier CSV depuis Excel.

Vala
Jack
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008
2 avril 2005 à 10:45
Dans mon cas c'est un peu plus compliquer car je souhaite enregistrer que certaine de mes donées.
J'ai un classeur qui comporte plusieurs feuille dont le nombre de données peut varier.

Je souhaiterai enregistrer les données que de certaines cellules, mais qui se trouvent répartis dans plusieurs de ces feuilles.

Pour résumé je cherche le moyen d'écrire le contenu de cellules bien précise dans un fichier texte. (il faut écrire les données une par une je suppose)

Au pire je peut rappatrier toutes les données que je souhaite sauvegarder dans une feuille que je rajouterai en fin de classeur. Il me suffirrai alors d'enregister uniquement cette plage de cellules.

Voilà mon problème, mais je ne sais pas trop comment m'y prendre.

Merci de votre aide
0
galopin01 Messages postés 133 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 14 octobre 2011 1
3 avril 2005 à 15:17
Bonjour,
1. Pourquoi vouloir les enregistrer dans un fichier texte si c'est pour les relire à partir d'Excel ?
2. Quel type de données ?
- String (une seule ligne) ? Combien de séparateurs (;) ? sinon integer, double, date...?
- Enregistrements (plusieurs lignes) ?
A+
0
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008
3 avril 2005 à 16:44
Slt,

Mon application permet à un ingénieur de faire un chiffrage technique sur des appareils complexes qui sortent des règles de base du chiffrage.

Si je veux les enregistrer dans un fichier texte c'est parce que ces données techniques ,qui sont calculées par l'ingénieur, sont ensuite réutilisé plus tard dans une autre application excel par des commerciaux qui rajoute alors en fonction de celles-ci des accessoires à l'appareil.

Le but est d'enregistrer sur le réseau ces données dans un fichier texte ayant pour nom le numéro du devis, puis d'y faire appel dans l'autre appli en entrant ce numéro de devis dans une TextBox.

Je ne sais pas si le format de mes données a une grande importance puisque ce que je souhaite c'est enregistrer le contenu de mes cellules et non pas le contenu de variables VB.
Cependant le contenu de mes cellules peut être de type numérique (donc équivalant a des integer et single) et texte (donc équivalant a des string).

Quand à savoir si je souhaite créer un fichier texte a plusieurs lignes ou non, je ne sais pas encore, mais je pense qu'une seul ligne devrait pouvoir faire l'affaire.

Voilà j'espère que cela répond à tes interrogations et pourra m'éclaircir.
Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fred bhf Messages postés 2 Date d'inscription mercredi 2 mars 2005 Statut Membre Dernière intervention 4 avril 2005
3 avril 2005 à 18:42
bonjour,



voici quelques exemples de code pour écrire dans un fichier texte à partir du VBA Excel :



' ouvre un fichier texte en mode écriture

Open "c:\essai\essai.txt" For Output Shared As #1



valeur = ActiveWorkbook.Worksheets.Cells(2,2)



' écrit une ligne dans le fichier texte

Print #1, "valeur : " & valeur



' ferme le fichier

Close #1



Pour écrire sur une même ligne il suffit d'additionner des chaînes de caractères, exemple :



Dim ligne as Variant

Dim valeur(20) as Variant



ligne = ""

For i = 0 To 20

ligne = ligne & valeur(i) & " ; "

Next



Print #1, ligne



a+

Fred
0
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008
3 avril 2005 à 19:30
Ok merci fred ca va bien me servir.

Pourrait tu juste me préciser comment créer un fichier texte vierge, car dans ton exemple tu utilise un fichier existant.

Merci

Olivier
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
3 avril 2005 à 21:50
Ce code crée un fichier (TonFichier.txt) vierge sur le disk C

Private Sub Command1_Click()
Open "C:\TonFichier.txt" For Output As #1
Print #1,
Close #1
End
End Sub

jpleroisse
0
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008
4 avril 2005 à 00:10
Ok merci ca marche tres bien.

Voila un exemple de ce que j'utilise :

Dim ligne As String
Dim valeur(20) As Variant

valeur(0) = Worksheets("Feuil1").Range("B18")
valeur(1) = Worksheets("Feuil1").Range("D12")
valeur(2) = Worksheets("Feuil1").Range("A1")
valeur(3) = Worksheets("Feuil1").Range("F7")
valeur(4) = Worksheets("Feuil2").Range("B10")
valeur(5) = Worksheets("Feuil2").Range("E10")
valeur(6) = Worksheets("Feuil1").Range("B18")
valeur(7) = Worksheets("Feuil1").Range("D12")
valeur(8) = Worksheets("Feuil3").Range("A1")
valeur(9) = Worksheets("Feuil3").Range("F7")
valeur(10) = Worksheets("Feuil2").Range("B12")
valeur(11) = Worksheets("Feuil2").Range("E20")


ChDir "c:\devis"
Open "devis_" & Range("numéro_devis") & ".txt" For Output Shared As #1

For i = 0 To 11
If i <> 20 Then
ligne = ligne & valeur(i) & ";"
Else:
ligne = ligne & valeur(i)
End If
Next

Print #1, ligne
Close #1

Cependant il y a un petit hic, je voudrais éviter que les utilisateurs du programme puisse créer 2 fois un fichier portant le même nom ( correspondant donc a mon "devis_" & Range("numéro_devis") ) , car dans ce cas ils écrase le contenu du premier fichier. Cela arrive donc lorsqu'ils oublient de changer le numéro devis présent la cellule "num_devis".

Donc je cherche comment tester si le fichier est dejà existant avant de faire :

Open "devis_" & Range("numéro_devis") & ".txt" For Output Shared As #1

afin de les prevenir et de leur permettre soit de changer ce numéro soit d'accepter d'écraser le fichier.

Merci

Olivier
0
fred bhf Messages postés 2 Date d'inscription mercredi 2 mars 2005 Statut Membre Dernière intervention 4 avril 2005
4 avril 2005 à 09:25
Bonjour



Pour éviter de créer deux fois le même nom de fichier, je te propose
d'enregistrer les noms de fichiers dans un autre fichier texte ou dans
une feuille d'un classeur pour pouvoir comparer le nouveau nom de
fichier avec la liste existante. S'il existe déjà un message d'erreur
pourra alors être renvoyé (par exemple en utilisant une MsgBox).



Cette solution un peu 'bidouille" ne prendra pas en compte automatiquement la suppression éventuelle de fichier "devis".



Le mieux aurait été de pouvoir lire directement les noms de fichiers
exitants dans le répertoire mais sous VBA Excel, je ne sais pas encore
faire ça ....



Fred
0
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008
4 avril 2005 à 17:52
Ok merci, j'avais pensé a tout ca mais je pense qu'il doit y avoir moyen de faire mieux.

Par exemple quand tu utilise le propriété "SaveAs" sur un workbooks, excel te préviens de suite si le fichier est existant.

Je pense qu'il doit y avoir quelque part une équivalence avec notre exemple.

merci

Olivier
0
Rejoignez-nous