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 :

boucler sur fichier et worksheet


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    853
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 853
    Par défaut boucler sur fichier et worksheet
    salut

    je chercher a naviguer dans tous les fichiers excells d'un répertoire
    et dans chaque fichier excelle parcourir toute les worksheet afin de récupérer des valeurs à certain endroit...

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
     
    Sub BrowseFolders()
        LoopThruExcelFiles ("C:\all")
    End Sub
     
     
    Function LoopThruExcelFiles(FileDir As String) As String
     
        Dim lCount As Long
        Dim wbResults As Workbook
        Dim wbCodeBook As Workbook
        Dim FileName As String
     
        Application.ScreenUpdating = False
        Application.DisplayAlerts = True
        Application.EnableEvents = True
     
        On Error Resume Next
     
        DoEvents
     
        Set wbCodeBook = ThisWorkbook
     
        With Application.FileSearch
            .NewSearch
             'Change path to suit
            .LookIn = FileDir
            .FileType = msoFileTypeExcelWorkbooks
     
            If .Execute > 0 Then 'Workbooks in folder
                For lCount = 1 To .FoundFiles.Count ' Loop through all.
                    Workbooks.Open FileName:=.FoundFiles(lCount)
                    FileName = ActiveWorkbook.Name
     
                    wbCodeBook.Activate
     
                    extractData wbCodeBook.Worksheets
     
                    Windows(FileName).Close
     
                Next lCount
            End If
        End With
     
        Application.ScreenUpdating = True
        Application.DisplayAlerts = True
        Application.EnableEvents = True
    End Function
     
    Sub extractData(allWs)
     
    	Dim ws As Worksheet
     
    	For Each ws In allWs
    		msgBox ws.Nam
    	Next ws
     
    end Sub
    je vois bien les fichiers excell s'ouvrir... mais je passe vois en tous qu'un seul msgBox... donc la boucle n'a pas lieu...
    une idée?

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Par défaut
    Avec le code suivant cela marche chez moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub extractData(allWs)
     
        For i = 1 To allWs.Sheets.Count
            MsgBox allWs.Sheets(i).Name
        Next
     
    End Sub
    A+

  3. #3
    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 robert_trudel et le forum
    Ton code me gène :
    Une Function a des limitations : elle est fait pour retourner un résultat. Ton erreur viens peut-être de son emploie. Remplace-la par un sub
    Si tu escamotes toutes les erreurs qu'Excel peut détecter, il obéit. Mais pour trouver l'erreur... c'est pas le plus facile.
    Vois pas très bien le but de ScreenUpdating = False alors que tu effaces déjà les erreurs avec Resume Next ?
    A+

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour,

    Personnellement, je passerais On Error Resume Next en commentaires et je réaliserais le code en pas à pas pour inspecter les variables. Les outils de débogage sont faits pour être utilisés, il me semble

    Gorfaël, screenupdating = false et Resume next n'ont rien de lié, et rien ne me gêne dans le fait de les utiliser ensemble
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu peux aussi jeter un oeil ici qui répond totalement à ton besoin : Liste les fichiers d'un répertoire, les ouvre, liste les feuilles de chaque fichier. Pour "récupérer des valeurs à certains endroits", tu n'as plus qu'à dire où (la macro utilise Dir, plus rapide, à la place de FileSearch)
    Bonne journée

  6. #6
    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 Pierre Fauconnier et le forum
    Gorfaël, screenupdating = false et Resume next n'ont rien de lié, et rien ne me gêne dans le fait de les utiliser ensemble
    moi, ça me gène, parce que y un ... qui a changé DisplayAlerts = False en screenupdating =False
    Non, je n'avais pas mal lu Le fromage blanc qui me sert à maintenir l'écart entre les oreilles, en voyant les trois au début et à la fin a interprêté une mise à False au début et remise à true, à la fin.
    Désolé, mais comme quand je fais une macro, je l'épure au max, dès fois, je lui en travers, et crois voir ce que j'aurais mis. J'espère que ça ne se reproduira plus (sans trop y croire).
    A+

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

Discussions similaires

  1. Boucler sur les fichiers Word les plus recents
    Par jérémyp8 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/06/2013, 15h48
  2. Boucler sur un fichier
    Par ALaurent22 dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 17/12/2012, 16h07
  3. [Débutant] Boucler sur les cellules d'un fichier Excel (VB NET)
    Par intimed dans le forum VB.NET
    Réponses: 1
    Dernier message: 23/03/2012, 11h55
  4. Boucler sur tous les onglets d'un fichier Excel
    Par CocoAntoine dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/03/2012, 13h08
  5. [VB6] Comment boucler sur des controls d'un form ?
    Par lankviller dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/01/2003, 16h29

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