Macro pour marquer un fichier comme étant traité
Bonjour,
J'aimerais réaliser une macro qui lorsque le fichier a été modifié, modifie le nom en le marquant comme étant traité
je pensais que 2 lignes suffiraient mais à priori non.
Quelqu'un a une idée ?
If ActiveWorkbook.Saved = False Then
ActiveWorkbook.Name = ActiveWorkbook.Name & "traité"
End if
Bonjour,
Admettons que vous fassiez un traitement de fichiers en boucle :
Option Explicit
Sub TestFichierTraite()
Dim I As Integer
Dim CheminFichier As String
Dim Wb As Workbook
Dim Matrice() As Variant
' Chargement matrice
'....
For I = 1 To N
' Ouverture fichier
Set Wb = Workbooks.Open(Filename:=Matrice(I))
With Wb
' Traitement
' .....
' Fermeture
CheminFichier = .FullName
.Close Savechanges:=True
End With
Set Wb = Nothing
FichierTraite CheminFichier
Next I
End Sub
Sub FichierTraite(ByVal AncienNom As String)
Dim Fso As Object
Dim ExtensionFichier As String, NouveauNom As String
Set Fso = CreateObject("Scripting.FileSystemObject")
With Fso
If .FileExists(AncienNom) = True Then
ExtensionFichier = .GetExtensionName(AncienNom)
NouveauNom = Mid(AncienNom, 1, Len(AncienNom) - (Len(ExtensionFichier)) - 1) & " traité." & ExtensionFichier
.MoveFile AncienNom, NouveauNom
End If
End With
Set Fso = Nothing
End SubHello Eric ! Dis-moi j'ai une question,
voici le programme fait :
Sub AnalyseClasseurs()
Dim Wb As Workbook ' représente un classeur
Dim Ws As Worksheet ' représente une feuille de calcul
Dim NbClasseurs As Integer ' Nombre de classeurs traités
Dim C As Integer ' Permet de parcourir les colonnes
Dim ColDate As Integer ' Colonne courante pour l'onglet DATE
Dim ColNom As Integer ' Colonne courante pour l'onglet NOM
Dim fs As Object
Dim f As Object
Dim DateCreation As Date, DateModification As Date, DateAcces As Date, DateReference As Date
NbClasseurs = 0
DateReference = DateValue("19/04/2018") '<- date de référence
' On efface le contenu des onglets "DATE" et "NOM"
Sheets("DATE").Cells.ClearContents
Sheets("NOM").Cells.ClearContents
ColDate = 1 ' On démarre le remplissage à la colonne 1 pour l'onglet DATE
ColNom = 1 ' On démarre le remplissage à la colonne 1 pour l'onglet NOM
Set fs = CreateObject("Scripting.FileSystemObject")
For Each Wb In Application.Workbooks ' Boucle sur chaque classeur ouvert
If Wb.Name <> ThisWorkbook.Name Then ' Si c'est pas CE classeur
Set f = fs.GetFile(Wb.FullName)
DateCreation = f.datecreated
DateModification = f.datelastmodified
DateAcces = f.datelastaccessed
If DateCreation < DateReference Then
NbClasseurs = NbClasseurs + 1
For Each Ws In Wb.Worksheets ' Boucle sur chaque feuille de chaque classeur
C = 1
Do While Ws.Cells(1, C) <> "" ' On passe les colonnes occupées en revue
If Ws.Cells(1, C) = "DATE" Then
' On copie la colonne
Ws.Columns(C).Copy (ThisWorkbook.Sheets("DATE").Columns(ColDate))
ColDate = ColDate + 1 ' On avance d'une colonne
ElseIf Ws.Cells(1, C) = "NOM" Then
' On copie la colonne
Ws.Columns(C).Copy (ThisWorkbook.Sheets("NOM").Columns(ColNom))
ColNom = ColNom + 1 ' On avance d'une colonne
End If
C = C + 1
Loop
Next Ws
End If
End If
Next Wb
If NbClasseurs = 0 Then MsgBox ("ERREUR: Aucun classeur ouvert disponible")
End Sub
Ce programme devrait traité les fichiers ouverts et si ils ont été modifié selon une date spécifique alors ils seront traités ou non, or mon programme ne marche pas...Ile me met une erreur de code 9, tu saurais d'où cela pourrait venir?
Bien cordialement