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 :

Exporter feuilles d'excel avec VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Octobre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Octobre 2019
    Messages : 3
    Par défaut Exporter feuilles d'excel avec VBA
    Bonjour,
    J'aurais besoin de votre aide svp. Ci-dessous ma demande.
    J'ai un fichier excel avec 8 onglets avec des formules. Le fichier pèse très lourd. De ce fait, je voudrais exporter pour reporting seulement 5 onglets sur 8 sans formule de calcul (juste en valeur et la mise en forme) en reprenant le nom du fichier + date et heure de l'export. Aujourd'hui je fais des copier coller en valeur et supprimer les onglets inutiles et renommer le fichier. Cependant, je voudrais automatiser cette tache via macros.
    Quel serait le code VBA SVP???
    Merci de votre aide

  2. #2
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 179
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Essayes de te familiariser avec l'enregistreur de macros
    https://fauconnier.developpez.com/tu...istreur-macro/

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour exporter des listes de données ne contenant que les valeurs tout en conservant la mise en forme, il existe la méthode AdvancedFilter. Cette dernière permet également de limiter le nombre de colonnes exportables et ce dans un ordre choisi.
    Pour parcourir plusieurs feuilles il faudra utiliser la boucle For Each Objet In Collection ....... Next
    Pour limiter le nombre de feuilles exportables, on utilisera une structure conditionnelle telle que If...... Then ....... Else ou Select Case
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    (Télescopage avec Philippe que je salue au passage)

    Bonjour à vous, Bonjour au Forum,

    Essayes de te familiariser avec l'enregistreur de macros
    Oui mais à condition de prendre le recul nécessaire pour épurer de tous les méthodes Select et autres Activate.

    Il te faut
    - copier les feuilles sélectionnées vers un nouveau classeur
    - effectuer un collage de valeurs pour toutes les cellules spéciales contenant une formule
    - supprimer les noms relatifs au classeur initial
    - enregistrer le classeur actif sous un nouveau nom

    Ci-dessus, j'ai indiqués les liens vers les espaces documentaires adéquats.

    Quelques compléments:
    - Pour affecter une méthode sur un ensemble de feuilles, utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets(Array("lawks1","lawks2"))
    - Pour effectuer un collage de valeurs en lieu et place de formules
    Si c est un objet Range
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With c
      .Value = .Value
    End With

  5. #5
    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 rasulovp Voir le message
    J'ai un fichier excel avec 8 onglets avec des formules. Le fichier pèse très lourd. De ce fait, je voudrais exporter pour reporting seulement 5 onglets sur 8 sans formule de calcul (juste en valeur et la mise en forme)
    Tu Sauvegardes ton fichier complet sous son nouveau nom avec un SaveAs sur le Workbook de ton classeur.
    https://docs.microsoft.com/fr-FR/off...orkbook.saveas

    Tu boucles avec un For Each sur l'ensemble de la collection Worksheets de ton classeur.
    https://docs.microsoft.com/fr-fr/off...next-statement

    Sur l'intégralité des cellules (UsedRange) de chaque onglets, tu fais un Copy suivi d'un PasteSpecial(xlPasteValues).
    https://msdn.microsoft.com/fr-fr/lib...2(v=office.15)
    https://msdn.microsoft.com/fr-fr/lib...0(v=office.15)
    https://msdn.microsoft.com/fr-fr/lib...6(v=office.15)

    Tu supprimes les onglets en trop avec un Delete sur chacun d'eux.
    https://msdn.microsoft.com/fr-fr/lib...4(v=office.15)

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Pour ma part, je préfère exporter les seules feuilles souhaitées.
    Quant au collage spécial de valeurs, il peut s'effectuer par
    .Value = .Value

    De plus, il ne faut pas omettre un contrôle sur les noms afin de supprimer des liaisons éventuelles indésirables.

    Chacun sa méthode.

  7. #7
    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 MarcelG Voir le message
    Pour ma part, je préfère exporter les seules feuilles souhaitées.
    Coucou Marcel.

    Je pense que si rasulovp veut remplacer les formules par des valeurs, c'est que certaines de ces formules doivent utiliser comme paramètres des valeurs des feuilles à supprimer.
    Il me semble donc risqué d'exporter ces feuilles sans avoir écrasé les formules tout comme il me semble risqué d'écraser les formules avant d'exporter les feuilles.
    Le plus sécuritaires est, à mon avis, de copier le fichier, d'écraser les formules puis de supprimer les feuilles indésirables.

    Pour ce qui est du .Value = .Value, je ne lui fais pas trop confiance (sans doute à tord) quand il s'agit de donner en une seule ligne de code des valeurs différentes à plusieurs cellules. Je sais que ça fonctionne mais je suis plus rassuré avec un Copy + PasteSpecial(xlPasteValues).
    Question de goût.

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    L'utilisation de la méthode AdvancedFilter permet d'exporter les données en ne conservant que les valeurs des cellules ayant une formule tout en conservant le format.
    Exemple de la copie des données commençant à la cellule A1 de la feuille nommée Data dans la feuille nommée Cible à partir de la cellule A1 du classeur où se trouve le code VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub t()
      Dim rngSource As Range ' Plage source
      Dim rngTarget As Range ' Plage ou cellule cible
      With ThisWorkbook
       Set rngSource = .Worksheets("Data").Range("A1").CurrentRegion
       Set rngTarget = .Worksheets("Cible").Range("A1")
      End With
      ' Supprime les cellules de la feuille cible
      rngTarget.Worksheet.Cells.Clear
      ' Export des données
      rngSource.AdvancedFilter xlFilterCopy, CopyToRange:=rngTarget
      ' Fin de procédure
      Set rngSource = Nothing: Set rngTarget = Nothing
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  9. #9
    Candidat au Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Octobre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Octobre 2019
    Messages : 3
    Par défaut
    Bonjour,
    merci pour vos réponses
    Philippe Tulliez
    J'ai quelques problèmes:
    1. La mise en page n'est pas faite
    2. De plus, j'ai besoin d'avoir un onglet avec le nom par exemple cible. Or, ce que je veux c'est de garder les 5 mêmes onglets avec les mêmes données, mises en forme etc et supprimer les autres onglets de base données qui pèsent beaucoup....
    Je suis un peu dans l'impasse

Discussions similaires

  1. [Toutes versions] suppression de colonnes et feuilles sur excel avec VBA
    Par info009 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/05/2014, 16h21
  2. [XL-2003] Nommer les feuilles d'excel avec vba
    Par foughaa01 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/01/2010, 11h27
  3. Réponses: 9
    Dernier message: 19/02/2007, 20h33
  4. [VBA-E]Sauvegarde feuille Excel avec VBA
    Par jojo2303 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/03/2006, 19h06
  5. [VBA] Dissocier des feuilles Excel avec VBA
    Par lezinve dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/03/2006, 16h30

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