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 :

Enregistrer un CSV via VBA [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Chargée de missions
    Inscrit en
    Janvier 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargée de missions

    Informations forums :
    Inscription : Janvier 2016
    Messages : 73
    Par défaut Enregistrer un CSV via VBA
    Bonjour,

    Aujourd'hui, je m'attaque à l'export de fichiers Excel en CSV. Cette application sera à ouvrir par l'utilisateur une fois son doc Excel créé et avant de l'enregistrer manuellement.
    J'ai plutôt bien avancé sur le sujet et ma macro fonctionne :
    - A l'aide d'un combobox dynamique, je sors la liste des classeurs Excel ouverts.
    - Je sélectionne le classeur à convertir
    - Je sélectionne le type de séparateur (virgule ou point-virgule)
    - Je lance l'enregistrement
    Tout se fait c'est parfait !

    Seulement, dans le code de mon enregistrement, je ne sais pas comment faire pour faire apparaitre le Application.Dialogs(xlDialogSaveAs).Show de façon à ce qu'il soit paramétrer en CSV, selon le séparateur choisi.

    Pour le moment j'ai ce code. Mais ça ne me convient pas parce que l'utilisateur n'a pas la main sur le chemin d'enregistrement et le nom du fichier final :
    (Pour information, j'ai créé deux checkbox pour sélectionner le type de séparateur. Si le checkbox "virgule" est sélectionné, alors on lance le bout de code pour enregistrer en csv sep. virgule. Et inversement avec le checkbox "point-virgule").

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    If (Pointvirgule.Value = True And Virgule.Value = False) Then
    MsgBox "Vous êtes sur le point d'enregistrer le document " & Fichier & Chr(10) & "au format CSV, séparateur point-virgule"
    Workbooks(Fichier).SaveAs Filename:= _
    "E:\Macro Enreg CSV\nomfichier1.csv", FileFormat:=xlCSV, CreateBackup:=False, Local:=True
    End If
     
    If (Virgule.Value = True And Pointvirgule.Value = False) Then
    MsgBox "Vous êtes sur le point d'enregistrer le document " & Fichier & Chr(10) & "au format CSV, séparateur virgule"
    Workbooks(Fichier).SaveAs Filename:= _
    "E:\Macro Enreg CSV\nomfichier.csv", FileFormat:=xlCSV, CreateBackup:=False
    End If
    Merci par avance de vos retours !
    Bonne journée

  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
    Citation Envoyé par Pix_elle Voir le message
    Pour le moment j'ai ce code. Mais ça ne me convient pas parce que l'utilisateur n'a pas la main sur le chemin d'enregistrement et le nom du fichier final :
    Utilise Application.GetSaveAsFilename
    https://msdn.microsoft.com/fr-fr/lib.../ff195734.aspx

  3. #3
    Membre confirmé
    Femme Profil pro
    Chargée de missions
    Inscrit en
    Janvier 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargée de missions

    Informations forums :
    Inscription : Janvier 2016
    Messages : 73
    Par défaut
    Bonjour,

    C'est super ça fonctionne super !

    Je sais qu'avec le code suivant, il est possible d'obtenir le nom du dernier doc Excel enregistré. Cependant, j'ai plus que l'impression que ne sont concernés uniquement que les doc au format xls ou xlsx. Par quel moyen puis-je afficher le nom du dernier doc (en .csv) dans ma msgBox ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Application.RecentFiles(1).Name

  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
    RecentFile est une propriété à laquelle je n'ai jamais fais confiance.
    J'ai pu remarqué par le passé (avec d'autres versions d'Excel) qu'elle n'est pas fiable. En fonction de la façon d'ouvrir ou d'enregistrer un fichier, elle le place ou non dans sa liste. J'évite donc de l'utiliser depuis.

  5. #5
    Membre confirmé
    Femme Profil pro
    Chargée de missions
    Inscrit en
    Janvier 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargée de missions

    Informations forums :
    Inscription : Janvier 2016
    Messages : 73
    Par défaut
    Ah mince... Je demandais cela parce que je n'arrive pas à sélectionner le classeur fraîchement enregistré et ouvert (afin d'en extraire son nom) et je trouvais que ça pouvait être une alternative comme une autre.

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

Discussions similaires

  1. enregistrement de données via VBA
    Par roxanne971 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 19/07/2016, 16h25
  2. fermer un csv via VBA
    Par moimemessssssssss dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/06/2011, 22h51
  3. Enregistrement fichier excel via VBA
    Par vwtroudy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/07/2009, 09h28
  4. [VBA]Enregistrer en htm via visualbasic
    Par richardprod dans le forum SDK
    Réponses: 3
    Dernier message: 19/03/2007, 12h06
  5. [VBA-E] Problème pour enregistrer en csv (; et non ,) par macro
    Par bounette dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/12/2005, 09h34

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