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 :

[VBA-E]Liste des noms de classeur dans un dossier


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 156
    Points : 105
    Points
    105
    Par défaut [VBA-E]Liste des noms de classeur dans un dossier
    Bonjour

    J'ai 4 classeurs fermés dans un dossier. Le nom des classeurs peut changer selon des paramètres externes. Je voudrais récupérer tous les noms dans un MsgBox avec le code suivant situé dans un 5ème classeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub ListeNClasseur()
     
    Dim cl As Workbook
    For Each cl In Workbooks
    MsgBox cl.Name
    Next cl
     
    End Sub
    Ce code fonctionne bien si tous les classeurs sont ouverts. Mais comment avoir les noms de classeur, si seul le 5ème classeur au nom invariable est ouvert?
    Je pourrais les ouvrir un après l'autre, mais comment faire si on ignore son nom?
    Faut-il utiliser un appel API? Merci de m'apporter vos éclairages

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    bonjour

    tu peux tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim Fichier As String
     
    Fichier = Dir("C:\Documents and Settings\michel\dossier\*.xls")
     
    Do While Fichier <> ""
        MsgBox Fichier
        Fichier = Dir
    Loop

    bon week end
    michel

  3. #3
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 156
    Points : 105
    Points
    105
    Par défaut
    Bonsoir

    Merci pour ton code. Il a l'avantage d'être très court, car en faisant des recherches, j'ai trouvé un autre beaucoup plus long.

    Avec les noms, je peux ouvrir les classeurs, mais s'il est déjà ouvert, je reçois ce message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fichier.xls est déjà ouvert. Si vous l'ouvrez....etc
    Donc, il me faut procéder à un test afin de savoir s'il est déjà ouvert. Mais je ne connais pas le code à utiliser. Merci pour ton aide.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    bonjour

    dans ce cas tu peux utiliser

    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
    Dim Fichier As String
    Dim Wb As Workbook
     
    Fichier = Dir("C:\Documents and Settings\michel\dossier*.xls")
     
    Do While Fichier <> ""
     
        '----- vérifie si le classeur est ouvert ------
        On Error Resume Next
        Set Wb = Workbooks(Fichier)
        If Not Wb Is Nothing Then MsgBox "Fichier " & _
                                    Wb.Name & " déja ouvert"
        On Error GoTo 0
        '-----------------------------------------------
     
        Set Wb = Nothing
        Fichier = Dir
    Loop


    michel

  5. #5
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 156
    Points : 105
    Points
    105
    Par défaut
    Rebonsoir

    Quand je poste mon message, et que j'ai la solution en quelques minutes, je trouve cela formidable. Tout fonctionne comme sur des roulettes. Encore merci pour ta disponibilité, et félicitations pour ta compétence!

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

Discussions similaires

  1. [Débutant] Recuperer des noms de fichiers dans un dossier
    Par flo31100 dans le forum Interfaces Graphiques
    Réponses: 0
    Dernier message: 24/04/2013, 14h12
  2. Liste des noms d'un classeur
    Par david71 dans le forum Excel
    Réponses: 5
    Dernier message: 27/06/2008, 13h40
  3. lecture des noms d'images dans un dossier
    Par saxegaard dans le forum Général Python
    Réponses: 2
    Dernier message: 18/05/2008, 03h15
  4. Liste des noms des feuilles d'un classeur
    Par marc56 dans le forum Excel
    Réponses: 10
    Dernier message: 22/09/2007, 15h49
  5. [VBA Excel] Formule contenant des noms de colonnes dans macro
    Par Tinnou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/06/2007, 18h09

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