VBA - Enregistrer sous spécifique

Fermé
Nico - 2 mars 2016 à 11:17
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 3 mars 2016 à 07:59
Bonjour,

je vous expose mon problème:
Dans un fichier excel avec macro, je transforme un tableau pour l'écrire dans un fichier texte ligne par ligne:


'Ecrit dans le fichier txt
Do While NoLigne <= DerniereLigne
Open Chemin For Append As #NoLigne
Tableau(NoLigne) = Replace(Tableau(NoLigne), vbCrLf, "")
Tableau(NoLigne) = Replace(Tableau(NoLigne), vbCr, "")
Tableau(NoLigne) = Replace(Tableau(NoLigne), vbLf, "")
Print #NoLigne, Tableau(NoLigne)
Close
NoLigne = NoLigne + 1
Loop


Aujourd'hui je dois modifier cela pour que la personne qui clique sur le bouton qui provoque ce morceau de code, puisse effectuer un "enregistrer sous".

Grosso Modo, il clique sur le bouton, une fenêtre pop avec la sélection du chemin et le nom du fichier, la personne choisis le dossier dans lequel elle veux enregistrer le fichier ainsi que son nom (/!\ type .txt fixé /!\), elle clique sur OK, je récupère le chemin d'enregistrement qu'elle à choisis (répertoire+nom de fichier), le remplis ma variable "Chemin" avec et j'exécute mon code ci-dessus.

Je précise que je suis sur ce problème depuis presque 2h et que je sèche, je ne trouve pas ce que je veux sur le forum ni sur internet, peut être que je cherche mal ou que ma méthode n'est pas bonne...

Merci d'avance de votre aide dans tout les cas.

5 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
2 mars 2016 à 11:41
Bonjour,

Comme ceci:

Dim chemin As Variant
Dim NoLigne, DerniereLigne, Tableau
chemin = Application.GetOpenFilename("Fichiers texte (*.txt), *.txt")
    If VarType(chemin) = vbBoolean Then
        MsgBox "Opération annulée"
    Else
  'Ecrit dans le fichier txt
    Do While NoLigne <= DerniereLigne
        Open chemin For Append As #NoLigne
        Tableau(NoLigne) = Replace(Tableau(NoLigne), vbCrLf, "")
        Tableau(NoLigne) = Replace(Tableau(NoLigne), vbCr, "")
        Tableau(NoLigne) = Replace(Tableau(NoLigne), vbLf, "")
        Print #NoLigne, Tableau(NoLigne)
        Close
        NoLigne = NoLigne + 1
    Loop
     End If



0
Bonjour cs_Le Pivert,

Tout d'abord merci de votre réponse.
Cependant ce n'est pas ce que je recherche, dans votre code vous faites ouvrir une fenêtre qui me demande de sélectionner un fichier à ouvrir or ce que je recherche est de faire un enregistrer sous.

Avez-vous une solution?
Merci d'avance.
0
Up !
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
2 mars 2016 à 16:33
Bonjour,

Ce qui est urgent c'est que tu regardes l'aide sur Open avant de l'utiliser.
Parce que
    Do While NoLigne <= DerniereLigne
        Open Chemin For Append As #NoLigne

c'est du grand n'importe quoi qui fait peur...

On n'ouvre un fichier qu'UNE FOIS, et avec son #filenum fourni par windows
Là tu en ouvres un par ligne (que tu ne refermes sans doute pas d'ailleurs...), avec en plus le risque d'aller pourrir les écritures en cours des autres processus.

Sinon pour ta question soit tu ouvres 2 fichiers (1 en lecture, l'autre en écriture), soit l'original est destiné à être supprimé, auquel cas tu travailles dessus et te contentes de le renommer à la fin.
eric
0
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
Modifié par Le Pingou le 2/03/2016 à 16:52
Bonjour,
Juste au passage, pour enregistrer sous….. essayer ce code :
Sub test()
Dim fichier As String
On Error Resume Next
fichier = Application.GetSaveAsFilename( _
fileFilter:="Excel Files (*.xls), *.xls")
If fichier <> False Then ThisWorkbook.SaveAs fichier
End Sub
Note, à adapter dans votre procédure… !


Salutations.
Le Pingou
0

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

Posez votre question
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
3 mars 2016 à 07:59
Un petit peu de lecture pour avancer en VBA:

http://www.info-3000.com/vbvba/fichiers/#FichierTexte
0