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 :

Méthode SaveAs csv


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 58
    Par défaut Méthode SaveAs csv
    Bonjour, j'exporte une de mes feuilles en .csv via la méthode SaveAs.
    Tout se déroule parfaitement bien.

    MAIS

    Existe-t-il un moyen qu'une fois cette sauvegarde accomplie, le fichier en cours (donc d'où on vient de lancer la macro) ne soit pas remplacé par le fichier que l'on vient de créer ?

    Mon utilisateur passe d'un .xls à un .csv, qui ne correpond même pas à ce qu'il veut, puisque l'on a toujours l'affichage des autres sheets.

    D'avance merci.

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut sauvegarde csv
    Bonsoir,

    Dans ton cas, si tu veux seulement enregistrer une feuille avec l'extension csv, alors il te faut d'abord copier ta feuille dans un nouveau claseeur puis proéder à ton enregistrement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Thisworkbook.Sheets("lafeuille").Copy
    ActiveworkbooK.Saveas........

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 58
    Par défaut
    Ok. Je comprends le principe, mais je me déplace comment dans les Workbooks ensuite, pour être sur de copier dans celui que je viens de créer ?

    Il n'y a pas possibilité de donner un nom directement à la création ?

    Si je passe par l'enregistreur de macro, j'ai un truc de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Workbooks.Add
        Windows("xx.xls").Activate
        Sheets("xx").Select
        Sheets("xx").Copy Before:=Workbooks("Classeur2").Sheets(1)
    qui ne me plais pas : Workbooks("Classeur2"), c'est dégueulasse. Si l'utilisateur a déjà d'autres fichiers créés, c'est foutu, et je suppose que le problème est le même si j'utilise Workbooks(index).

    EDIT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set truc= Workbooks.Add
        Windows("xx.xls").Activate
        Sheets("xx").Select
        Sheets("xx").Copy Before:=truc.Sheets(1)
    Du coup, autre question : Comment définir grâce à un set le workbook de départ, depuis lequel est lancé la macro ?

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut Variables Objet
    Bonjour Qwerty111, Bonjour le Forum,

    Pour gérer plusieurs classeurs, tu peux leur affecter des variables. Comme au sens d'Excel, ce sont des objets, cette affectation sera précédée de la méthode

    En 3 temps

    1 - Déclaration des variables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim wk_orig as Workbook, wk_dest as Workbook
    2 - Affectation des variables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set wk_orig = ThisWorkbook
     
    'Après la copie
     
    Set wk_dest = ActiveWorkbook
    3 - En fin de procédure, on vide les variables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set wk_orig = Nothing
    Set wk_dest = Nothing
    Ensuite, tu peux utiliser tes variables avec leur propriétés de classeur.

    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wk_orig.Sheets("lafeuille")

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 58
    Par défaut
    Parfait ! Je devrais pouvoir me débrouiller avec ça.

    Merci

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

Discussions similaires

  1. Question SaveAs -- Csv
    Par naoy93 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/05/2013, 04h43
  2. Erreur méthode SaveAs
    Par Vincent32 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 19/01/2012, 16h22
  3. création fichier excel méthode saveas
    Par _developpeur_ dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 22/07/2011, 13h00
  4. Réponses: 10
    Dernier message: 17/02/2009, 15h51
  5. Réponses: 25
    Dernier message: 25/04/2008, 15h23

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