Appliquer une macro à d'autres fichiers
Bonjour,
Merci de prendre quelques instants pour me renseigner.
Je souhaite intégrer un code VBA dans le fichier "Applicationdate.xlsm". Je l'exécuterai en ouvrant ce fichier où j'incorporerai un bouton pour plus de simplicité.
Le but de ce code est de :
- Ouvrir tous les fichiers de ce dossier finissant par .csv
- Exécuter dans chacun de ces fichiers un code VBA que j'ai et qui fonctionne (testé et approuvé) :
Cells.Replace What:=",1/", Replacement:=",01/" 'Remplacement jour 1 par jour 01
Cells.Replace What:=",2/", Replacement:=",02/" 'Remplacement jour 2 par jour 02
Cells.Replace What:=",3/", Replacement:=",03/" 'Remplacement jour 3 par jour 03
Cells.Replace What:=",4/", Replacement:=",04/" 'Remplacement jour 4 par jour 04
Cells.Replace What:=",5/", Replacement:=",05/" 'Remplacement jour 5 par jour 05
Cells.Replace What:=",6/", Replacement:=",06/" 'Remplacement jour 6 par jour 06
Cells.Replace What:=",7/", Replacement:=",07/" 'Remplacement jour 7 par jour 07
Cells.Replace What:=",8/", Replacement:=",08/" 'Remplacement jour 8 par jour 08
Cells.Replace What:=",9/", Replacement:=",09/" 'Remplacement jour 9 par jour 09
Cells.Replace What:="/1/", Replacement:="/01/" 'Remplacement mois 1 par mois 01
Cells.Replace What:="/2/", Replacement:="/02/" 'Remplacement mois 2 par mois 02
Cells.Replace What:="/3/", Replacement:="/03/" 'Remplacement mois 3 par mois 03
Cells.Replace What:="/4/", Replacement:="/04/" 'Remplacement mois 4 par mois 04
Cells.Replace What:="/5/", Replacement:="/05/" 'Remplacement mois 5 par mois 05
Cells.Replace What:="/6/", Replacement:="/06/" 'Remplacement mois 6 par mois 06
Cells.Replace What:="/7/", Replacement:="/07/" 'Remplacement mois 7 par mois 07
Cells.Replace What:="/8/", Replacement:="/08/" 'Remplacement mois 8 par mois 08
Cells.Replace What:="/9/", Replacement:="/09/" 'Remplacement mois 9 par mois 09- Enregistrer tous les fichiers ouverts dans ce dossier :
- Supprimer au fur et à mesure les fichiers traités de telle sorte à ce que le résultat final soit le suivant :
Après plusieurs tentatives, je n'arrive à aucun résultat concluant. J'ai essayé d'appliquer ce code :
Sub MAJ()
Dim wb As Workbook
Dim Fichier As String
Dim Chemin As String
Chemin = "C:\Users\xxxxxx\Downloads\TEST\"
Fichier = Dir(Chemin & "*.csv")
wb.Save
wb.Close
Set wb = Nothing
End SubOu encore ce code :
Sub BoucleFichiers()
Dim Chemin As String
Dim Fichier As String
Dim Onglet
Chemin = "C:\Users\jeff.vialelles\Downloads\TEST\" 'Traite tous les fichiers de ce dossier
Fichier = Dir(Chemin & "*.csv") 'Traite tous les fichiers du dossier qui contiennent ".csv dans leur nom
Set CD = ThisWorkbook
Do While Len(Fichier) > 0
Loop
End SubActuellement je suis sans solution...
Bonjour il n'y a aucune ligne qui indique que vous ouvrez l'un des fichiers.
Sub ouvrirfichiers()
Dim Fichier As String, Chemin As String
Dim Wb As Workbook
Chemin = "C:\Users\xxxxx\Downloads\TEST\"
Fichier = Dir(Chemin & "*.csv")
Do While Fichier <> ""
Set Wb = Workbooks.Open(Chemin & Fichier)
'
'Ajoutez ici vos actions VBA à réaliser
Wb.save
Wb.close
Set Wb = Nothing
Fichier = Dir
Loop
End SubBonjour,
Merci beaucoup pour l'avancé, je viens de pousser un peu le code vers ce que je recherche mais il me reste deux points à régler et je n'y arrive pas.
1 - Lorsqu'il existe dans le dossier destination un fichier avec le même nom, j'ai ce message d'erreur. J'aimerais que ça remplace le fichier déjà existant.
2 - Lorsque le fichier est enregistré, j'ai l'impression que les modifications demandées ne sont pas prises en compte et cela est, je pense, dû à l'enregistrement du fichier. Quand je teste mon code seul dans un nouveau fichier, j'arrive bien au résultat demandé.
Voici le fichier que j'obtiens à la fin :
Or j'aimerais arriver à ce résultat là :
Quel est le soucis sur mon code ? Le format d'enregistrement ? Le format d'ouverture ?
Merci d'avance pour votre aide !
Vous devriez reposter l'intégralité du code vba que vous utilisez ; que l'on puisse voir ligne par ligne.
Bonjour,
Merci d'avance pour votre aide.
Dim Fichier As String 'Déclaration variable Fichier
Dim CheminSource As String 'Déclaration variable CheminSource
Dim CheminDestination As String 'Déclaration variable CheminDestination
Dim Wb As Workbook
CheminSource = "C:\Users\jeff.vialelles\Downloads\TEST\" 'Déclaration du CheminSource
CheminDestination = "C:\Users\jeff.vialelles\Downloads\TEST COPIE\" 'Déclaration du CheminDestination
Fichier = Dir(CheminSource & "*.csv") 'Traite les fichiers qui se trouvent dans CheminSource avec .csv en extension
Do While Fichier <> ""
Set Wb = Workbooks.Open(CheminSource & Fichier) 'Ouvre les fichiers qui correspondent au critère .csv et dans le DossierSource
Cells.Replace What:=",1/", Replacement:=",01/" 'Remplacement jour 1 par jour 01
Cells.Replace What:=",2/", Replacement:=",02/" 'Remplacement jour 2 par jour 02
Cells.Replace What:=",3/", Replacement:=",03/" 'Remplacement jour 3 par jour 03
Cells.Replace What:=",4/", Replacement:=",04/" 'Remplacement jour 4 par jour 04
Cells.Replace What:=",5/", Replacement:=",05/" 'Remplacement jour 5 par jour 05
Cells.Replace What:=",6/", Replacement:=",06/" 'Remplacement jour 6 par jour 06
Cells.Replace What:=",7/", Replacement:=",07/" 'Remplacement jour 7 par jour 07
Cells.Replace What:=",8/", Replacement:=",08/" 'Remplacement jour 8 par jour 08
Cells.Replace What:=",9/", Replacement:=",09/" 'Remplacement jour 9 par jour 09
Cells.Replace What:="/1/", Replacement:="/01/" 'Remplacement mois 1 par mois 01
Cells.Replace What:="/2/", Replacement:="/02/" 'Remplacement mois 2 par mois 02
Cells.Replace What:="/3/", Replacement:="/03/" 'Remplacement mois 3 par mois 03
Cells.Replace What:="/4/", Replacement:="/04/" 'Remplacement mois 4 par mois 04
Cells.Replace What:="/5/", Replacement:="/05/" 'Remplacement mois 5 par mois 05
Cells.Replace What:="/6/", Replacement:="/06/" 'Remplacement mois 6 par mois 06
Cells.Replace What:="/7/", Replacement:="/07/" 'Remplacement mois 7 par mois 07
Cells.Replace What:="/8/", Replacement:="/08/" 'Remplacement mois 8 par mois 08
Cells.Replace What:="/9/", Replacement:="/09/" 'Remplacement mois 9 par mois 09
Wb.SaveAs Filename:=CheminDestination & Fichier 'Sauvegarde le fichier dans le CheminDestination
MsgBox "L'enregistrement a été correctement effectué." 'Message qui nous confirme le bon enregistrement
Wb.Close 'Ferme le fichier
Kill CheminSource & Fichier 'Supprime le fichier dans le CheminSource
MsgBox "Le fichier source a été supprimé." 'Message qui nous confirme la suppression du fichier source
Set Wb = Nothing
Fichier = Dir
Loop
End SubRebonjour, pour ne pas voir la question sur l'enregistrement il faudrait désactiver l'alerte excel en début de macro et la réactiver en fin de macro.
'A mettre au début
Application.DisplayAlerts = False
.......
'A mettre juste avant la fin
Application.DisplayAlerts = TrueParfait !
Merci pour votre aide, le fichier fonctionne à merveille !
J'ai un autre fichier où j'ai un bug que je n'arrive pas à résoudre, si vous pouviez m'aider, ce serait très gentil.
PS : Je pense avoir mis le sujet en résolu, pouvez vous me confirmer ?!
Bonjour,
Après test en grandeur nature, il semblerait que le code ne fonctionne pas.
J'ai l'impression que cela est dû au format d'enregistrement du fichier.
Une fois le fichier enregistré sous dans le dossier de destination, lorsque je l'ouvre, les modifications ne semblent pas s'être appliquées.
Que puis je vous donner comme détail pour vous montrer le problème ?
Bonjour il faudrait essayer de lancer la macro en mode "pas à pas". jusqu'au moment de l'ouverture d'un des csv.
Un csv ouvert par le bloc note laisse apparaître les " ; "
Un csv ouvert par excel prend directement un format tableau avec les données dans chaque colonnes sans les virgules.
Bonjour,
Après essai, le fichier est ouvert par excel, du coup chaque virgule engendre un changement de cellule pour les valeurs :
Le problème semble donc que le remplacement de valeurs ne soit pas actif sur toutes les cellules du fichier...
Que puis je faire pour résoudre ce problème ?
Merci pour votre aide.