Boucle VBA
Fermé
Axll6
-
Modifié le 29 juil. 2020 à 13:37
yg_be Messages postés 23535 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2025 - 12 août 2020 à 12:20
yg_be Messages postés 23535 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2025 - 12 août 2020 à 12:20
4 réponses
f894009
Messages postés
17268
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
29 mars 2025
1 713
29 juil. 2020 à 11:11
29 juil. 2020 à 11:11
Bonjour,
La feuille "Analyse" se trouve dans quel fichier?
La feuille "Analyse" se trouve dans quel fichier?
Dans mon bureau, j'ai un dossier "Documents de travail", et dans ce dossier il y a 5 fichiers excel :
2017_maquette_DT_macro(27).xlsx
2017_maquette_DF_macro(27).xlsx
2017_maquette_DSI_macro(27).xlsx
2017_maquette_DG_macro(27).xlsx
2017_maquette_DRH_macro(27).xlsx
et chaque fichier se constitue de la même façon avec les onglets "présentation, Modèle, Analyse, Table de correspondance", et 3 autres.
(J'ai nommé les fichiers mais je souhaite ne pas les nommer dans mon code car je vais rajouter davantage de fichiers une fois que le code marchera)
2017_maquette_DT_macro(27).xlsx
2017_maquette_DF_macro(27).xlsx
2017_maquette_DSI_macro(27).xlsx
2017_maquette_DG_macro(27).xlsx
2017_maquette_DRH_macro(27).xlsx
et chaque fichier se constitue de la même façon avec les onglets "présentation, Modèle, Analyse, Table de correspondance", et 3 autres.
(J'ai nommé les fichiers mais je souhaite ne pas les nommer dans mon code car je vais rajouter davantage de fichiers une fois que le code marchera)
f894009
Messages postés
17268
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
29 mars 2025
1 713
29 juil. 2020 à 11:26
29 juil. 2020 à 11:26
Re,
je souhaite ne pas les nommer dans mon code
Oui, ca va marcher comment?
Ca pas marche, vu qu'il n'y a pas de nom de fichier
et en plus vous changez de repertoire dans la boucle (le meme ??)!!
je souhaite ne pas les nommer dans mon code
Oui, ca va marcher comment?
Ca pas marche, vu qu'il n'y a pas de nom de fichier
Chemin = "C:\Users\6881EW\Desktop\Documents de travail\"
et en plus vous changez de repertoire dans la boucle (le meme ??)!!
ChDir "C:\Users\6881EW\Desktop\Envoi"
Je change de répertoire car j'aimerais prendre les fichiers qui se trouvent dans le dossier Documents de travail, et une fois que les étapes sont faites sur les onglets de chaque fichier, envoyer ces fichiers vers le Dossier "Envoi" (et renommer les fichiers en rajoutant envoi à leur nom d'origine)
Pour le problème du chemin sans nom de fichier ca ne peut pas fonctionner?
Pour le problème du chemin sans nom de fichier ca ne peut pas fonctionner?
f894009
Messages postés
17268
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
29 mars 2025
1 713
29 juil. 2020 à 13:09
29 juil. 2020 à 13:09
Re,
ca ne peut pas fonctionner?
Ben comment voulez ouvrir kake chose qui n'a pas de nom?
ca ne peut pas fonctionner?
Ben comment voulez ouvrir kake chose qui n'a pas de nom?
Je voudrais une boucle qui effectue les tâches pour chaque fichier se trouvant dans le dossier en question, je crois que c'est possible sans avoir à nommer chaque fichier
yg_be
Messages postés
23535
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 avril 2025
1 579
Modifié le 29 juil. 2020 à 15:52
Modifié le 29 juil. 2020 à 15:52
bonjour, c'est tout à fait possible, mais pas comme tu le fais.
de plus, tu mélanges les concepts de dossier, de classeur (workbook) et de feuille (worksheet).
exemple, qui sauve les fichiers où ils étaient au départ:
de plus, tu mélanges les concepts de dossier, de classeur (workbook) et de feuille (worksheet).
exemple, qui sauve les fichiers où ils étaient au départ:
Private Sub fic() Dim fso As Scripting.FileSystemObject Dim dossier As Scripting.Folder Dim fichier As Scripting.File Dim wb As Workbook Dim chemin As String chemin = ThisWorkbook.Path 'à adapter Set fso = New Scripting.FileSystemObject Set dossier = fso.GetFolder(chemin) For Each fichier In dossier.Files Set wb = Workbooks.Open(fichier.Path) wb.Sheets("Analyse").Range("A1:AK85").Select '... wb.Save wb.Close Next fichier End Sub
Axll6
>
yg_be
Messages postés
23535
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 avril 2025
29 juil. 2020 à 15:30
29 juil. 2020 à 15:30
Comment faut-il faire ?
yg_be
Messages postés
23535
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 avril 2025
1 579
>
yg_be
Messages postés
23535
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 avril 2025
29 juil. 2020 à 15:52
29 juil. 2020 à 15:52
et ainsi, en les sauvant ailleurs:
Private Sub fic() Dim fso As Scripting.FileSystemObject Dim dossier As Scripting.Folder Dim fichier As Scripting.File Dim wb As Workbook Dim cheminsource As String, chemindest As String cheminsource = ThisWorkbook.Path 'à adapter chemindest = cheminsource + "\test" 'à adapter Set fso = New Scripting.FileSystemObject Set dossier = fso.GetFolder(cheminsource) For Each fichier In dossier.Files Set wb = Workbooks.Open(fichier.Path) wb.Sheets("Analyse").Range("A1:AK85").Select '... wb.SaveAs (chemindest + "\" + fichier.Name) wb.Close Next fichier End Sub
yg_be
Messages postés
23535
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 avril 2025
1 579
>
yg_be
Messages postés
23535
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 avril 2025
29 juil. 2020 à 16:03
29 juil. 2020 à 16:03
si tu veux supprimer les fichiers d'origine, tu peux ajouter
fichier.Deleteaprès
wb.close
Axll6
>
yg_be
Messages postés
23535
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 avril 2025
29 juil. 2020 à 17:18
29 juil. 2020 à 17:18
Merci beaucoup,
j'ai essayé en modifiant les lignes 7,8 et en ajoutant la suite du code dans le FOr Each Next mais est xe qu'il faut rajouter "wb." devant chaque ligne?
j'ai fait :
Le message d'erreur est : Erreur de compilation, type défini par l'utilisateur non défini qui fait référence à la ligne "Dim fso As Scripting.FileSystemObject"
Que faut il changer?
j'ai essayé en modifiant les lignes 7,8 et en ajoutant la suite du code dans le FOr Each Next mais est xe qu'il faut rajouter "wb." devant chaque ligne?
j'ai fait :
Private Sub fic()
Dim fso As Scripting.FileSystemObject
Dim dossier As Scripting.Folder
Dim fichier As Scripting.File
Dim wb As Workbook
Dim cheminsource As String, chemindest As String
cheminsource = "C:\Users\6881EW\Desktop\Documents de travail\"
chemindest = "C:\Users\6881EW\Desktop\Envoi\"
Set fso = New Scripting.FileSystemObject
Set dossier = fso.GetFolder(cheminsource)
For Each fichier In dossier.Files
Set wb = Workbooks.Open(fichier.Path)
wb.Sheets("Analyse").Range("A1:AK85").Select
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
wb.SaveAs (chemindest + "\" + fichier.Name)
wb.Close
Next fichier
End Sub
Le message d'erreur est : Erreur de compilation, type défini par l'utilisateur non défini qui fait référence à la ligne "Dim fso As Scripting.FileSystemObject"
Que faut il changer?