Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Manipuler un *.txt en VBA sous Excel


Messages recommandés

Posté(e)

Bonjour à tous, je suis nouveau et j'ai un petit problème sous VBA sous Excel !! (super introduction hein ?)

 

En fait, je travaille sous Excel 2003 et je bosse sur une macro VBA, et je souhaiterais manipuler des fichiers texte, c'est à dire déclarer une variable MonFichierTexte et pouvoir la manipuler tranquillement.

 

J'arrive à le faire sur les applications du pack office

 

Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
Set WordDoc = WordApp.Documents.Add

 

Mais le truc, c'est que le fichier que je veux créer, je voudrais avoir la possibilité de l'enregistrer en .csv ou en .log, d'où le fait que je préfèrerais travailler tout bêtement avec le bloc-notes exactement comme je peux le faire au-dessus avec word.

J'avais pensé lancer word et enregistrer en .txt mais y'a plein de caractères bizarres qui débarquent...

 

J'espère avoir été clair, et vous remercie de vos réponses, en espérant pouvoir vous aider un de ces jours :P

 

Ayoros.

Posté(e) (modifié)

En fait, je suis en train de créer un outil de contrôle sous excel.

Un utilisateur ouvre mon fichier excel, et une petite interface sympa lui permettrait de charger un autre fichier excel qu'il voudrait contrôler. Je lui propose plusieurs options de contrôles, ensuite les contrôles sont lancés.

Seulement plusieurs issues sont possibles, on peut par exemple générer un fichier de sortie, un fichier .csv par exemple, ou bien générer un rapport d'erreur.

Ces fichiers de sorties je souhaite les enregistrer sous le bloc notes car c'est plus pratique pour l'enregistrement de diverses extensions.

Pour que ce soit plus pratique, j'aimerais bien que dans mon code, je manipule un fichier texte comme une variable, comme on peut le faire avec un .doc par exemple.

 

j'espère que c'est plus clair comme ça,

 

Ayoros.

Modifié par Ayoros
  • Modérateurs
Posté(e) (modifié)
J'avais pensé lancer word et enregistrer en .txt mais y'a plein de caractères bizarres qui débarquent...

C'est sans doute parce que tu forces le type de fichier à la hussarde (si je puis me permettre) ! :P

 

Essaie de passer par Fichier / Enregistrer sous. Choisis le type de fichier Texte brut (*.txt). Il apparaît un panneau Conversion de fichier. Tu laisses coché le bouton-radio Windows par défaut, et tu fais OK.

 

Je serais surpris que tu trouves encore des caractères bizarres ! Mais attention, c'est du texte à plat sans aucune présentation... forcément ! D'ailleurs, ils te le disent.

 

Ces fichiers de sortie, je souhaite les enregistrer sous le bloc notes car c'est plus pratique pour l'enregistrement de diverses extensions. Pour que ce soit plus pratique, j'aimerais bien que dans mon code, je manipule un fichier texte comme une variable.

Dans ce cas, c'est simple, sors toujours en extension CSV, c'est un fichier texte. La seule mise en forme qui existe dans ce format, c'est une ligne pour une ligne (donc un RC en fin de ligne, probablement \x0A0D), et un point-virgule entre les contenus de deux cellules adjacentes.

 

Et tu pourras te permettre ensuite de forcer l'extension de ton fichier, pour lui donner du TXT. Il sera lisible avec le bloc-note, mais aussi par EXCEL en tant que fichier-texte (si tu gardes l'extension CSV, il est chargé sous EXCEL en tant que fichier EXCEL).

Modifié par dylav
Compléments d'information
Posté(e)

Merci dylav pour tes infos, mais le truc, c'est que l'enregistrement en .txt à partir du lancement de word se fait dans la macro.

En fait, tout doit être automatisé dans ma macro. Je lançais ma word depuis ma macro et j'enregistrais dans la macro et j'avais des caractères bizarre...

C'est pour ça que je voudrais manipuler une variable du genre

 dim MonFichierTexte as Notepad.document
Set MonFichierTexte = MonFichierEnregistréEnTxt

Et malheureusement, si Excel 2003 reconnaît les déclarations Word.Application et Word.Document, ben Notepad.Application ou Notepad.Document, ça lui plaît pas...

Posté(e)

Salut a tous,

 

Erf wai a mon avis cette option n'existe pas...

 

Tu vas surement devoir la coder toi meme, mais bon n'es pas peur c'est pas si compliquer.

 

Désires tu creer un nouveau fichier et ecrire dedans ou bien veux tu pouvoir editer un existant ?

 

Pour creer et ecrire dans un fichier c'est tres simple

 

Dim iFile as integer

iFile = FreeFile

Open "C:\MonFichier.txt" For OutPut as #iFile

Print #iFile, "Test d'ecriture dans le fichier"

Close #iFile

 

Pour editer un fichier existant c'est un peu plus complexe car il faut savoir se promener dans le fichier mais ca reste tout a fait abordable.

 

Voila si tu as d'autres questions n'hesites pas :P

 

++

Posté(e)

merci seb,

j'avais vu cette option dans d'autres forums, mais je me demandais s'il n'y avait rien d'autres.

C'est peut-être c**, mais j'ai l'impression que c'est moins facile à manier qu'une variable classique.

 

Sinon, je me pose d'autres questions :

 

1/ ton C:\MonFichier.txt, il n'existe pas au préalable n'est-ce pas ?

2/ entre le print #ifile et le close #ifile, est-ce qu'on peut mettre du code ?

3/ c'est pas un peu stupide de pouvoir manipuler tranquillement un *.doc ou même un *.ppt et pas pouvoir se servir du bloc notes...

 

a priori, la première salve de questions est passée :P

 

encore merci,

 

Ayoros.

Posté(e)

re,

 

1) exacte ici le fichier n'éxiste pas et si il avait éxister il aurait été supprimé

Si tu veux ecrire dans un fichier existant il faut remplacer For Output par For Append

 

2) Eh oui tu peux mettre tout ce que tu veux entre Open et Close mais je te conseil de mettre le Close des que tu n'as plus besoin de fichier

 

3) Erf wai, disons que le fichier texte brut sont tellement simple que d'en faire une classe serait un peu inutile car ce que tu appel variable pour les .doc sont en fait des Classes que tu declare comme une variable.

  • Modérateurs
Posté(e)

Mais au fait, dis-moi, ma question va peut-être te paraître stupide, mais n'existe-t-il pas, sous EXCEL, la possibilité d'ouvrir ton fichier texte avec WORD (en associant WORD aussi à l'extension TXT) ?

 

Parce que WORD sait sans problème traiter un fichier texte (ouverture, mise à jour, réécriture). A la réécriture, il prévient simplement que les "fioritures" seront perdues...

Posté(e)

Yep bien vu dylav j'y ai meme pas pensé :P

La classe Word.Document doit pouvoir gerer le texte brut et donc on devrait pouvoir directement pointer vers un .txt a la place d'un .doc

 

Mais utiliser la classe Word pour du texte brut va surtout manger beaucoup de ressources inutilement.

Enfin ca depend si c'est juste pour ecrire quelques lignes et qu'il a deja declarer ou importer ses classes ca ne changera rien mais si il doit effectuer beaucoup d'operation sur ses .txt ca risque de faire une grosse difference

 

++

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...