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 :

Appliquer une macro sur plusieurs fichiers excel


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Septembre 2015
    Messages : 20
    Points : 8
    Points
    8
    Par défaut Appliquer une macro sur plusieurs fichiers excel
    Bonjour,

    J'ai un programme qui me donne 150 fichiers excel séparés avec tous des noms différents.

    Je souhaite appliquer une macro sur l'ensemble des fichiers sans avoir à les ouvrir.


    J'ai trouvé cette macro qui fonctionne mais je dois quand même ouvrir mes fichiers un par un;
    Je voudrais modifier l'appel du fichier et faire une loop pour qu'il passe tous les fichiers du répertoire.


    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
    Sub Tousfichiers() 
    Const type_fichier As String = "tous fichiers, *.*" 
    Dim FichierChoisi As String 
     
    'Choisir un fichier 
    FichierChoisi = Application.GetOpenFilename("Fichiers Excel, *.xlsx") 
    If FichierChoisi = "" Then Exit Sub 
     
    'ouvrir le fichier 
    Workbooks.Open (FichierChoisi) 
     
    'traitement 
     
    Call Verrouillage 
     
    'puis à la fin fermer et enregistrer le fichier 
    ActiveWorkbook.Close savechanges:=True 
     
    End Sub





    Macro qui sera ensuite exécutée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Verrouillage() 
    Sheets("OUTIL").Select 
    Range("A1:F2").Select 
    selection.Locked = True 
    Range("G1:J2").Select 
    selection.Locked = False 
    selection.FormulaHidden = False 
    ActiveSheet.Protect Password:="motdepasse", DrawingObjects:=True, Contents:=True, Scenarios:=True 
    Range("A1").Select 
    End Sub


    Un gros merci à l'avance pour votre aide!
    Flag

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par flag007 Voir le message
    Je souhaite appliquer une macro sur l'ensemble des fichiers sans avoir à les ouvrir.
    C'est impossible.
    Il n'est pas possible de lire (et encore moins de modifier) un fichier sans l'ouvrir d'une façon ou d'une autre.

    Je voudrais modifier l'appel du fichier et faire une loop pour qu'il passe tous les fichiers du répertoire.
    Faire une boucle While avec une fonction Dir().
    https://msdn.microsoft.com/fr-fr/VBA...wend-statement
    https://msdn.microsoft.com/fr-fr/VBA...s/dir-function
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    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 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Je suis d'accord avec Menhir dans le fait que pour faire des modifs dans tes fichiers il faudra bien les ouvrir

    Cependant si je lis entre les lignes Ce que tu veux c'est : ne pas les ouvrir manuellement

    donc moi j'utiliserais la fonction Dir dont voici un 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
    Sub test_dir()
     
        Repons = "D:\TEMPO\*.xls"
        Fichier = Dir(Repons)
        Tot_Fic = 0
        Mess = ""
        Do While Fichier <> ""
            Mess = Mess & Repons & Fichier & vbCrLf
     
            Fichier = Dir
            Tot_Fic = Tot_Fic + 1
        Loop
        Mess = Mess & vbCrLf & "Nombre de fichier = " & Tot_Fic
        MsgBox Mess
     
    End Sub
    le *.xls ramène les fichiers : .xls, .xlsx, .xlsm ...

    tu l'adapte à ton code et voilà

    Enfin si j'ai bien compris

    tu dis

    A+
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Igloobel Voir le message
    Je suis d'accord avec Menhir dans le fait que pour faire des modifs dans tes fichiers il faudra bien les ouvrir
    Cependant si je lis entre les lignes Ce que tu veux c'est : ne pas les ouvrir manuellement
    Il envisage même peut-être de ne pas les ouvrir "façon Excel" mais avec des outils de base de données avec une connexion ADODB.
    http://silkyroad.developpez.com/VBA/ClasseursFermes/

    Mais il me semble qu'il serait peu judicieux de proposer une méthode si complexe à une personne qui semble débuter en codage VBA.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Responsable
    Office & Excel


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    Citation Envoyé par Igloobel Voir le message
    [...]

    le *.xls ramène les fichiers : .xls, .xlsx, .xlsm ...
    [...]
    Pour ramener les xls ET les autres, il faut utiliser *.xls*
    "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...
    ---------------

  6. #6
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    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 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Je suis d'accord sur le principe sauf que sur mon Excel 2010 ça fonctionne parfaitement :

    *.xls me ramène tout les xls et les xls quelquechose

    je connais bien le DOS et donc normalement j'ai besoin de rajouter un * après

    Seulement VBA doit être plus permissif (voir même des fois trop )

    dis moi pierre que donne ma petite macro tel quel chez toi ?

    A+
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  7. #7
    Responsable
    Office & Excel


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Sans le second *, je n'ai que les xls
    "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...
    ---------------

  8. #8
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    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 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Bon

    j'ai relancé par acquis de conscience et cela marche toujours

    pour plus de sécurité et que cela fonctionne sur tous les postes il vaut mieux respecter les règles du DOS

    en ajoutant l' * donc

    ce petit bout de macro liste tous les fichiers et il n'y a plus qu'à insérer l'ouverture la gestion et la fermeture dans la boucle

    enfin si c'est ce qu'il veut

    houhou flag007 tu nous dis si cela te va ou pas
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  9. #9
    Responsable
    Office & Excel


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    C'est étonnant car je doute que la fonction DIR ait été modifiée entre ta 2010 et ma 2016...

    Nom : 2018-05-15_152506.png
Affichages : 1976
Taille : 6,0 Ko

    Nom : 2018-05-15_152521.png
Affichages : 1956
Taille : 11,4 Ko
    "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...
    ---------------

  10. #10
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    La fonction Dir() s'appuie sans doute sur l'OS et Windows est plus ou moins "permissif" dans sa fonction recherche en fonction des versions.
    Avez-vous les mêmes OS ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  11. #11
    Responsable
    Office & Excel


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Moi: win 8.1. J'ai testé également en commande dos et le résultat est identique.

    Sur ce lien (16/10/2017), MS précise pourtant ceci:
    dir *.txt lists all files in the current directory with extensions that begin with .txt, such as .txt, .txt1, .txt_old.
    qui donnerait raison à igloobel.

    Dès lors, je confirme mon choix de la prudence avec *.xls*...
    "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...
    ---------------

  12. #12
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    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 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Je me ralie aussi à la même prudence

    je suis sous Windows 7 et Excel 2010

    et voici quand je vais sur commande : (c'est pas une image truquée)

    Nom : Capture_dir.PNG
Affichages : 1952
Taille : 86,7 Ko
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  13. #13
    Responsable
    Office & Excel


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par Igloobel Voir le message
    J[...](c'est pas une image truquée)[...]
    J'me doute

    Ca corrobore ce que j'ai lu sur le sujet et qui correspond à ton résultat et pas au mien... Mystère et boule de gomme, comme on dit
    "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...
    ---------------

Discussions similaires

  1. [XL-2016] Executer une macro sur plusieurs fichiers excel
    Par nabjaf dans le forum Excel
    Réponses: 2
    Dernier message: 21/01/2018, 10h44
  2. Réponses: 6
    Dernier message: 02/08/2017, 16h55
  3. Macro qui permet d'appliquer une macro sur un fichier excel
    Par zak-mouk dans le forum Général VBA
    Réponses: 2
    Dernier message: 23/06/2015, 17h15
  4. Réponses: 1
    Dernier message: 11/02/2011, 14h14
  5. Creer un macro qui verifie une info sur plusieur fichier excel
    Par Esmax666 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/07/2009, 16h42

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