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 :

[E-03] Création de fichier


Sujet :

Macros et VBA Excel

  1. #1
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut [E-03] Création de fichier
    Bonjour,

    alors voilà, petit à petit, je progresses

    Mon souci du moment, créer un fichier dans un emplacement donné avec le contenu de mon choix, et tout ça à partir de la macro.

    Ma question est simple, comment réaliser ça? Je n'ai rien pu trouver au cours de mes pérégrinations sur le net mais j'ai peut être mal cherché ...


    pour votre aide passée et à venir
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu as oublié de dire "avec un nom donné"
    Tu fais tout ça en enregistrant la macro et tu auras ton code.
    Au boulot !

  3. #3
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Tu as oublié de dire "avec un nom donné"
    Tu fais tout ça en enregistrant la macro et tu auras ton code.
    Au boulot !
    J'ai pas compris

    Désolé, mais je rappelles que j'ai qu'un seul jour de VBA dans les pattes


    Mes excuses
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Aïe !
    Essaie ça :
    Dans Excel, Menu Outils -> Macro -> Nouvelle macro
    "On" va te proposer un nom, "Macro 1" par exemple. Tu sélectionnes "Ok"
    Affiche une barre d'outils avec un carré bleu. Tu n'y touches pas pour l'instant.
    Ensuite : Sectionne le Menu Fichier -> puis Nouveau
    Ouvre un nouveau classeur vierge
    Ensuite : Menu Fichier -> Enregistrer sous
    Ouvre une fenêtre
    - Tu sélectionnes le répertoire qui va bien
    - Tu saisis le nom que tu veux donner à ton fichier
    - Tu sélectionnes "Enregistrer"
    Enfin, tu fais un clic sur l'iconne carrée qui se trouve sur la barre d'outils qui est apparue.
    C'est fini, ta macro est enregistrée.
    Pour récupérer le code, tu vas dans le menu Outils -> Macro -> VB Editeur
    Là, tu as un module qui s'est crée sous le nom du premier fichier ouvert, celui dans lequel tu as démarré ta macro. Deux clics sur "Module1" et tu as ton code.
    C'est plus long à expliquer qu'à faire, c'est aussi plus long à expliquer qu'à te donner le code tout fait mais vaut mieux apprendre à pêcher qu'à donner du poisson
    Bonne soirée et tous mes voeux pour ton avenir

  5. #5
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    C'est plus long à expliquer qu'à faire, c'est aussi plus long à expliquer qu'à te donner le code tout fait mais vaut mieux apprendre à pêcher qu'à donner du poisson
    Bonne soirée et tous mes voeux pour ton avenir
    Pour l'astuce, j'essaierai, promis , je connaissais pas cette méthode, moi je vais direct dans l'éditeur... à la bourrin quoi

    Je suis d'accord pour l'histoire d'apprendre à pêcher, je voulais pas une soluce clé en main non plus, un tuto m'aurai aussi convenu


    Merci pour la suite, meilleurs voeux aussi mes chers


    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  6. #6
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour Buchs,

    Ousk' a raison vu qu'en vba on dispose d'un enregistreur de macro qui, une fois activé crée le code dans l'éditeur vba au fur et à mesure des tes actions dans la fenêtre Excel.
    Je ne connais pas ton domaine, donc je ne sais pas s'il y a l'équivalent

    Sinon, une très bonne approche : pdf à télécharger

    http://bidou.developpez.com/article/VBA/

    vois en particulier, pour ta question les pages 128 puis 134

    reviens si ça bute..

    bon courage,

    Didier

  7. #7
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Ce PDF est tout bonnement une bible que je cherchais, elle répond déjà a 4 questions que j'allais poser prochainement


    pour tout
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  8. #8
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Me revoici, me revoilà

    Tout d'abord, pour la création de fichiers, j'ai réussi !

    Par contre, je butes sur autre chose, j'essaie de créer une fonction qui me créé un fichier CSV à partir d'une feuille de mon fichier Excel.

    Là ou ça bute, c'est que je veux que ça soit une copie et non tout le classeur que je renommes simplement !

    Autrement dit, quand je cliques sur un bouton ça appelle cette fonction qui me créé un CSV de ma feuille actuelle (tout en conservant le fichier XLS de base (ouvert))

    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Tu sais quoi? Là encore ton ami l'enregistreur de macros peut te répondre!
    Il est très fort: il est imbattable pour trouver la solution à la moitié des problèmes Excel!

    Pour un ressortissant de C, je sais que c'est assez dur à avaler.

  10. #10
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Citation Envoyé par decondelite Voir le message
    Tu sais quoi? Là encore ton ami l'enregistreur de macros peut te répondre!
    Il est très fort: il est imbattable pour trouver la solution à la moitié des problèmes Excel!
    Et non, penses bien que j'ai déjà essayé, mais lorsque je fais "Enregistrer sous...", une fois sauvegardé, j'ai le fichier CSV ouvert et non le XLS... C'est bien pour ça que je pose la question !

    Citation Envoyé par decondelite Voir le message
    Pour un ressortissant de C, je sais que c'est assez dur à avaler.

    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  11. #11
    Expert confirmé
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Par défaut
    Salut,

    Créé avec l'enregistreur de macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 30/10/2008 par moi
    '
     
    '
        Sheets("Données").Select
        Sheets("Données").Copy
        ActiveWorkbook.SaveAs FileName:="D:\Classeur2.csv", FileFormat:=xlCSV, _
            CreateBackup:=False
    End Sub


    Il ne te reste plus qu'à fermer ce classeur qui est ouvert et à activer le classeur source.


  12. #12
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Salut Lou Pitchoun,

    j'ai ce code aussi

    Cependant, c'est le fait de fermer le classeur pour ouvrir l'original qui me pose problème... En effet, je veux que ça soit totalement transparent pour l'utilisateur du fichier Excel ...

    Je sais pas si je suis clair ou non


    Dur dur de débuter en VBA ...


    pour votre aide
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  13. #13
    Expert confirmé
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Par défaut
    Alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Application.ScreenUpdating = False
     
    'ton code de copie/enregistrement de fichier toussa
     
    Application.ScreenUpdating = True
    ScreenUpdating fige l'écran là où tu te trouves.

  14. #14
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    J'interviens uniquement pour rappeler qu'existe la méthode :
    SaveCopyAs
    qui a pour effet d'effectuer une copie du classeur actif tout en le laissant actif ....

  15. #15
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Citation Envoyé par buchs Voir le message
    Et non, penses bien que j'ai déjà essayé, mais lorsque je fais "Enregistrer sous...", une fois sauvegardé, j'ai le fichier CSV ouvert et non le XLS... C'est bien pour ça que je pose la question !
    Ca je pouvais pas le deviner si tu ne le dis pas: j'y suis pour rien si je t'indique un truc que t'as déjà fait dans ce cas.

    Citation Envoyé par ucfoutu Voir le message
    Bonjour,

    J'interviens uniquement pour rappeler qu'existe la méthode :
    SaveCopyAs
    qui a pour effet d'effectuer une copie du classeur actif tout en le laissant actif ....
    C'est à mon avis la meilleure façon de s'y prendre: y a pas plus court.


    Tout ceci dit, je maintiens tout de même que l'enregistreur est bel et bien la réponse aux problèmes la moitié du temps.

  16. #16
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Citation Envoyé par Lou Pitchoun Voir le message
    Alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Application.ScreenUpdating = False
     
    'ton code de copie/enregistrement de fichier toussa
     
    Application.ScreenUpdating = True
    ScreenUpdating fige l'écran là où tu te trouves.
    Je testerais ça

    Citation Envoyé par ucfoutu Voir le message
    Bonjour,

    J'interviens uniquement pour rappeler qu'existe la méthode :
    SaveCopyAs
    qui a pour effet d'effectuer une copie du classeur actif tout en le laissant actif ....
    J'avais déjà tenté, mais ça l'enregistre avec l'extension actuelle, donc en xls et non CSV...

    Citation Envoyé par ouskel'n'or Voir le message
    J'allais poser la question (pour de vrai) : à quoi sert cette ligne
    J'sais pas, j'ai fais une recherche sur le forum et une des méthodes pour copier dans un fichier CSV consistait en ça plus une autre suite de commandes

    Citation Envoyé par decondelite Voir le message
    Ca je pouvais pas le deviner si tu ne le dis pas: j'y suis pour rien si je t'indique un truc que t'as déjà fait dans ce cas.



    Citation Envoyé par decondelite Voir le message
    Tout ceci dit, je maintiens tout de même que l'enregistreur est bel et bien la réponse aux problèmes la moitié du temps.
    Enfin pour les débutants...


    ++
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  17. #17
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Hello Buchs,

    de la stratégie (sans même le code) :
    1) tu "savecopyas" titi vers toto ===>> toto garde le format de titi et titi reste actif (avec savecopyas)
    2) tu ouvres (en caché) toto et le saveas tutu en csv, cette fois-ci ===>> tutu devient actif en remplacement de toto mais titi est toujours également là
    3) tu fermes tutu ===>> il ne te reste que la fenêtre titi et l'utilisateur n'y voit que du feu.

    Essaye, pour voir

  18. #18
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Encore plus fort ucfoutu: tu savecopyas directement au format csv.

    J'ai fait comme ça, et ça m'a bien fait un fichier csv sans modifier mon classeur en cours.

    Ca tient en une seule ligne ça: c'est pour ça que j'ai dit que c'était la meilleure solution.

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

    Informations professionnelles :
    Activité : Engineering

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

    Juste un petit détail
    Citation Envoyé par buchs Voir le message
    Par contre, je butes sur autre chose, j'essaie de créer une fonction qui me créé un fichier CSV à partir d'une feuille de mon fichier Excel.
    SaveCopyAs va faire une copie du classeur entier.

    Une solution éventuelle
    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
    Sub test_csv()
    Dim Chemin As String, Nom As String
    Application.ScreenUpdating = False
     
    Chemin = "I:\Temp\" '<-- à adapter
    Nom = Sheets(1).Name & ".csv" '<-- à adapter
     
    Sheets(1).Copy
    With ActiveWorkbook
        .SaveAs Filename:=Chemin & Nom, FileFormat:=xlCSV
        .Close False
    End With
     
    Application.ScreenUpdating = True
    End Sub

  20. #20
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Citation Envoyé par decondelite Voir le message
    Encore plus fort ucfoutu: tu savecopyas directement au format csv.

    J'ai fait comme ça, et ça m'a bien fait un fichier csv sans modifier mon classeur en cours.

    Ca tient en une seule ligne ça: c'est pour ça que j'ai dit que c'était la meilleure solution.
    La seule option quand je fais savecopyas, c'est renseigner le nom et le fait de mettre l'extension csv dans le nom ne change rien, il enregistre au format Excel (ouvert avec un éditeur de texte).

    Citation Envoyé par fring Voir le message
    Bonjour,

    Juste un petit détail

    SaveCopyAs va faire une copie du classeur entier.

    Une solution éventuelle
    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
    Sub test_csv()
    Dim Chemin As String, Nom As String
    Application.ScreenUpdating = False
     
    Chemin = "I:\Temp\" '<-- à adapter
    Nom = Sheets(1).Name & ".csv" '<-- à adapter
     
    Sheets(1).Copy
    With ActiveWorkbook
        .SaveAs Filename:=Chemin & Nom, FileFormat:=xlCSV
        .Close False
    End With
     
    Application.ScreenUpdating = True
    End Sub
    Je deviens fou ...

    J'ai implémenté ta méthode, et au lieu de m'enregistrer le fichier, il me l'ouvre dans une autre fenêtre Excel
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

Discussions similaires

  1. création de fichiers dans le disque dur
    Par sex-sansbol dans le forum ASP
    Réponses: 6
    Dernier message: 24/08/2004, 09h39
  2. Création de fichiers CAB
    Par Polux63 dans le forum Windows
    Réponses: 5
    Dernier message: 22/08/2004, 10h50
  3. Création de fichier
    Par gsxr man dans le forum ASP
    Réponses: 2
    Dernier message: 28/06/2004, 22h19
  4. Réponses: 8
    Dernier message: 03/09/2003, 00h47
  5. création de fichiers .x
    Par Pazz dans le forum DirectX
    Réponses: 1
    Dernier message: 03/12/2002, 00h33

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