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 :

Ouvrir tous les fichiers du répertoire sauf le fichier courant [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Par défaut Ouvrir tous les fichiers du répertoire sauf le fichier courant
    Bonjour à tous !

    Le classeur contenant ma macro (.xlsm) est situé dans un dossier, ce dossier contient un nombre variable de classeurs (.xlsm aussi) que la macro ouvre afin d'en extraire des données.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ' Principal = Thisworkbook
    Do While fichier <> "" And fichier <> Principal.Name
            Workbooks.Open (repertoire & fichier)
                For j = 1 To nbSpots
                    With ActiveWorkbook.Sheets("Circularity")
                        ' mes actions
                    End With
                Next
            ActiveWorkbook.Close savechanges:=False
            fichier = Dir
        Loop
    Le problème, mais qui est logique, est qu'on sort de la boucle dès qu'on tombe sur le classeur Principal. (Et comme par hasard, on tombe sur ce classeur là en premier !)

    Auriez-vous une solution ?

    Merci d'avance !

  2. #2
    Membre expérimenté
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Par défaut
    Bonjour,

    J'ai juste décalé ta condition dans un if interne à la boucle

    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
    Do While fichier <> ""
     
        If fichier <> Principal.Name Then
     
            Workbooks.Open (repertoire & fichier)
                For j = 1 To nbSpots
                    With ActiveWorkbook.Sheets("Circularity")
                        ' mes actions
                    End With
                Next
            ActiveWorkbook.Close savechanges:=False
            fichier = Dir
        End If
     
        Loop
    End Sub

  3. #3
    Membre éclairé
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Par défaut
    Salut Guiiand et merci beaucoup pour ta réponse !
    C'est d'une telle simplicité que je me sens bête de ne pas y avoir pensé

    Par contre, ça me fait une boucle infinie et je ne comprends pas pourquoi !
    J'ai exécuté pas à pas et la variable fichier conserve la même valeur !
    Aurais-tu une idée ?

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    Bonjour
    peut être en ajoutant une variable boolean qui sera contrôlé a la fin de chaque boucle en meme temps que dir en changeant l'argument de fin de boucle (while/until)
    -until=jusqu'a que
    while=tant que
    et encore je ne suis pas sur que avec until la variable soit encore nécessaire
    ensuite l'argument est placer en fin de boucle ca evite un dernier tour pour rien qui peut générer une erreur
    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
     
    Sub test1()
    Dim fin As Boolean
    Do
     If fichier = Principal.Name Then fin = True
     
        If fichier <> Principal.Name Then
     
            Workbooks.Open (repertoire & fichier)
                For j = 1 To nbSpots
                    With ActiveWorkbook.Sheets("Circularity")
                        ' mes actions
                    End With
                Next
            ActiveWorkbook.Close savechanges:=False
            fichier = Dir
        End If
     
        Loop until fichier = "" And fin = True
    End Sub
    Au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre éclairé
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Par défaut
    Bonsoir Patrick !

    Merci pour ta réponse.
    J'ai testé ta solution et même chose, fichier conserve la même valeur à chaque tour de la boucle.
    J'ai pourtant 3 autres classeurs .xlsm dans le répertoire.


    Je ne comprends pas, j'utilise pourtant le même procédé dans une autre macro qui, elle aussi, ouvre des fichiers (.csv ce coup-ci) du répertoire courant.

  6. #6
    Membre éclairé Avatar de Efgé2
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 48
    Par défaut
    Bonjour à tous
    Peut être comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
    Dim dossier As Object, fichier As Object
    Set dossier = CreateObject("Scripting.FileSystemObject").GetFolder(ThisWorkbook.Path)
    For Each fichier In dossier.Files
        If fichier.Name <> ThisWorkbook.Name Then
            Workbooks.Open (fichier)
            'etc
            ActiveWorkbook.Close savechanges:=False
        End If
    Next fichier
    End Sub
    Cordialement

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonsoir.

    Seul le code est en cause !

    Mais comment aider sans le voir ?

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    tiens celui la fonctionne
    j'ai adapté nbspot n'ayant pas de données a ce sujet
    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
     
    Sub essaie2()
    Application.DisplayAlerts = False
    '"C:\Users\Patrick\Desktop\essaie d'exel"
    Dim fichier As String, repertoire As String, wbk1 As Workbook, wbk2 As Workbook
    fichier = Dir("C:\Users\Patrick\Desktop\essaie d'exel\*.xls")
    repertoire = "C:\Users\Patrick\Desktop\essaie d'exel\"
    'boucle tant que le répertoire n'a pas été entièrement parcouru
    Set wbk1 = ThisWorkbook
    nbspot=10
    Do
      If fichier <> wbk1.Name Then
     
         Set wbk2 = Workbooks.Open(repertoire & fichier)
            DoEvents
                For j = 1 To nbSpots
                    With wbk2.Sheets("Circularity")
                        ' mes actions
                    End With
                Next
            wbk2.Close 'savechanges:=False
      DoEvents
          End If
        fichier = Dir
    Loop Until fichier = ""
     
    End Sub
    ca s'arrete bien apres le dernier

    Au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/05/2018, 17h07
  2. [XL-2007] Ouvrir tous les fichiers txt d'un répertoire
    Par discus23 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/06/2012, 15h34
  3. Réponses: 3
    Dernier message: 04/08/2010, 14h30
  4. Ouvrir tous les fichiers d'un dossier sauf celui de ma macro?
    Par drthodt dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/07/2008, 11h58
  5. Ouvrir tous les xls-fichiers d'un dossier
    Par A@Lah dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/10/2007, 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