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 :

Répeter la même macro pour d'autres fichiers excel


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 25
    Points : 9
    Points
    9
    Par défaut Répeter la même macro pour d'autres fichiers excel
    Bonjour,
    J'ai fait une macro qui fonctionne pour un fichier(2017_maquette_DRH_macro(27).xlsx), et j'aimerais qu'il fasse la même chose pour 4 autres fichiers (2017_maquette_DT_macro(27).xlsx. / 2017_maquette_DF_macro(27).xlsx / ... ) qui se trouvent également dans le dossier document de travail. J'ai vu qu'il y a des fonctions boucle mais je n'arrive pas trop à les utiliser.

    Ma macro:

    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
    Sub Ouvre()
    Dim wb As Workbook
    Dim ws As Worksheet
     
    Set wb = Workbooks.Open("C:\Users\6881EW\Desktop\Documents de travail\2017_maquette_DRH_macro(27).xlsx")
    Sheets("Bac à sable en ligne").Select
    ChDir "C:\Users\6881EW\Desktop\Envoi"
       ActiveWorkbook.SaveAs Filename:="2017_maquette_DRH_macro(27)_envoi.xlsx"
    Sheets("Analyse").Select
        Range("A1:AK85").Select
        Selection.Copy
     
        Sheets("Analyse").Select
        Range("A1:AK85").Select
        Selection.PasteSpecial Paste:=xlPasteValues
     
        Sheets("Bac à sable en ligne").Select
        Range("A1:U100").Select
        Selection.Copy
     
        Sheets("Bac à sable en ligne").Select
        Range("A1:U100").Select
        Selection.PasteSpecial Paste:=xlPasteValues
     
     
        Application.DisplayAlerts = False
        Sheets("Modèle").Delete
        Sheets("ETP 2018").Delete
        Sheets("ETP 2019").Delete
        Sheets("Table de correspondance").Delete
        Application.DisplayAlerts = True
     
        Sheets("Analyse").Activate
    ActiveWorkbook.Save
     
    Workbooks("2017_maquette_DRH_macro(27)_envoi.xlsx").Close SaveChanges:=True
     
    End Sub

  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
    Une solution simple, sans boucle.
    J'ai aussi un peu arrangé ton code.

    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
    Sub Ouvres()
        Call Ouvre("DRH")
        Call Ouvre("DT")
        Call Ouvre("DF")
    End Sub
     
    Sub Ouvre(Dep As String)
       Dim WBSource As Workbook
     
       Set WBSource = Workbooks.Open("C:\Users\6881EW\Desktop\Documents de travail\2017_maquette_" & Dep & "DRH_macro(27).xlsx")
       WSSource.SaveAs Filename:="C:\Users\6881EW\Desktop\Envoi\" & WSSource.Name
     
       Sheets("Analyse").Range("A1:AK85").Copy
       Sheets("Analyse").Range("A1:AK85").PasteSpecial Paste:=xlPasteValues
     
       Sheets("Bac à sable en ligne").Range("A1:U100").Copy
       Sheets("Bac à sable en ligne").Range("A1:U100").PasteSpecial Paste:=xlPasteValues
     
       Application.DisplayAlerts = False
       Sheets("Modèle").Delete
       Sheets("ETP 2018").Delete
       Sheets("ETP 2019").Delete
       Sheets("Table de correspondance").Delete
       Application.DisplayAlerts = True
     
       Sheets("Analyse").Activate
       WBSource.Close SaveChanges:=True
    End Sub
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    Merci pour votre réponse.
    J'ai essayé mais ca ne fonctionne pas aux lignes 10/11. Le chemin du workbook est C:\Users\6881EW\Desktop\Documents de travail ; je pense qu'il faut enlever "\2017_maquette" et peut être le rajouter dans les "" après dep ?
    Aussi, est ce qu'il faut rajouter les lignes 10/11 avec autant de fichiers que j'ai à traiter?

  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 axlle6 Voir le message
    J'ai essayé mais ca ne fonctionne pas aux lignes 10/11. Le chemin du workbook est C:\Users\6881EW\Desktop\Documents de travail ; je pense qu'il faut enlever "\2017_maquette" et peut être le rajouter dans les "" après dep ?
    Déjà, "ca ne fonctionne pas" sans explication, ça ne n'aide pas à comprendre la nature du problème.

    Ensuite, je ne comprends pas pourquoi tu poses cette question sur le forum puisqu'il suffirait de faire le test sur ton poste pour avoir la réponse.

    Enfin, il est impossible de dire si les chemins et non de fichiers correspondent à ceux de ton poste.
    La seule chose que je peux te dire, c'est que ça correspond au code que tu as présenté.

    Est-ce que, au moins, tu as compris que tu devais lancer la macro "Ouvres" et non pas "Ouvre".

    Aussi, est ce qu'il faut rajouter les lignes 10/11 avec autant de fichiers que j'ai à traiter?
    Non puisque c'est la première macro qui enchaine le processus pour chacun des fichiers.
    Encore faut-il lancer la bonne macro.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    il y a un message d'erreur "objet requis" qui fait référence à la ligne 11
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      WSSource.SaveAs Filename:="C:\Users\6881EW\Desktop\Envoi\" & WSSource.Name

  6. #6
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,

    Menhir n'est pas connecté ....

    Remplaces WSSource par WBSource (2 fois sur la ligne)
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup cela fonctionne!

    Quelle fonction faudrait il utiliser si je veux avoir le même résultat mais en utilisant une boucle?
    par exemple, qui ouvre tous les fichiers "2017_maquette_DT_macro(27).xlsx", "2017_maquette_DF_macro(27).xlsx",..., de mon dossier "Documents de travail" et qui suit les instructions que l'on a dans notre macro actuelle?

  8. #8
    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 axlle6 Voir le message
    Quelle fonction faudrait il utiliser si je veux avoir le même résultat mais en utilisant une boucle?
    par exemple, qui ouvre tous les fichiers "2017_maquette_DT_macro(27).xlsx", "2017_maquette_DF_macro(27).xlsx",..., de mon dossier "Documents de travail" et qui suit les instructions que l'on a dans notre macro actuelle?
    Il faudrait utiliser une boucle While avec la fonction Dir().
    Lire ça :
    https://docs.microsoft.com/fr-fr/off...p/dir-function
    https://docs.microsoft.com/fr-fr/off...wend-statement

    Un exemple d'utilisation : https://excel.developpez.com/faq/?pa...BoucleFichiers
    Cet exemple utilise une boucle Do While...Loop mais pour ce cas, ça donne la même chose avec une boucle While...WEnd.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    J'ai essayé de faire un code en m'inspirant du post https://excel.developpez.com/faq/?pa...BoucleFichiers et qui donne :

    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
    Sub BoucleFichiers()
        Dim Chemin As String, Fichier As String
     
     
        Chemin = "C:\Users\6881EW\Desktop\Documents de travail"
     
        Fichier = Dir(Chemin & "2017_maquette_DT_macro(27).xls")
        Fichier = Dir(Chemin & "2017_maquette_DSI_macro(27).xls")
        Fichier = Dir(Chemin & "2017_maquette_DRH_macro(27).xls")
        Fichier = Dir(Chemin & "2017_maquette_DG_macro(27).xls")
        Fichier = Dir(Chemin & "2017_maquette_DF_macro(27).xls")
     
        While Len(Fichier) < 6
     
         Dim WBSource As Workbook
     
       Sheets("Analyse").Range("A1:AK85").Copy
       Sheets("Analyse").Range("A1:AK85").PasteSpecial Paste:=xlPasteValues
     
       Sheets("Bac à sable en ligne").Range("A1:U100").Copy
       Sheets("Bac à sable en ligne").Range("A1:U100").PasteSpecial Paste:=xlPasteValues
     
       Application.DisplayAlerts = False
       Sheets("Modèle").Delete
       Sheets("ETP 2018").Delete
       Sheets("ETP 2019").Delete
       Sheets("Table de correspondance").Delete
       Application.DisplayAlerts = True
     
       Sheets("Analyse").Activate
       WBSource.Close SaveChanges:=True
     
        Wend
    End Sub
    J'ai plusieurs questions:
    - le message d'erreur renvoie : L'indice n'appartient pas à la sélection, par rapport à cette ligne (et les suivantes car j'ai essayé en supprimant cette ligne) "Sheets("Analyse").Range("A1:AK85").Copy"
    - J'ai rajouté le Dim WSBsource comme dans le code précédent mais je ne suis pas sûre qu'il soit obligatoire; mais si je l'enlève je ne sais pas quoi mettre à côté du Close Save Changes=True avant le Wend pour sauvegarder.

  10. #10
    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 926
    Points
    55 926
    Billets dans le blog
    131
    Par défaut
    Salut.

    Tu dois inclure la recherche du fichier dans la boucle, car avec le code que tu donnes, Fichier contiendra uniquement le dernier nom. De plus, si tu connais les noms des fichiers, tu n'as pas besoin du dir, le dir servant justement à retrouver les noms durant la boucle. Dans une boucle, le dir s'utilisera avec les jokers (* ou ?).

    Si tu connais les noms de fichiers et que tu veux les utiliser au sein d'une boucle, tu pourrais utiliser un tableau. A ce stade, je ne comprends pas bien pourquoi tu veux utiliser une boucle.
    "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...
    ---------------

  11. #11
    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
    Il y a plusieurs aberrations dans ton code.

    Déjà, à la base, je ne comprends pas pourquoi tu veux faire une boucle si c'est pour indiquer chaque nom de fichier.
    Si tu veux faire ça, autant en revenir à la solution que je proposais au départ.
    Le seul intérêt de la boucle est d'aller chercher elle-même les noms de fichiers.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Fichier = Dir(Chemin & "2017_maquette_DT_macro(27).xls")
    Cette ligne a pour unique intérêt de vérifier si le fichier "2017_maquette_DT_macro(27).xls" existe.
    Si on sait déjà qu'il existe et qu'on souhaite mettre son nom et son chemin dans une variable, il suffit d'écrire :
    Fichier = Chemin & "2017_maquette_DT_macro(27).xls"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Fichier = Dir(Chemin & "2017_maquette_DT_macro(27).xls")
        Fichier = Dir(Chemin & "2017_maquette_DSI_macro(27).xls")
        Fichier = Dir(Chemin & "2017_maquette_DRH_macro(27).xls")
        Fichier = Dir(Chemin & "2017_maquette_DG_macro(27).xls")
        Fichier = Dir(Chemin & "2017_maquette_DF_macro(27).xls")
    L'action de la ligne 1 de ce code sera effacée par l'action de la ligne 2 qui sera elle-même effacée par l'action de la ligne 3, etc.

    Si tu mets une valeur dans une variable puis que, dans cette même variable, tu mets une autre valeur sans avoir utilisé la première, alors la première assignation sera complètement inutile puisqu'elle n'aura jamais été traitée avant d'être effacée par la seconde.

    La fonction Len() ne donne pas le nombre d'éléments contenu dans une variable (d'autant plus qu'un simple variable ne peut contenir qu'un élément) mais le nombre de caractère contenu dans la variable.

    Dans l'exemple, cette fonction permet de déterminer à quel moment tous les fichiers du répertoire ont été scrutés.
    Quand il n'y a plus de fichiers à scruter, la fonction Dir() sans paramètre renvoie une chaine vide (Len = 0) et donc de mettre fin au traitement en sortant de la boucle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       While Len(Fichier) < 6
          Dim WBSource As Workbook
    On ne met JAMAIS une déclaration de variable à l'intérieur d'une boucle.
    Une déclaration ne doit se faire qu'une seule fois pour une variable.

    On pourrait ajouter à ça que ton processus n'ouvre pas les fichiers : tu as oublié le Workbooks.Open.

    Corrige déjà ça, on verra le reste après.

    Citation Envoyé par Pierre Fauconnier Voir le message
    A ce stade, je ne comprends pas bien pourquoi tu veux utiliser une boucle.
    Je me suis aussi interrogé sur l'insistance à aller dans ce sens.
    L'hypothèse qui me semble la plus crédible est qu'il s'agit d'un exercice scolaire avec élément boucle imposé.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  12. #12
    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 926
    Points
    55 926
    Billets dans le blog
    131
    Par défaut
    Tu pourrais t'inspirer de ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Test()
      Dim Filename As String
      Dim Path As String
     
      Path = "C:\Users\6881EW\Desktop\Documents de travail\" ' Ne pas oublier le \ à la fin
      Filename = Dir(Path & "2017_maquette_*_macro(27).xls")
      Do While Filename <> ""
        Workbooks.Open (Path & Filename)
        ...
        ...
        Filename = Dir()
      Loop
    End Sub
    "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...
    ---------------

  13. #13
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    A ce stade, je ne comprends pas bien pourquoi tu veux utiliser une boucle.
    Citation Envoyé par Menhir Voir le message
    Je me suis aussi interrogé sur l'insistance à aller dans ce sens.
    L'hypothèse qui me semble la plus crédible est qu'il s'agit d'un exercice scolaire avec élément boucle imposé.
    Je souhaiterais faire une boucle pour ne pas avoir à lister les fichiers mais je pensais qu'il fallait le faire par rapport au code que vous m'aviez envoyé (ce n'est pas un exercice scolaire)

  14. #14
    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 axlle6 Voir le message
    Je souhaiterais faire une boucle pour ne pas avoir à lister les fichiers
    Dans ce cas, pourquoi avoir listé les fichiers dans la code de ton message #9 ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  15. #15
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    Tu pourrais t'inspirer de ceci:
    ce qui donnerait :

    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
    Sub Test()
      Dim Filename As String
      Dim Path As String
     
     
      Path = "C:\Users\6881EW\Desktop\Documents de travail\"
      Filename = Dir(Path & "2017_maquette_*_macro(27).xls")
     
      Do While Filename <> ""
        Workbooks.Open (Path & Filename)
     
    Sheets("Bac à sable en ligne").Select
    ChDir "C:\Users\6881EW\Desktop\Envoi"
       ActiveWorkbook.SaveAs Filename:="2017_maquette_DRH_macro(27)_envoi.xlsx"
    Sheets("Analyse").Select
        Range("A1:AK85").Select
        Selection.Copy
     
        Sheets("Analyse").Select
        Range("A1:AK85").Select
        Selection.PasteSpecial Paste:=xlPasteValues
     
        Sheets("Bac à sable en ligne").Select
        Range("A1:U100").Select
        Selection.Copy
     
        Sheets("Bac à sable en ligne").Select
        Range("A1:U100").Select
        Selection.PasteSpecial Paste:=xlPasteValues
     
     
        Application.DisplayAlerts = False
        Sheets("Modèle").Delete
        Sheets("ETP 2018").Delete
        Sheets("ETP 2019").Delete
        Sheets("Table de correspondance").Delete
        Application.DisplayAlerts = True
     
     
        Sheets("Analyse").Activate
     
        ActiveWorkbook.Save
        Filename = Dir()
      Loop
    End Sub
    Désolé s'il y a des aberrations dans mon code, j'essaye d'apprendre
    Cependant quand je veux exécuter le code il n'y a rien qui se lance

  16. #16
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Dans ce cas, pourquoi avoir listé les fichiers dans la code de ton message #9 ?
    car par rapport au lien que vous m'aviez envoyé () j'avais compris qu'il fallait les lister, maintenant j'ai compris que ce n'est pas la peine

  17. #17
    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 926
    Points
    55 926
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par axlle6 Voir le message
    [...]

    Désolé s'il y a des aberrations dans mon code, j'essaye d'apprendre
    Cependant quand je veux exécuter le code il n'y a rien qui se lance
    Ca veut dire quoi "Rien qui se lance"? Le code que j'ai proposé recherche des fichiers dont le nom correspond à ceux que tu as donnés. Es-tu sûre de travailler avec des xls? Travailles-tu avec des xlsx? Si oui, tu dois adapter ma ligne de code.

    Cela dit, si tu dois tester les 4 fichiers dont tu connais les noms au départ, alors tu n'as pas besoin de boucle.

    A ce stade, je ne comprends plus trop ce que tu cherches à réaliser. Un conseil cependant: Découpe ton code en "petites procédures" plutôt que de tout mettre dans la même. Ca te permettra d'isoler les problématiques, de les tester indépendamment du reste, puis d'assembler le tout.
    "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...
    ---------------

  18. #18
    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 axlle6 Voir le message
    Cependant quand je veux exécuter le code il n'y a rien qui se lance
    Sans doute parce que le joker "*" ne peut pas se mettre à l'intérieur du nom de fichier. Il ne peut se mettre qu'à la fin.
    Par exemple "2017_maquette_*.xls".
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  19. #19
    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 926
    Points
    55 926
    Billets dans le blog
    131
    Par défaut
    Salut Menhir

    Citation Envoyé par Menhir Voir le message
    Sans doute parce que le joker "*" ne peut pas se mettre à l'intérieur du nom de fichier. Il ne peut se mettre qu'à la fin.
    Par exemple "2017_maquette_*.xls".
    Les jokers * et ? se mettent où l'on veut dans le pattern. D'ailleurs, dans l'exemple que tu donnes, il n'est pas "à la fin" car l'extension fait partie du nom ^^

    Nom : 2020-07-28_142425.png
Affichages : 126
Taille : 27,1 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...
    ---------------

  20. #20
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Cela dit, si tu dois tester les 4 fichiers dont tu connais les noms au départ, alors tu n'as pas besoin de boucle.
    Je connais le nom des fichiers mais je fais cette macro pour plus tard quand j'aurai davantage de fichiers dans le dossier, et je souhaiterais que la macro ouvre tous les fichiers (sans les énumérer un à un) de mon dossier "document de travail" et que cette macro fonctionne pour tous les fichiers du dossier.


    Cependant quand je veux exécuter le code il n'y a rien qui se lance
    quand je fais exécuter la macro, rien ne se passe(ni message d'erreur )

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 7
    Dernier message: 21/07/2020, 23h37
  2. [VBA EXCEL] Macro pour un autre fichier excel
    Par sidewolf dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/09/2015, 16h17
  3. [XL-2010] Macro pour Ouvrir un fichier Excel a partir d'un autre fichier Excel
    Par jérémyp8 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/06/2013, 13h27
  4. Réponses: 4
    Dernier message: 30/11/2007, 08h55
  5. Macro pour ouvrir un fichier excel avec des ','
    Par oliver75 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 30/05/2007, 18h08

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