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 :

Macro VBA : Problème avec SaveAs Worksheet en .txt [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Macro VBA : Problème avec SaveAs Worksheet en .txt
    Bonjour,

    Je lutte depuis quelques heures sur un malheureux problème avec une macro VBA :

    * je souhaite enregistrer une feuille de mon classeur actif au format texte sans fermer mon classeur actif (et en fermant le fichier texte créé) *
    (ça paraît simple là !)

    mais la seule méthode que j'ai trouvée pour le faire en gardant mon classeur ouvert et pour que cela soit transparent quand on lance la macro (genre en tâche de fond) c'est :
    - ajouter un nouveau classeur
    - y coller ma feuille
    - enregistrer sous
    - fermer le classeur actif (qui est le fichier texte créé)

    Jusque là tout va bien sauf que je voudrais aussi que la macro ferme le classeur ajouté (qui contient la copie de ma feuille), sauf qu'il est automatiquement en lecture seule et qu'une fois mon .txt fermé il n'est pas le classeur actif : je n'ai donc aucun moyen d'y accéder avec une méthode "close".

    Pour plus de clarté voici ma macro :
    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
    Public Sub Test()
     
        Dim file_name As String
     
        Set Data = Worksheets("Data")
        file_name = "Data.dat"
     
        THRISPData.Copy
        Workbooks.Add.Activate
        ActiveSheet.Paste
        ActiveWorkbook.SaveAs Filename:=file_name, FileFormat:=xlText, CreateBackup:=False
        ActiveWorkbook.Close SaveChanges:=True
        ActiveWorkbook.Close SaveChanges:=False
     
    End Sub
    Mon problème c'est qu'avec ce code c'est mon classeur principal qui se ferme (avec la deuxième instruction "close") et non pas le classeur ajouté !

    Pouvez vous m'aider à fermer le classeur ajouté ?
    Ou peut être avez vous une solution miracle pour "enregistrer sous" une feuille au format texte sans passer par tout ce micmac (et sans fermer le classeur de travail) !!!

    Merci beaucoup par avance ...

    Tity

  2. #2
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    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
    Sub test()
    Dim FlData As Worksheet, Chemin As String, NomFich As String
     
    Application.ScreenUpdating = False
     
    Set FlData = Sheets("Data")
    Chemin = "C:\Temp\"
    NomFich = "Data.dat"
     
    FlData.Copy
    ActiveWorkbook.SaveAs Filename:=Chemin & NomFich, FileFormat:=xlText, CreateBackup:=False
    With Workbooks(NomFich)
        .Saved = True
        .Close
    End With
     
    Application.ScreenUpdating = True
     
    End Sub
    Chemin à adapter, si tu veux sauvegarder le fichier "Data.dat" dans le même répertoire que le classeur excel, tu indiques le chemin comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Chemin = ThisWorkbook.Path

  3. #3
    Membre habitué
    Inscrit en
    Juillet 2008
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 268
    Points : 130
    Points
    130
    Par défaut
    Bonjour tity333,

    Ce code devrait faire ce que tu veux:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Public Sub Test()
     
        Dim file_name As String
        Dim Data As Worksheet
        Dim ChemRepNvWkb As String
        Dim NvWkb As Workbook
     
        '************************
        'Définition des variables
        '************************
        'Chemin du répertoire où le nouveau classeur sera enregistré
        ChemRepNvWkb = "C:\"
        'Nom du classeur qui sera créé
        file_name = "Data.dat"
        'Attribution de la feuille à copier à une variable
        Set Data = Worksheets("Data")
     
        '**********
        'Traitement
        '**********
        'Copie et création du nouveau classeur avec la feuille Data
        Data.Copy
        'Attribution du nouveau classeur (donc actif) à une variable (pour gérer notre classeur facilement)
        Set NvWkb = ActiveWorkbook
        'Sauvegarde du nouveau classeur avec une boîte de dialogue
        NvWkb.SaveAs Filename:=ChemRepNvWkb & file_name, FileFormat:=xlText, CreateBackup:=False
        'Fermeture du nouveau classeur
        NvWkb.Close SaveChanges:=False
    End Sub

    Argh trop tard, tu es trop rapide Fring

  4. #4
    Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 6
    Points : 4
    Points
    4
    Par défaut MERCI !
    Merci beaucoup à tous les deux !
    Ça fonctionne super bien ...
    Problème résolu donc, je peux m'atteler à la suite

    Tity

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

Discussions similaires

  1. problème avec l'apostrophe dans une requête
    Par mika0102 dans le forum VBA Access
    Réponses: 7
    Dernier message: 09/03/2019, 16h51
  2. [VBA]problème avec SaveAs
    Par porki dans le forum Access
    Réponses: 3
    Dernier message: 29/05/2006, 14h52
  3. [VBA]problème avec le debogage
    Par norkius dans le forum Access
    Réponses: 1
    Dernier message: 22/05/2006, 14h15
  4. [VBA] Problème avec composant VB6
    Par Diablo_22 dans le forum Général VBA
    Réponses: 8
    Dernier message: 16/03/2006, 20h41
  5. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24

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