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

Excel Discussion :

Générer des fichiers à partir de feuille


Sujet :

Excel

  1. #1
    Invité
    Invité(e)
    Par défaut Générer des fichiers à partir de feuille
    Bonjour,

    Je reviens avec mon problème mais cette fois ci en l'exposant de manière très précise. J'avoue m'être emmêlé les pinceaux dans mes demandes précédentes. Dyu coup, je joint un exemple pour vous expliquer précisément mon problème.

    Dans le fichier complet (j'ai joint un extrait du fichier complet), j'ai une macro qui complète les colonnes Classe, Nom, prénom. J'ai aussi un lien entre cellule (B2) qui m'indique un nom ou 0 (en absence de nom)

    J'aimerais avoir une macro qui génère un nouveau fichier à partir des feuilles où un nom est donné. Et bien sûr que la macro ne fasse rien si B2 = 0.

    Dans mon exemple, j'obtiendrai 2 fichiers : math1 et fra1 (et bien sûr pas de fichier HG1). L'idéal, on peut toujours rêver, est que le nom du fichier créé soit le même que le nom de la case B2.

    Pourquoi ? Si je pourrais le faire manuellement, dans mon fichier complet, j'ai environ 40 feuilles dont 15 avec un nom (mais évidement pas les mêmes feuilles à chaque période), donc si la macro me sort uniquement mes 15 feuilles avec en plus le texte B2 comme nom, ça m'éviterait de perdre du temps à tout dispatcher...

    Merci d'avance, ne serait-ce que pour avoir pris le temps de me lire.

    Test_macro.xlsx

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Dans l'exemple, je ne fais pas de vérification si certaines feuilles ne devraient pas être traitées.
    Change le chemin pour celui 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
    Sub Sauvegarde()
        Dim Chemin As String
        Dim Sh As Worksheet
     
        Chemin = "C:\"
        If Right(Chemin, 1) <> "\" Then Chemin = Chemin & "\"
     
        For Each Sh In ThisWorkbook.Worksheets
            If Sh.Range("B2") <> 0 Then
                Sh.Copy
                ActiveWorkbook.SaveAs Chemin & Sh.Range("B2") & ".xlsx"
                ActiveWorkbook.Close False
            End If
        Next
    End Sub

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour ta réponse. Je l'ai testé sur le fichier joint pour lequel il devrait me sortir un fichier math1 et fra1 mais pas HG1.

    Il me sort effectivement le fichier math1 puis j'ai une erreur d'execution '1004'. Microsoft Excel ne peut acceder au fichier "C:\A4D91100".

    D'où vient cette erreur et qu'est ce que ce fichier auquel excel n'arrive pas à acceder.

    PS : J'ai laissé le code tel que tu me l'as proposé, y-aurait-il des changement à faire ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Je ne sais pas trop...(?)

    Est-ce que A4D91100 te dit quelque chose ?
    Serait-ce un onglet masqué ?
    J'ai testé avec le fichier joint et ça fonctionnait bien...

    De plus il n'y a pas d'extension au fichier du message.. (?!)

  5. #5
    Invité
    Invité(e)
    Par défaut
    Salut,

    J'ai retesté plusieurs fois et le numéro derrière l'erreur changeait à chaque fois, du coup ne sachant pas, j'ai essayé un truc, j'ai simplement supprimer Chemin & de la ligne 11

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.SaveAs Chemin & Sh.Range("B2") & ".xlsx"
    qui devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveWorkbook.SaveAs  Sh.Range("B2") & ".xlsx"
    Et là ça fonctionne...j'ai touché à rien d'autre et je retrouve les fichiers avec le bon nom dans "mes documents", ceux avec 0 ne sont pas créés, donc merci beaucoup, ça va me faciliter le boulot...

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Tout de même étrange...
    Mais l'important, c'est que ça fonctionne

Discussions similaires

  1. Générer des fichiers à partir d'Enregistrements
    Par Ceflowi dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/02/2015, 16h47
  2. [XL-2007] Générer des fichiers à partir d'onglets
    Par Edou_ard dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/02/2012, 17h18
  3. [XSLT] Générer des fichiers XML à partir d'un XSL, possible ?
    Par rad_hass dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 20/10/2008, 13h04
  4. Générer des fichiers à partir d'un état
    Par laurent35 dans le forum Access
    Réponses: 3
    Dernier message: 02/05/2006, 02h54

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