Enregistrement de plage de données excel --> fichier texte

jeanjeuv Messages postés 8 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 3 juin 2010 - 26 janv. 2010 à 09:03
jeanjeuv Messages postés 8 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 3 juin 2010 - 27 janv. 2010 à 09:04
Bonjour,
Je suis débutant en VBA Excel, je cherche à créer une macro qui me permettrait d'enregistrer une plage de données excel sous plusieurs fichiers texte (*.txt). En effet selon des critères prédéfinis, je "sépare" ma plage de donnée Excel en plusieurs plages que je souhaite enregistrer dans des fichiers textes différents, le points sensible étant que le nombre de plages de données Excel n'est pas connu à l'avance. Par plage j'entends 3 colonnes de données et un nombre de lignes à définir.
Par exemple, on peut imaginer que mes 50 premières données de ma plage Excel sont ma plage 1, les 50 prochaines ma plage 2 ect..en un nombre indéfini de plage. Je voudrais alors stocker ma plage 1 dans un fichier sujet1.txt, ma plage 2 dans sujet2.txt ect...
En espérant avoir été suffisamment clair.
Merci d'avance
jean

5 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
26 janv. 2010 à 09:57
Salut
Pour ce faire, tu n'as besoin que de ces instructions :
- Ouvrir, écrire dans un fichier texte : FreeFile, Open, Print #, Close #
- Faire une boucle sur un plage : standard :
   Dim maCell As Object
   For Each maCell In Range("A1:A4012")
     ' Traitement écriture
   Next

- Jouer avec maCell.Offset pour pointer vers des cellules adjacentes à celle de la boucle

A toi de regarder dans l'aide pour trouver des exemples et des explicatifs afin de faire des essais et mettre au point

Vala
Jack, MVP VB
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
jeanjeuv Messages postés 8 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 3 juin 2010
26 janv. 2010 à 16:37
Merci,
Effectivement pour écrire des données dans un fichiers pas de problème, mais il s'agit d'ouvrir et d'écrire dans différents fichiers dans une même boucle (type Do while...loop).
Par exemple, pour illustration:
Do while "fin fichier Excel"
i=1
enregistrement plage i (du Fichier Excel) dans fichier i (*.txt)
i=i+1
Loop

Mon problème est ici de modifier le nom de mon fichier texte afin que la plage 1 (Excel) soit dans un fichier n°1.txt, la plage 2 dans un fichier n°2.txt ect...
Pourriez vous m'aider?
Merci
jean
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
26 janv. 2010 à 19:21
Donc, ton problème c'est de rendre paramétrable le nom du fichier ?
Exemple :
   Dim i As Integer
   Dim s As String
   i = 4012
   s = "Fichier " & CStr(i) & ".txt"
   ' donnera : 'Fichier 4012.txt' (sans les ' )
Suffit de donner ce nom au Open de ton fichier
Il faudra faire un Open puis un Close de chaque fichier.

Vala
Jack, MVP VB
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
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
26 janv. 2010 à 19:23
PS : Si tous les fichiers doivent être ouverts en même temps, il faudra faire un Open avec un numéro différent pour chacun d'eux, d'où l'avantage d'utiliser FreeFile
0

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

Posez votre question
jeanjeuv Messages postés 8 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 3 juin 2010
27 janv. 2010 à 09:04
Merci beaucoup
0