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 :

Lecture de fichier par onglets spécifiques


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Par défaut Lecture de fichier par onglets spécifiques
    Bonjour,

    J'ai besoin de réaliser les actions suivantes avec des macros EXCEL mais je me pose quelques questions, notamment :

    1. Comment lire uniquement toutes les feuilles d'un fichier EXCEL qui ne commence que par un nom donné, exemple : RECAP_.
    2. Comment exporter automatiquement le contenu d'une nouvelle feuille qui contiendrait les données regroupées de toutes les feuilles RECAP_ dans un fichier EXCEL ?

    Merci d'avance pour toute information complémentaire.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut david71 et le forum
    1. Comment lire uniquement toutes les feuilles d'un fichier EXCEL qui ne commence que par un nom donné, exemple : RECAP_.
    une idée du bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For each F in Sheets
       If F.Name like "RECAP_*" then
          'le traitement des feuilles F commençant par RECAP_
       Endif
    Next F
    2. Comment exporter automatiquement le contenu d'une nouvelle feuille qui contiendrait les données regroupées de toutes les feuilles RECAP_ dans un fichier EXCEL ?
    Ne comprenant pas la question, je suis bien en peine d'y répondre
    A+

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Par défaut
    Salut Gorfael,

    Merci pour la première réponse.

    Disons que j'ai 5 feuilles Excel dans le même fichier et que j'en crée une nouvelle (soit à la main soit via macro).

    Dans la sixième feuille je vais m'arranger pour regrouper toutes les données des 5 autres feuilles. Une fois cela fait : je voudrais créer un nouveau fichier EXCEL qui ne contienne que la dernière feuille rajoutée, ceci via macro.
    Est-ce faisable ?

  4. #4
    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
    Bonsoir,
    Tu as donc en final un classeur qui contient 6 feuilles et tu veux ne retenir que la dernière qui est une consolidation des 5 autres.
    une piste :

    Une fois ta feuille 6 construite, par macro, tu sauvegardes le classeur entier sous le nouveau nom qu'il aura avec sa feuille unique (sans le fermer)
    tu delete les 5 feuilles inutiles (cf aide vba à Delete justement)

    .../... Cet exemple montre comment supprimer la feuille de calcul Sheet3 du classeur actif sans afficher la boîte de dialogue de confirmation.

    Application.DisplayAlerts = False
    Worksheets("Sheet3").Delete
    Application.DisplayAlerts = True

    .../...
    tu sauvergades ton classeur en le fermant (toujours en vba).

    cordialement,

    Didier

  5. #5
    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 tlm,

    Il existe aussi une solution pour créer un classeur qu'avec une seule feuille (dans ce cas ci la dernière feuille) sans devoir supprimer, dans ce nouveau classeur, les autre feuilles inutiles par la suite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
    Application.ScreenUpdating = False
     
    Sheets(Sheets.Count).Copy
    With ActiveWorkbook
        .SaveAs "C:\toto.xls"
        .Close
    End With
     
    Application.ScreenUpdating = True
    End Sub
    yapluka aller voir sur le disque C
    .

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Par défaut
    Pour reprendre étape par étape ce que je fais.

    J'essaie de copier une plage de cellule d'une feuille vers une autre.
    Or il se trouve que j'ai le problème suivant :

    * La copie ne met pas les données sur la feuille cible à l'endroit où je veux
    * Cette sélection ne sélectionne pas la plage souhaitée (je souhaite une sélection des cellules C7 à C17)
    * Je perds le contenu de mes cellules à la copie (en effet les cellules sources contiennent déjà des formules)

    Voilà le code utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub Macro3()    
        ActiveCell.Range("C7:C17").Select
        Selection.Copy
        Sheets("TEMP").Select
        ActiveCell.Select
        ActiveSheet.Paste    
    End Sub

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/01/2013, 19h22
  2. [VB6 Débutant] Lecture de fichier par FTP
    Par Tostaki dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 19/06/2008, 23h07
  3. Lecture de fichiers wave par événements extérieurs
    Par Jean Breil dans le forum Pascal
    Réponses: 0
    Dernier message: 19/09/2007, 00h19
  4. Lecture de fichier par blocs
    Par nicolas66 dans le forum C++
    Réponses: 12
    Dernier message: 11/11/2006, 20h36
  5. Lecture de fichiers images pixels par pixels
    Par FabHacker dans le forum Langage
    Réponses: 3
    Dernier message: 26/11/2005, 16h12

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