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 :

Extraire/Enregistrer Sous Feuilles d'un classeur en CSV [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Août 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 13
    Par défaut Extraire/Enregistrer Sous Feuilles d'un classeur en CSV
    Bonjour à tous,

    Je viens vers vous car je sens que je suis proche du but mais je rame pour trouver la solution définitive à mon problème.

    Ici je souhaite extraire différentes feuilles d'un classeur excel (de 15 feuilles) et choisir ou les enregistrer en gardant comme base le nom de la feuille puis la date qui aura été préalablement rentrée par l'utilisateur.

    Ici je pense qu'il me manque une étape ou je dois d'abord créer un nouveau classeur et non juste enregistrer mais je n'en suis pas capable...

    Voici mon code :

    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
    Sub Test()
     
        Dim chemin As String
        Dim objShell As Object, objFolder As Object, oFolderItem As Object
        Dim i As Byte
     
        Nom = InputBox("Entrer la date du l'arrêté comptable :")
     
        i = SAS
        Sheets(i).Select
        Set objShell = CreateObject("Shell.Application")
        Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
        On Error GoTo Gesterr
     
        Set oFolderItem = objFolder.Items.Item
        chemin = oFolderItem.Path
        ActiveWorkbook.SaveAs Filename:=i & Nom & ".csv", FileFormat:=xlCSV
     
    Gesterr::
     
    End Sub
    Voilà, j'espère avoir été clair dans mon explication, merci d'avance pour votre soutien!

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, un exemple à élaguer dont tu pourras t'inspirer
    Fichiers attachés Fichiers attachés

  3. #3
    Membre expérimenté
    Inscrit en
    Décembre 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 115
    Par défaut
    Bonjour

    Il manque la copie de la feuille à enregistrer dans un nouveau classeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sheets("Ma_Feuille").Select
    Sheets("Ma_feuille").Move
    ActiveWorkbook.SaveAs Filename:="Nom_Complet_de_mon_fichier.csv", _
    FileFormat:=xlCSV, CreateBackup:=False, Local:=True
    (Le local, c'est pour avoir les points-virgule et non les virgules en séparateur)

    Sinon il y a aussi Application.FileDialog pour choisir le répertoire
    (Je travaille avec XL2007)
    @+

  4. #4
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Août 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 13
    Par défaut
    Bonjour,

    Merci cela marche déjà beaucoup mieux, cependant encore un petit point, lorsque j'active la macro l'enregistrement ce fait automatiquement dans le répertoire P:/Mes Documents et je ne comprends pas pourquoi...

    Une idée?

    Voici mon code retravaillé :

    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
    Sub Test()
     
        Dim chemin As String
        Dim objShell As Object, objFolder As Object, oFolderItem As Object
     
     
        Nom = InputBox("Entrer la date du mois en cours au format mmyyyy :")
     
     
        Set objShell = CreateObject("Shell.Application")
        Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
        On Error GoTo Gesterr
     
        Set oFolderItem = objFolder.Items.Item
        chemin = oFolderItem.Path
        Sheets("LOC").Select
        Sheets("LOC").Copy
        ActiveWorkbook.SaveAs Filename:="LOC" & Nom & ".csv",_
        FileFormat:=xlCSV, CreateBackup:=False, Local:=True
        ActiveWorkbook.Close
     
    Gesterr::
     
    End Sub

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bonjour,

    tu utilise une variable chemin dans laquelle tu stocke le répertoire de destination ... mais tu oublie ensuite d'utiliser cette variable dans le calcul du nom de fichier (fileName) ...

  6. #6
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Août 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 13
    Par défaut
    Il faut le faire dans ce genre la ?

    Ca ne marche toujours pas même en faisant intervenir la variable chemin en question..

    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
    Sub Test()
     
        Dim chemin As String
        Dim objShell As Object, objFolder As Object, oFolderItem As Object
     
     
        Nom = InputBox("Entrer la date du mois en cours au format mmyyyy :")
     
     
        Set objShell = CreateObject("Shell.Application")
        Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
        On Error GoTo Gesterr
     
        Set oFolderItem = objFolder.Items.Item
        chemin = oFolderItem.Path
        Sheets("LOC").Select
        Sheets("LOC").Copy
        ActiveWorkbook.SaveAs Filename:= _
        chemin & "LOC" & Nom & ".csv", _
        FileFormat:=xlCSV, CreateBackup:=False, Local:=True
        ActiveWorkbook.Close
     
    Gesterr::
     
    End Sub

  7. #7
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par rom22950 Voir le message
    Ca ne marche toujours pas même en faisant intervenir la variable chemin en question..
    ..
    et il se passe quoi à ce moment la ...?

  8. #8
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour !

    rom22950, et si tu regardais au moins dans la fenêtre des Variables locales avec un point d'arrêt dans le code (B-A-BA !)
    le contenu de la variable chemin, tu verrais qu'il n'y a pas d'anti-slash à la fin !

    Donc en ajouter un dans la chaine avant "LOC". Qui plus est tu pourrais te passer de cette variable …

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  9. #9
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Août 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 13
    Par défaut
    Bonjour et merci,

    En effet maintenant le nouveau classeur est bien enregistré au bon endroit.

    Cependant celui ci s'enregistre en .csv séparateur virgule et non point virgule..

    Avez vous une idée d'ou peut provenir le problème?

    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
    Sub Test()
     
        Dim chemin As String
        Dim objShell As Object, objFolder As Object, oFolderItem As Object
     
     
        Nom = InputBox("Entrer la date du mois en cours au format mmyyyy :")
     
     
        Set objShell = CreateObject("Shell.Application")
        Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
        On Error GoTo Gesterr
     
        Set oFolderItem = objFolder.Items.Item
        chemin = oFolderItem.Path
        Sheets("LOC").Select
        Sheets("LOC").Copy
        ActiveWorkbook.SaveAs Filename:= _
        chemin & "\" & "LOC" & Nom & ".csv", _
        FileFormat:=xlCSV, CreateBackup:=False, Local:=True
        ActiveWorkbook.Close
     
    Gesterr::
     
    End Sub

  10. #10
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Tester en retirant Local:=True, utile en lecture mais inutile en enregistrement avec une version française d'Excel …


    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  11. #11
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Août 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 13
    Par défaut
    Non malheureusement ça ne change rien le fichier est toujours en .csv séparateur virgule avec ou sans le local:=True

  12. #12
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Version française d'Excel ou pas ? Et manuellement avec Enregistrer sous … ?

    Sinon vérifier le paramétrage régional de Windows …


    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  13. #13
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Août 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 13
    Par défaut
    Oui c'est bien la version française d'excel, et tous les paramêtres sont sur Français également..

    En enregistrement manuel le fichier est bien en séparateur point virgule

  14. #14
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Bon alors le refaire manuellement en utilisant l'Enregistreur de macros, le code est livré sur un plateau ‼


    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  15. #15
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Août 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 13
    Par défaut
    Parfaitement incopréhensible, quand j'utilise l'enregistreur de macro il enlève le local:=True et le fichier est en effet enregistrer en csv séparateur point virgule

    Cependant quand je copie la macro enregistrée avec l'enregistreur le fichier s'enregistre en csv séparateur virgule...

  16. #16
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Août 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 13
    Par défaut
    C'est bon j'ai trouvé, il fallait remplacer le "ActiveWorkbook.Close" par "ActiveWorkbook.Close SaveChanges:=False"

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

Discussions similaires

  1. Enregistrer plusieurs feuilles d'un classeur
    Par Didpa dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/05/2010, 23h12
  2. ajout d'un ouverture de classeur apres un code d'enregistrer-sous ?
    Par lebeniste dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 05/04/2008, 16h10
  3. Enregistrer une feuille Excel sur un autre classeur
    Par Manou34 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/01/2008, 16h41
  4. [VBA-E][2k7] Enregistrer une feuille d'un classeur dans un autre document
    Par tazamorte dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/04/2007, 18h15
  5. Enregistrer une seul feuille dans un classeur
    Par Didpa dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/08/2006, 22h58

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