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é.

image

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 :

image

- Supprimer au fur et à mesure les fichiers traités de telle sorte à ce que le résultat final soit le suivant :

image image

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 Sub

Ou 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 Sub

Actuellement 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 Sub

Bonjour,

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.

01

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 :

04

Or j'aimerais arriver à ce résultat là :

05

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 Sub

Rebonjour, 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 = True

Parfait !

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 :

capture

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.

Rechercher des sujets similaires à "appliquer macro fichiers"