VBA - Enregistrer sous spécifique
Nico
-
cs_Le Pivert Messages postés 7904 Date d'inscription Statut Contributeur Dernière intervention -
cs_Le Pivert Messages postés 7904 Date d'inscription Statut Contributeur Dernière intervention -
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:
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.
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.
A voir également:
- Vba enregistrer sous chemin variable
- Audacity enregistrer son pc - Guide
- Comment enregistrer une conversation - Guide
- Enregistrer son ecran - Guide
- Comment enregistrer un mail - Guide
- Comment enregistrer une video youtube - Guide
5 réponses
Bonjour,
Comme ceci:
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
Bonjour,
Ce qui est urgent c'est que tu regardes l'aide sur Open avant de l'utiliser.
Parce que
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
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
Bonjour,
Juste au passage, pour enregistrer sous….. essayer ce code :
Salutations.
Le Pingou
Juste au passage, pour enregistrer sous….. essayer ce code :
Sub test()Note, à adapter dans votre procédure… !
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
Salutations.
Le Pingou
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.