Bonjour
j'ai créé un fichier txt à partir de VBA et je l'ai ouvert avec la la fonction "Shell". Le problème c'est que j'aimerai l'enregistrer et le fermer.
Version imprimable
Bonjour
j'ai créé un fichier txt à partir de VBA et je l'ai ouvert avec la la fonction "Shell". Le problème c'est que j'aimerai l'enregistrer et le fermer.
essais avec :
Code:Workbooks("nom du fichier.txt").Close
je ne peut pas mettre workbooks.close parce que ce n'est pas un classeur excel, c'est un fichier texte. avec le classeur c'est possible de faireCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Sub fichier() Dim systemeDeFichier As Scripting.FileSystemObject Dim nouveauFichier As Scripting.TextStream Dim texte As String Set systemeDeFichier = New Scripting.FileSystemObject Set nouveauFichier = systemeDeFichier.OpenTextFile(Filename:="chemind'accès", IOMode:=ForWriting, Create:=True) nouveauFichier.Write texte Shell "notepad.exe Chemind'accès", 0 'j'aimerai ensuite à ce niveau l'enregistrer et le fermer. 'sachant que nouveaufichier.close permet de fermer juste l'objet textstrem Set systemeDeFichier = Nothing Set nouveauFichier = Nothing End Sub
Code:workbook("book").close SaveChanges:=true (fermeture avec enregistrement)
Bonjour,
un peut de code me ferait du bien.
ta fonction Shell exécute quoi notpad?
si tu ouvre ton fichier texte dans un userform ?
Voici le problème.
C'est un document xml qui n'arive pas à s'ouvrir Ce que je fait c'est ca:
je l'ouvre avec notepad, je l'enregistre sans toutefois le modier et je le ferme
et quand je l'ouvre de nouveau il s'exécute.
ce que je veux donc faire par VBA c'est automatiser cette procédure qui :
- ouvre le fichier xml avec notepad
- enregistre le fichier et le ferme
le problème c'est qu'une fois que je l'ouvre avec shell, j'arrive pas à l'enregistrer et à le fermer.
regarde ça
dans le fichier joint:
Code:
1
2
3 Sub test() UserForm1.OvrirFichier "c:\test\test.txt" End Sub
comment intégrer le fichier txt dans le userform. la propriété OuvrirFichier n'existe pas dans mon module
L’explorateur de projet vb fonctionne comme Windows exploreur.
Tu procède en déplacé collé de mon projet vers le tien.
Tu maintiens le click gauche de la souris sur mon UserForm et tu le déplace vers ton projet.
Pareil pour le module.
En fait j'ai un soucis avec les variables que vous avez définies.
Ce que vous avez défini comme NumFichier, est-ce le nombre de lignes de mon fichier txt? Et Fichier est-ce le répertoire dans lequel se trouve mon fichier?
et que Représente MyString?
NuMfichier c'est le nom virtuel du fichier il est entier long
Ficher est le fichier.
j'ouvre le fichier en lui donnant un Endle (NuMfichier) Fichier virtuel.
http://www.developpez.net/forums/d93...e-precisement/
Code:Open Ficher For Input As #NuMfichier ' Ouvre le fichier en lecture.
Ok.
Et si je ne veux rien écrire dans le dossier, que pourrai-je mettre à la place de MyString?
cette parti ce constante de lire le fichier pas d'écrire.
elle affiche le contenu du fichier dans Me.TextBox1.Text .Code:
1
2
3
4
5
6 Open Ficher For Input As #NuMfichier ' Ouvre le fichier en lecture. Do While Not EOF(NuMfichier) ' Effectue la boucle jusqu'à la fin du fichier. Line Input #NuMfichier, MyString Me.TextBox1.Text = Me.TextBox1.Text & MyString & vbCrLf Loop Close #NuMfichier ' Ferme le fichier.
si tu modifie le contenu de Me.TextBox1.Text quand le UerForm s'affiche.
tu peux enregistre les modification en cliquant sur enregistre.
c'est un nodpad sauf qu'il est intégré à ton projet vb et pas a l’extérieur via Shell.
tu peux donc agir dessus par des instruction VB.
exemple l'enregistrer a son activation et refermer le UserForm:
Code:
1
2
3 Private Sub UserForm_Activate() CommandButton1_Click End Sub
Merci pour la stratégie, mais mon fichier ne s'ouvre tjrs pas.
Bonjour,
envoie un fichier xml
voici le fichier source, le fichier de sortie(qui ne s'ouvre pas) et le fichier excel contenant ma macro et mes données
Sachant qu'il fallait que j'ouvre le fichier xml avec notepad, que je l'enregistre et que je le ferme pourqu'il puisse s'ouvrir avec le programme par défaut, j'ai écris ce bout de code qui fonctionne bien.
:ccool:Code:
1
2
3
4
5
6
7
8
9
10 Dim Monid As Long Monid = Shell("notepad.exe chemin d'accès fichier xml", 1) AppActivate Monid ' je met le focus sur l'application notepad 'Combinaison de touches SendKeys "%F", True 'je clique sur Fichier SendKeys "{DOWN 2}", True 'je selectionne enregistrer SendKeys "{ENTER}", True ' j'enregistre SendKeys "%{F4}", True 'Je ferme le chier