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 :

Boucle sur fichiers excel ouverts [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Homme Profil pro
    Contrôleur de gestion en activité
    Inscrit en
    Juillet 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Contrôleur de gestion en activité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 545
    Par défaut Boucle sur fichiers excel ouverts
    Bonjour, EDIT : et désolé je pensais vraiment écrire sur le forum VBA.....

    Je souhaite faire une boucle For each .. Next sur des extractions d'un ERP qui sort des .xlsx sans pour autant avoir à les enregistrer.

    Le soucis c'est que la détection des fichiers ouverts est sensible et que je ne la comprend pas.
    Cette simple macro ne revoit que le fichier où je suis si je referme le fichier où se trouve la macro et le réouvre.

    idem si j'enregistre les fichiers extraits et que je les ouvre depuis l'explorateur.

    Par contre tout va très bien si je les ouvre depuis le menu excel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Macro2()
    '
    For Each book In Workbooks
    MsgBox book.Name
    Next
    End Sub
    J'avais déjà vu ce soucis sur d'autres macro, mais là c'est ennuyeux.

    En bref, j'ai 5 ou 6 .xlsx ouverts en même temps que le .xlsm mais c'est ce en même temps qui ne semble pas être évident du point de vue du code.

    Merci pour votre aide.

    SM

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Rappels :
    1) la collection WorkBooks ne contient que les classeurs ouverts (des procédures d'ouverture, dans la même instance de Excel, donc) depuis le classeur principal
    2) les procédures d'un classeur ne sont plus effectives si l'on ferme ce classeur.

    Ton soucis vient probablement d'une faille de prise en compte de ces deux aspects (le mécanisme mis en place lui-même).

  3. #3
    Membre émérite
    Homme Profil pro
    Contrôleur de gestion en activité
    Inscrit en
    Juillet 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Contrôleur de gestion en activité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 545
    Par défaut
    Merci Unparia,

    pour le point 1) comment écrire le code pour que les fichiers excel ouverts en même temps soient pris en compte quelque soit le mode d'ouverture ?

    pour le 2) c'était juste pour expliquer maladroitement que je changeais de session...

    SM

  4. #4
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Citation Envoyé par Supermichou Voir le message
    ...Le soucis c'est que la détection des fichiers ouverts est sensible et que je ne la comprend pas...
    Qui ouvre les fichiers Excel ? toi manuellement ou une macro ?

  5. #5
    Membre émérite
    Homme Profil pro
    Contrôleur de gestion en activité
    Inscrit en
    Juillet 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Contrôleur de gestion en activité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 545
    Par défaut
    Citation Envoyé par Igloobel Voir le message
    Bonjour,



    Qui ouvre les fichiers Excel ? toi manuellement ou une macro ?

    Bonjour,

    moi, en faisant les extractions depuis l'ERP.
    Le nombre peu varier un peu et le nom sera toujours différent (croisement de date et heure de l'extraction).

    Donc je passe en revue les fichiers ouverts.

    SM

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Si je comprends bien, tu pourrais utiliser les Windows
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For each prog in Application.Windows
        msgbox prog.caption
    Next

  7. #7
    Membre émérite
    Homme Profil pro
    Contrôleur de gestion en activité
    Inscrit en
    Juillet 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Contrôleur de gestion en activité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 545
    Par défaut
    Citation Envoyé par parmi Voir le message
    Bonjour,

    Si je comprends bien, tu pourrais utiliser les Windows
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For each prog in Application.Windows
        msgbox prog.caption
    Next
    Bonjour,

    J'ai testé ta solution.
    Malheureusement elle doit obéir aux même contraintes, puisque je rencontre les même difficultés.
    Merci quand même.

    SM

  8. #8
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Supermichou Voir le message
    Bonjour,

    moi, en faisant les extractions depuis l'ERP.
    Le nombre peu varier un peu et le nom sera toujours différent (croisement de date et heure de l'extraction).

    Donc je passe en revue les fichiers ouverts.

    SM
    Juste pour que l'on se comprenne bien :

    - c'est l'ERP qui génère les fichiers Excel ou c'est toi qui pilote l'ERP qui envoie les données dans Excel

  9. #9
    Membre émérite
    Homme Profil pro
    Contrôleur de gestion en activité
    Inscrit en
    Juillet 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Contrôleur de gestion en activité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 545
    Par défaut
    re-

    C'est l'ERP qui génère les .xlsx

    SM

  10. #10
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Supermichou Voir le message
    re-

    C'est l'ERP qui génère les .xlsx

    SM
    Donc j'en déduis que c'est toi qui les ouvre pour les gérer

    Dans ce cas j'utiliserai les "FileDialog"

    exemple
    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
        Dim Wrbk As Workbook
        Dim Chem_Select As String
        Dim Shp As Shape
        Dim Wsh As Worksheet
     
    'ouverture d'un fichier par boite FileDialog
    '**********************************************************
        'Declaration d'une variable comme objet FileDialog
        Dim fd As FileDialog
     
        'Creation d'un objet FileDialog comme un File Open dialog box.
        Set fd = Application.FileDialog(msoFileDialogOpen)
     
        'Déclaration d'une variable contenant le "path" de style variant
        Dim vrtSelectedItem As Variant 'obligatoirement de type variant
     
        With fd
            .AllowMultiSelect = True
            .InitialFileName = "D:\Travaux\en cours"
     
            If .Show = -1 Then
                 .Execute
            Else
                Exit Sub
            End If
        End With
    là tous tes fichiers sont ouvert puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        For Each Wrbk In Workbooks
     
        ' ...
        ' ton traitement par classeur
        ' ...
     
        Wrbk.Close
     
        Next Wrbk
    j'ai épurer mon code qui est en production actuellement dans mon entreprise

    tu dis
    A+

  11. #11
    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
    Oui Patrick,

    Je suis bien d'accord sur le fond. Je tiquais simplement sur "faille de sécurité" car ce n'est en rien une faille de sécurité.

    Par la simple installation d'une application ou d'un logiciel sur ta machine, tu lui donnes implicitement le droit d'ouvrir, voire de modifier, des fichiers de ton réseau (même si elle n'est pas censée le faire) et elle peut le faire à ton insu sans le moindre problème.

    Si tu veux protéger tes fichiers et/ou dossiers, tu utilises les options de sécurité de Windows qui doivent normalement s'imposer à cette application (je ne suis pas un expert de sécurité Windows, cependant).
    "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...
    ---------------

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

Discussions similaires

  1. [XL-2010] Requete Update sur fichier Excel ouvert
    Par Pascalcd dans le forum Excel
    Réponses: 3
    Dernier message: 24/11/2016, 19h25
  2. programme écriture en boucle sur fichier excel
    Par varik dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 19/04/2013, 18h09
  3. [VBA-Office]Détecter la directorie du fichier Excel ouvert
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 07/12/2006, 13h53
  4. Boucle sur fichiers et le caractère espace
    Par domiq44 dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 11/10/2006, 16h53
  5. Motifs de cellule sur fichier Excel sur Internet
    Par wanou44 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/07/2006, 08h53

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