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 un fichier par feuille de mon classeur


Sujet :

Excel

  1. #1
    Invité
    Invité(e)
    Par défaut Générer un fichier par feuille de mon classeur
    Bonjour,

    voilà ma question : J'ai une macro qui génére un nouveau fichier excel avec chacune des feuilles du classeur. Voilà la macro :

    Sub eclater()

    For Each feuille In ActiveWorkbook.Sheets

    feuille.Copy
    With ActiveWorkbook
    .Title = feuille.Name
    .Subject = feuille.Name
    .SaveAs Filename:=feuille.Name + ".xlsx"
    ActiveWorkbook.Close
    End With

    Next

    End Sub


    Sauf que toutes les feuilles de mon classeur ne sont pas à générer. Certaines parce qu'elles n'ont rien à voir, d'autre parce qu'elle sont vierge (selon la situation).

    Est-il possible d'ajouter des lignes de commande pour par exemple, générer un fichier à condition qu'une cellule de la page contiennent du texte ? Ça simplifierai la tâche car en effet, j'ai une cellule qui affiche 0 lorsque la feuille est vierge et un NOM lorsqu'elle est utiliser. Ça serait génial de pouvoir générer des fichiers à partir des feuille dont la cellule contient du texte uniquement et pas les autres.

    En effet, j'ai 30 feuilles mais seulement 15 utilisées en même temps, ça m'éviterai d'effacer les fichiers inutiles à chaque fois...

  2. #2
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Pense à baliser ton code (icone # de l'éditeur de ce fichier).

    Pour ce qui est des pages vierges, tu peux les repérer avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If feuille.UsedRange.Count = 1 Then
    Par contre, coder "n'ont rien à voir", je ne sais pas faire.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour l'info,

    Le soucis est que les feuilles ne sont pas vierges, je vais essayer d'être plus précis.

    J'ai 30 feuille avec un tableau à compléter. Au dessus du tableau, une cellule avec une fonction qui affiche 0 lorsque le tableau n'est pas à compléter et un NOM lorsqu'il est à compléter.

    L'idée est de créer une macro qui copie les feuilles avec un NOM dans la cellule du haut vers autant de fichiers différents (1 tableau = 1 feuille = 1 fichier créer) mais qu'il ne copie pas les feuille dont la cellule affiche 0.

    Ainsi je peux générer les tableaux dont j'ai besoin et envoyer chaque fichier aux collaborateurs concernés.

  4. #4
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    d'autre parce qu'elle sont vierge
    Le soucis est que les feuilles ne sont pas vierges


    J'ai 30 feuille avec un tableau à compléter. Au dessus du tableau, une cellule avec une fonction qui affiche 0 lorsque le tableau n'est pas à compléter et un NOM lorsqu'il est à compléter.
    "Au dessus du tableau", je ne comprends pas trop.
    En supposant que cette information se trouve en A1 (tu modifieras si ce n'est pas le cas), il suffit de placer entre ton For Each et ta copie, un test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If feuille.Range("A1").Value <> 0 Then
    N'oublie pas le End If qui va avec.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

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

    Erreur execution(424) : Objet requis

    Mon code est le suivant, et sans la ligne If... cela fonctionne:

    ActiveWindow.ScrollWorkbookTabs Sheets:=1

    Sheets("math1").Select
    If feuille.Range("B2").Value <> 0 Then
    Sheets("math1").Copy
    End If

  6. #6
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Pourquoi n'y a-t-il plus de boucle For ?
    Si tu changes ton code sans le signaler, c'est sûr qu'on ne peut pas te donner de réponse qui fonctionne.

    Et je le répète une nouvelle fois : Pense à baliser ton code (icone # de l'éditeur de ce fichier).
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Je m'y prend probablement mal, j'ai les deux codes en parallele et je cherche ce qui fonctionne le mieux...de plus je suis totalement novice et comprend à peine ce que je fais...


    Mea coulpa...dans le doute, j'ai testé ta proposition sur mon premier code et cela fonctionne super bien. J'ai été un peu présomptueux en pensant que ça n'était pas ce que je voulais, j'aurais du tester avant. Donc encore une fois désolé pour mes errance de grand débutant et merci pour ton aide. Je vais affiner un peu le tout pour éviter l'affichage de pages d'intro mais à priori ça fonctionne très bien. Encore merci !
    Dernière modification par Invité ; 22/06/2015 à 14h39.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Ha ben non,

    finalement avec ce code, il me sort chaque fiche que la case soit vide, égale à 0 ou qu'il y ai un nom.

    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 Eclater()
     
    For Each feuille In ActiveWorkbook.Sheets
    feuille.Copy
    With ActiveWorkbook
     
    'code ajouté
    If feuille.Range("B2").Value <> 0 Then
     
     
    .Title = feuille.Name
    .Subject = feuille.Name
    .SaveAs Filename:=feuille.Name + ".xlsx"
    ActiveWorkbook.Close
     
    'code ajouté
    End If
     
    End With
     
     
    Next
     
    End Sub

  9. #9
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Carraghenane Voir le message
    je suis totalement novice et comprend à peine ce que je fais...
    Utilise l'aide VBA intégrée à Excel. Elle est très bien faite pour expliquer la fonction et la syntaxe des divers éléments de programmation.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

Discussions similaires

  1. Effacer les données contenues dans certaines feuilles de mon classeur
    Par Vincent32 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/01/2012, 15h31
  2. créer un comboBox dans une feuille de mon classeur
    Par Masmeta dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/08/2008, 14h52
  3. créer un comboBox dans une feuille de mon classeur
    Par mimi31110 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 09/07/2008, 17h12
  4. Aide XML Générer un fichier par java
    Par coincoin22 dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 16/07/2007, 14h45

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