Problèmes d'enregistrements .txt successifs

  • Initiateur de la discussion Matthieu
  • Date de début
M

Matthieu

Guest
Code:
Re-Bonjour. J'arrive maintenant à enregistrer mesfeuilles en .txt dont le nom est une variable.
Mais la macro nomme systématiquement les fichiers .txt en ajoutant le nom du fichier.txt précédant
au nouveau (j'obtiens des noms de fichiers de 3 lignes...), avec le code suivant:

Sub essai()

Dim NomBrutTxt As String
Dim NouveauNom As String 'C'est le nom que je veux donner à mes fichiers .txt

Worksheets(4).Select
NomBrutTxt = ActiveWorkbook.Name & ActiveSheet.Name 'je concatene le nom du classeur et de la feuille
NouveauNom = Replace(NomBrutTxt, '.xls', ' ') 'je supprime l'extension .xls de ActiveWorkbook (parasite)
et j'obtiens nouveau nom de fichier, bien lisible
ActiveWorkbook.saveas Filename:='chemin\\' & NouveauNom, FileFormat:=xlText 'je sauve ma feuille(4) en .txt

'je fais la même chose avec la feuille suivante...(environ une dizaine de feuilles comme ça en tout).

Worksheets(5).Select
NomBrutTxt = ActiveWorkbook.Name & ActiveSheet.Name
NouveauNom = Replace(NomBrutTxt, '.xls', ' ')
ActiveWorkbook.saveas Filename:='chemin\\' & NouveauNom, FileFormat:=xlText

end sub


Pour forcer la macro à enregistrer correctement ces feuilles, je n'ai trouvé qu'une solution basique.
Après le traitement de chaque feuille, j'ajoute :

ActiveWorkbook.saveas Filename:='chemin\\'NomClasseurd'Origine', FileFormat:=xlNormal

ainsi, l'ActiveWorkbook appelé pour le traitement de la feuille suivante redevient mon Classeurd'Origine,
mais je perd toute la vélocité de l'application car j'enregistre une dizaine de fois 
mon classeur qui est déjà lourd. Deplus la macro renomme systématiquement les
feuilles du classeur en y ajoutant le nom de celui ci!

Là, je n'sais plus du tout... j'ignore peut être une fonction ou une propriété...
J'aurais besoin des conseils d'un gars plutôt compétent, ne serai-ce que pour arriver à comprendre mon message!
 
M

Matthieu

Guest
Selection.SaveAs me retourne 'Propriété ou méthode non gérée par cet objet'.
Il semblerai qu'on ne puisse pas demander d'enregistrer directement une feuille en .txt, mais plutôt le classeur (et par extension la feuille active de ce classeur).

Il doit bien y avoir une faille mais faut bien dire qu'j'y connais pas grand chose!

Merci quand même!
 

ERIC S

XLDnaute Barbatruc
re

Sheets('cumul').SaveAs Filename:='essaitexte', FileFormat:=xlTextWindows

est une syntaxe qui fonctionne mais par contre ton code devrait plutôt s'écrire :

nomfich=activeworkbook.name
replace (nomfich,'.xls',' ')
for i=4 to 6
sheets(i).saveas filename= nomfich & sheets(i).name, FileFormat:=xlTextWindows
next i

non testé

A+
 
M

Matthieu

Guest
En effet, c'est plus approprié, cependant ce code enregistre successivement mes (n) feuilles sur le même fichier 'False.txt' !

Sub essai()
Dim NomBrutTxt As String
Dim NouveauNom As String

NomBrutTxt = ActiveWorkbook.Name
NouveauNom = Replace(NomBrutTxt, '.xls', ' ')

For i = 4 To 9
Sheets(i).saveas Filename = 'Chemin\\NouveauNom & Sheets(i).Name, FileFormat:=xlText'
Next i

End Sub

Deplus il renomme ma 10ème feuille 'False' !
C'est trop injuste!
 
M

Matthieu

Guest
En effet, c'est plus approprié, cependant ce code enregistre successivement mes (n) feuilles sur le même fichier 'False.txt' !

Sub essai()
Dim NomBrutTxt As String
Dim NouveauNom As String

NomBrutTxt = ActiveWorkbook.Name
NouveauNom = Replace(NomBrutTxt, '.xls', ' ')

For i = 4 To 9
Sheets(i).saveas Filename = 'Chemin\\NouveauNom & Sheets(i).Name, FileFormat:=xlText'
Next i

End Sub

Deplus il renomme ma 10ème feuille 'False' !
C'est trop injuste!
 

ERIC S

XLDnaute Barbatruc
re

Sub essai()
Dim Nom As String, chemin as string

Nom = ActiveWorkbook.Name
Nom = Replace(Nom, '.xls', ' ')
chemin=thisworkbook.path & '\\' & Nom

For i = 4 To 9
Sheets(i).saveas Filename = Chemin& Sheets(i).Name, FileFormat:=xlText'
Next i

End Sub

par contre je ne sais pas quelles feuilles tu veux sauvegarder exactement mais dans le cas d'un test, fait

for i = ....
if not sheet(i).name= 'mafeuille' then
....
endif
next i

tu n'enregistreras pas la feuille en question
Sinon de toute façon ton fichier change de nom donc dans ta procédure il faudra sans doute le sauvegarder avant et fermer lefichier dont les feuilles et le nom ont changé sans l'enregistrer

A+
 
M

Matthieu

Guest
Rien à faire, le chemin retourné est correct mais dès que la méthode for/to est exécutée, il écrase (n) fois successivement un fichier qu'il nomme 'false.xls'. Rien d'autre...

Merci de m'avoir aidé. Si je trouve pas d'ici ce soir, je passe outre...et basta!

A+
 

ERIC S

XLDnaute Barbatruc
re

regarde fichier joint [file name=Matthieu_20060516181054.zip size=7509]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Matthieu_20060516181054.zip[/file]
 

Pièces jointes

  • Matthieu_20060516181054.zip
    7.3 KB · Affichages: 10
M

Matthieu

Guest
Bien sûr: fermer la fenêtre active sans ernegistrer!!!

Cette logique n'est pas instinctive pour moi, mais
je gage que j'vais progresser rapidement! Avec des gars compétents comme ça! Merci beaucoup Eric, j'admire ta patience et ton dévouement!

A+

Matthieu
 

Discussions similaires

Statistiques des forums

Discussions
312 345
Messages
2 087 450
Membres
103 546
dernier inscrit
mohamed tano