Comparer des fichiers sur tous un trimestre
Bonjour,
Tous les trimestre nous devons comparer des fichiers excel. A savoir on prend le dernier du fichier du trimestre précédent, le 1er fichier du trimestre en cours et on les compare. Ensuite on ferme le fichier du trimestre précédent. On ouvre le 2ème fichier du trimestre en cours et on le compare au 1er fichier du trimestre en cours. On ferme le 1er fichier du trimestre en cous et on ouvre le 3ème fichier du trimestre en cours et on le compare au 2ème. Etc
Sachant qu'il y a un fichier par jour même pour les week-end et les jours féries.
Mon problème n'est pas la comparaison des fichier en vba mais plutôt de coder le processus d'ouverture et de fermeture des fichiers.
Grossièrement mon code est :
Ouverture fichier trimestre précédent
Ouverture 1er fichier du trimestre
For
On compare toutes les lignes
Conditions
On ajoute une date
Next
Le problème c'est que je fais la 1ère comparaison de fichiers mais je ne sais pas comment faire ensuite pour les autres.
Je ne sais pas si c'est clair.
Ci-joint un exemple de fichier.
Merci d'avance pour votre aide
Bonjour Marty15,
voici un exemple,
Sub Test()
Dim chemin As Style, fichier As String, i As Integer
Dim MyFiles() As String
'ouverture du dernier du fichier du trimestre précédent
Workbooks.Open "C:\zz1" & Application.PathSeparator & LeDernierFichier.xls 'à adapter "C:\zz1" et LeDernierFichier.xls
Set wk0 = ActiveWorkbook
chemin = "C:\zz2" & Application.PathSeparator 'modifier ("C:\zz2") pour le répertoire du trimestre actuel
fichier = Dir(chemin)
'récupérer les fichiers du trimestre dans la liste MyFiles
Do While fichier <> ""
ReDim Preserve MyFiles(i)
MyFiles(i) = fichier
i = i + 1
fichier = Dir()
Loop
'arriver à cette étape on ouvre le premier fichier de la liste MyFiles
Workbooks.Open chemin & MyFiles(0)
'faire le test entre le fichier wk0 et le premier fichier de la liste MyFiles ici
'exécuter votre macro de comparaison:
'test_compare(wk0, Workbooks(MyFiles(0)))
'puis fermeture du fichier du trimestre précédent
wk0.Close SaveChanges:=False 'adapter à True si besoin
Set wk0 = Nothing
'boucle sur tous les fichiers de MyFiles en commencant par le 2èm
For i = LBound(MyFiles) + 1 To UBound(MyFiles)
Workbooks.Open chemin & MyFiles(i) ' à la premiere boucle ouverture du 2èm fichier de la liste
'exécuter votre macro de comparaison:
'test_compare(Workbooks(MyFiles(i-1)), Workbooks(MyFiles(i)))
' fermeture du premier fichier de la liste MyFiles ... puis du second etc.
Workbooks(MyFiles(i - 1)).Close SaveChanges:=False 'adapter à True si besoin
Next
End Sub
Bonjour sabV,
Merci beaucoup pour cette réponse rapide. Je vais tester ça.
Bonjour,
Ca marche nickel
J'ai une dernière petite question avant de clôre le sujet :
Avec ce code j'ai une erreur 438 (Prorpiété ou méthode non grée par cet objet) sur la dernière ligne et j'avoue que je ne comprends pas (si vous pouviez m'aider ou s'il y a une doc). Merci d'avance (c'est toujours avec le même fichier que j'ai mis en pj dans le 1er post) :
Dim chemin As String
Dim fichier As String, j As Integer, i As Integer
Dim MyFiles() As String
Dim valeur As Range
fichier2 = Worksheets("Feuil1").Range("B3").Value 'Fichier du trimestre précédent
'ouverture du dernier du fichier du trimestre précédent
Workbooks.Open "D:\Test" & Application.PathSeparator & fichier2
Set wk0 = ActiveWorkbook
chemin = "D:\Test\Test2" & Application.PathSeparator 'Chemin du trimestre actuel
fichier = Dir(chemin)
'récupérer les fichiers du trimestre dans la liste MyFiles
Do While fichier <> ""
ReDim Preserve MyFiles(j)
MyFiles(j) = fichier
j = j + 1
fichier = Dir()
Loop
'arriver à cette étape on ouvre le premier fichier de la liste MyFiles
Workbooks.Open chemin & MyFiles(0)
'faire le test entre le fichier wk0 et le premier fichier de la liste MyFiles ici
'exécuter votre macro de comparaison
For i = 4 To 50
Set valeur = Windows(MyFiles(0)).Cells(i, 1).Value