IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Sauvegarde sous .txt problème nom fichier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    gestionnaire
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : gestionnaire

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Par défaut Sauvegarde sous .txt problème nom fichier
    Bonjour,

    j'ai un fichier excel contenant une macro sous forme d'un bouton. En cliquant sur le bouton, elle ouvre un fichier excel et copie / colle la feuille sur mon fichier excel contenant la macro.

    Puis après transformation des données, elle sauvegarde sous format .txt (tab delimited).

    Mon problème se situe lors de la sauvegarde. Le fichier txt est bien enregistré par contre mon fichier excel qui contient la macro se renomme en .txt avec le nom que j'ai donné au fichier de sortie txt.
    Comme l'utilisateur doit cliquer plusieurs fois sur le bouton pour faire tourner plusieurs fois de suite la macro, il faut que mon fichier excel contenant la macro ne se transforme pas en txt.

    Pouvez vous m'aider svp? la seule technique que j'ai trouvé est de fermer le fichier et désactiver les alertes et par conséquent la sauvegarde mais du coup l'utilisateur doit ré-ouvrir le fichier excel pour ré-executer la macro. Pas bien pratique

    Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActiveWorkbook.SaveAs Filename:=nomFichierSortie, FileFormat:=xlText, CreateBackup:=False
    Application.DisplayAlerts = False
    MsgBox "FICHIER GENERE"
    ActiveWorkbook.Close
    Merci d'avance

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    C'est sans doute parce que, au moment où se déclenche la ligne SaveAs, le fichier actif est le fichier de ta macro.
    Donc soit il faut désigner le bon fichier avec un Workbooks("nom_fichier") à la place du ActiveWorkbook, soit il faut mettre juste avant un Activate sur le bon fichier (ce qui revient un peu au même).

    Si tu ne comprends pas, copie une portion plus grande de ton fichier dans ton prochain message.

  3. #3
    Membre averti
    Femme Profil pro
    gestionnaire
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : gestionnaire

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Set fichierSource = Application.Workbooks.Open(Application.GetOpenFilename) 'ouvre le fichier et stocke le chemin dans variable
     
    fichierMacro = ThisWorkbook.Name 'affecte le nom du fichier à la variable
    cheminCible = ThisWorkbook.Path & "\" & fichierMacro
     
    fichierSource.Activate 'active la feuille fichier source
    Worksheets(1).Copy after:=Workbooks(fichierMacro).Sheets(2)
     
    fichierSource.Close
     
    Worksheets(3).Activate
    fin = [A65536].End(xlUp).Row
     
    **TRANSFORMATION DES DONNEES**
     
    ActiveWorkbook.SaveAs Filename:=nomFichierSortie, FileFormat:=xlText, CreateBackup:=False
    Application.DisplayAlerts = False
    MsgBox "FICHIER GENERE"
    ActiveWorkbook.Close
    merci de ta réponse, je comprends ce que tu me dis mais je n'ai plus qu'un fichier d'ouvert car j'ai fermé le fichier avec les données...

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Donc le fichier que tu souhaites enregistrer en txt, c'est lequel ? Celui qui contient ta macro ou le fichier ouvert au départ ?

  5. #5
    Membre averti
    Femme Profil pro
    gestionnaire
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : gestionnaire

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Par défaut
    c'est celui qui contient ma macro.
    La feuille du fichier qui a été ouvert a été copié dans celui avec la macro puis refermé

    Peut-être que je m'y prends mal et que je dois demander à ma macro de copier la feuille dans un nouveau classeur afin d'enregistrer ce dernier dans un txt... et ainsi j'aurai pas de pb de fichier qui se renomme. Par contre il faudra que je jongle avec le bon workbook actif...

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Petitmetisse Voir le message
    c'est celui qui contient ma macro.
    Il existe une fonction SaveCopyAs qui permet d'enregistrer une copie d'un fichier ouvert sans modifier celui-ci.
    Mais elle ne convient pas à ton cas car elle ne permet pas de changer de type de fichier et tu ne pourrais donc pas enregistrer en TXT.
    https://msdn.microsoft.com/fr-fr/lib.../ff835014.aspx

    Ce que tu peux essayer de faire est de mettre un second SaveAs juste après le premier pour sauvegarder de nouveau ton fichier en XLSM (ce qui ne t'empêcherait pas de conserver la version TXT sur le disque).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim NomXLSM As String
    NomXLSM = ActiveWorkbook.Name
    ActiveWorkbook.SaveAs Filename:=nomFichierSortie, FileFormat:=xlText, CreateBackup:=False
    ActiveWorkbook.SaveAs Filename:=nomXLSM, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    Mais il serait plus propre et plus judicieux de créer un nouveau fichier ( Workbooks.Add ) pour y placer tes données et enregistrer en txt.
    D'autant plus que ce fichier devant être enregistrer en TXT, il n'a besoin d'aucune particularités au niveau présentation, format de cellule, etc.

    Par contre il faudra que je jongle avec le bon workbook actif...
    Pour la partie transfert de données, ce ne sera pas plus compliqué puisque tu passes déjà d'un fichier à un autre.
    Le plus simple est de mettre les références aux feuilles sources et destination dans des variables de type Worksheet et désigner les sources et destination devient assez simple.
    Ca évite d'avoir à jouer avec les Activate, ce qui ralentit l'exécution et complexifie le code.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème nom fichier avec accent Mac -> Windows
    Par shinchan dans le forum Mac OS X
    Réponses: 5
    Dernier message: 26/08/2013, 21h14
  2. Probléme nom fichier avec WIMNN.dll
    Par miabi dans le forum VB.NET
    Réponses: 2
    Dernier message: 12/10/2009, 22h57
  3. Rechercher sous-chaine dans nom fichier
    Par leuke dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 17/06/2009, 17h11
  4. Sauvegarde automatique de fichier excel sous un autre nom
    Par Jonathan Raucy dans le forum Excel
    Réponses: 1
    Dernier message: 30/01/2008, 14h37
  5. Réponses: 3
    Dernier message: 25/01/2006, 17h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo