macro EnregistrementTXT, plantage instruction "ActiveWorkbook.SaveAs..."

paulo65

XLDnaute Nouveau
Bonjour,
j'ai un souci avec une macro et en particulier l'instruction "ActiveWorkbook.SaveAs".
J'ai récupéré la macro sur XLD "enregistrementTXT" que j'ai repris. Elle plante à l'instruction citée ci-dessus. Si je mets le chemin et le nom en dur ça tourne. je ne comprends pas :confused: De même, le fichier spod où je l'ai pompé plante aussi de la même façon.:mad:
Si quelqu'un a une idée, je suis preneur.
Merci d'avance pour toute réponse

Sub EnregistrementTXT()

Dim Chemin As String
Dim nomfichier As String


Application.DisplayAlerts = False
' Sélection du nom du fichier de sortie
Sheets("Data").Select
Range("A2").Select
Range("A2").Activate
nomfichier = Range("K10").Value & ".txt"
'Activation de l'onglet des données
Sheets("OutK1CmdK1").Select
Range("A1:A1604").Select
Range("A1604").Activate
Range("A1604").Copy
Set fichier = ActiveWorkbook.ActiveSheet
fichier.Copy
'Sauvegarde du fichier de sortie
Chemin = ActiveWorkbook.Path & "\"
ActiveWorkbook.SaveAs FileName:=Chemin & nomfichier, FileFormat:=xlText, _
CreateBackup:=False
ActiveWorkbook.Close
Application.DisplayAlerts = True

End Sub
 

Pièces jointes

  • XLD.xlsm
    56.9 KB · Affichages: 60
  • XLD.xlsm
    56.9 KB · Affichages: 82
  • XLD.xlsm
    56.9 KB · Affichages: 67

mth

XLDnaute Barbatruc
Re : macro EnregistrementTXT, plantage instruction "ActiveWorkbook.SaveAs..."

Bonsoir,

A première vue (pas testé plus loin) la cellule K10 de l'onglet Data est vide, donc la variable nomfichier est vide, d'où plantage ensuite.
Voir sans doute de ce coté là, nomfichier doit peut-être être alientée par une autre cellule?

@ +

mth
 

paulo65

XLDnaute Nouveau
Re : macro EnregistrementTXT, plantage instruction "ActiveWorkbook.SaveAs..."

Bonjour,
D'abord merci pour ta réponse.
En fait tu as raison sur l'exemple cité, car j'ai fait un mauvais copier coller du fichier que j'ai épurer pour poster. K10 est a remplacer par A2 bien sûr.
J'ai aussi mis 2 espions, 1 sur nomfichier qui me renvoi la bonne donnée "K1/CmdK1a.txt" comme string et 1 sur chemin qui me donne "\" comme string également.
En mettant bien A2 au lieu de K10 dans le fichier joint, tu pourras constater mon problème.
J'ai oublié de dire que j'utilise Excel2007 et 2010(idem)
A+
 

mth

XLDnaute Barbatruc
Re : macro EnregistrementTXT, plantage instruction "ActiveWorkbook.SaveAs..."

re :)

Tu as dans ton nom de fichier ce caractère: /
qui est interdit pour un nom de fichier (comme le sont également / * ? " > < |), c'est la raison pour laquelle ça ne fonctionne pas.

Bien à toi,

mth
 

paulo65

XLDnaute Nouveau
Re : macro EnregistrementTXT, plantage instruction "ActiveWorkbook.SaveAs..."

Effectivement, tu as raison.
Sans le / ça tourne.:D

Mais je n'arrive pas à faire ce que je souhaiyais, à savoir enregistrer un onglet d'une feuille au format texte...

Merci pour tes réponses avisées.:p
 

TempusFugit

XLDnaute Impliqué
Re : macro EnregistrementTXT, plantage instruction "ActiveWorkbook.SaveAs..."

Bonjour

Essaies d'adapter cette macro de test
(Elle enregistre bien une seule feuille en tant que fichier texte)
Code:
Sub Macro1()
Sheets("Feuil1").Copy
Nom = InputBox("Nom fichier texte?", "Nom fichier", "test.txt")
ActiveWorkbook.SaveAs Filename:= _
        "C:\" & Nom, FileFormat _
        :=xlText, CreateBackup:=False
End Sub
 

paulo65

XLDnaute Nouveau
Re : macro EnregistrementTXT, plantage instruction "ActiveWorkbook.SaveAs..."

Salut

Après quelques tentatives pour enregistrer mon onglet au format texte, j'ai réussi à ce que je souhaitais.

Un grand merci Mth pour ton aide.

A+ et encore merci.:cool:

voici mon résultat, si ça peut aider...

Sub EnregistrementTXT()

Dim Chemin As String
Dim nomfichier As String


Application.DisplayAlerts = False
' Sélection du nom du fichier de sortie
Sheets("K1cmdK1").Select
Range("K10").Select
Range("K10").Activate
nomfichier = Range("K10").Value & ".txt"
Chemin = ActiveWorkbook.Path & "\"
'Activation de l'onglet des données
Sheets("OutK1CmdK1").Select
Range("A1:A1604").Select
Range("A1:A1604").Activate
Range("A1:A1604").Copy
Set fichier = ActiveWorkbook.ActiveSheet
fichier.Copy
ActiveWorkbook.Activate
'Sauvegarde du fichier de sortie
ActiveWorkbook.SaveAs FileName:=Chemin & nomfichier, FileFormat:=xlText, _
CreateBackup:=False
ActiveWorkbook.Close
Application.DisplayAlerts = True

End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 487
Messages
2 088 823
Membres
103 971
dernier inscrit
abdazee