Créer des fichiers texte à partir de feuilles Excel

mimi09jn Messages postés 49 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 12 juillet 2013 - 11 juil. 2013 à 11:11
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 - 12 juil. 2013 à 15:30
bonjour à tous,

Je travaille avec VBA Excel, j'ai un fichier Excel qui comporte plusieurs feuilles, je veux à partir du contenu de chaque feuille Excel (contenu des cellules C1->C100 par exemple) créer un fichier texte qui contient ces mêmes données.
Quelqu'un pourrait m'aider?
Merci d'avance

9 réponses

MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
11 juil. 2013 à 11:19
Bonjour,

consulter l'aide VBA par exemple de la méthode Workbook.SaveAs

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 juil. 2013 à 11:30
Bonjour,
Voilà bien un cas où la simple utilisation de l'enregistreur de macro permet de connaître le code VBA qui, pour une feuille, fait exactement cela !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
11 juil. 2013 à 11:35
C'est pas faux !

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
11 juil. 2013 à 14:45
Effectivement, en utilisant l'enregistreur de macro, ça donne un bon petit code.
Par contre, la méthode a peut-être besoin d'être expliquée...

Click droit sur l'onglet, sélectionner Déplacer ou copier...
faire la copie dans un autre classeur
Sauvegarder sous... en format txt

ce qui donne
    Sheets("Feuil1").Copy
    ActiveWorkbook.SaveAs Filename:="Chemin et nom du fichier.txt", _
        FileFormat:=xlText, CreateBackup:=False
    ActiveWindow.Close


On pourrait y ajouter en début
Application.DisplayAlerts = False
et remis à True à la fin

Il faut aussi savoir que cette méthode copiera toute la feuille et non pas seulement certaines données...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0

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

Posez votre question
mimi09jn Messages postés 49 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 12 juillet 2013
12 juil. 2013 à 10:42
bonjour à tous,
Bon j'ai trouvé un bout de code qui permet de créer un fichier texte contenant "hello" et l'enregistre dans le même chemin du fichier Excel:

[i] Sub WriteTextFile()

'Write data to a text file
'By Christos Samaras

'Declaring variables

Dim sFName As String
Dim intFNumber As Integer




'Setting the name and the path of text file based on workbook path
sFName = ThisWorkbook.Path & "\hello.txt"

'Get an unused file number
intFNumber = FreeFile

'Create a new file (or overwrite an existing one)
Open sFName For Output As #intFNumber

Print #intFNumber, "hello"

'Close the text file
Close #intFNumber

'Inform the user about the process
MsgBox "Values from sheet '" & Sheet2.Name & "' were written to '" & sFName & "' file!", vbInformation

End Sub /i


Moi j'ai plusieurs feuilles Excel, j'insère un bouton dans chaque feuille et en appuyant dessus je veux que le nom du fichier texte généré soit le même que de la feuille Excel, comment devrai-je modifier alors la ligne:
sFName = ThisWorkbook.Path & "\hello.txt" ?

Merci d'avance
0
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
12 juil. 2013 à 10:56
Astuce : utiliser l'Enregistreur de macro sur un classeur test puis modifier le nom de la feuille ...

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0
mimi09jn Messages postés 49 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 12 juillet 2013
12 juil. 2013 à 15:19
J'ai trouvé comment récupérer le nom de la feuille active avec: "ActiveSheet.Name"
Et donc pour chaque feuille Excel j'insère un bouton et en appuyant dessus un fichier texte du memes nom que la feuille Excel se crée avec le code suivant:

[i]Sub WriteTextFile()

'Write data to a text file
'By Christos Samaras

'Declaring variables

Dim sFName As String
Dim intFNumber As Integer


Dim strData As String
Dim NnEmptyRowsCnt As Long
Dim sPath As String

Dim testID As String

'Setting the name and the path of text file based on workbook path

sPath = "\txt_tests_files" + ActiveSheet.Name + ".txt"
sFName = ThisWorkbook.Path & sPath


'Get an unused file number
intFNumber = FreeFile

'Create a new file
Open sFName For Output As #intFNumber


'Write selected data to text file
GetWorksheetNonEmptyRowsNb "C24:C8023", NnEmptyRowsCnt
CATPR_GetWorksheetData "C24:C" & NnEmptyRowsCnt + 24, strData
testID = Range("N14").Value
Print #intFNumber, testID & strData

'Close the text file
Close #intFNumber

'Inform the user about the process
MsgBox "Values from sheet '" & ActiveSheet.Name & "' were written to '" & sFName & "' file!", vbInformation

End Sub/i

Mais moi je veux insérer un bouton dans une nouvelle feuille Excel et en appuyant dessus je crée d'un coup des fichiers texte correspondant à toutes les feuilles Excel.
Comment devrai-je modifier mon code??
Merci d'avance..
J'ai trouvé l'APi Worksheets.Count qui permet de compter les feuilles Excel d'un classeur Excel mais je n'ai pa su comment l'exploiter par la suite??
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 juil. 2013 à 15:21
J'ai trouvé l'APi Worksheets.Count

L'"API", hein ...
N'importe quoi !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
12 juil. 2013 à 15:30
Vu qu'il a trouvé la propriété de la collection,
on va pouvoir le mettre sur la voie, non ?

For N&=1 to Worksheets.Count
[...] & Worksheets(N).Name & [...]
Next

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0
Rejoignez-nous