Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
copier les Fichiers d'un répertoire par ordre alpha
je cherche comment copier un par un tous les fichiers d'un répertoire, mais selon l'ordre alpha de leur nom.
Je vous explique le comment du pourquoi de la chose.
En fait, il s'agit de fichiers Word, mais je crois que cela importe peu. Chaque fichier correspond à un thème (que je thème que je thème )...
je les prends un par un et je les copie les uns à la suite des autres,
(dans un même doc. word)
mais là où ça se corse, c'est que je dois faire un sommaire par ordre alpha des thèmes. Et comme je ne sais pas faire ça, je contourne le problème en les copiant dans le bon ordre (l'ordre alpha).
Comment peut-on faire ce tri au préalable?
J'imagine qu'il faut remplir une table avec le nom de tous les .doc du répertoire, mais le tri...
Re : copier les Fichiers d'un répertoire par ordre alpha
Bonsoir le forum
j'ai bien avancé sur le sujet,
il ne me reste plus qu'un léger détail :
je recherche dans chaque sous-répertoire (lundi, mardi... vendredi) tous les fichiers .doc et je les range dans une table,
ensuite, je trie la table selon l'ordre alpha des thèmes (affaires étrangères, immigration, social, culture, économie...) et la date de dernière modif puis j'ouvre les fichiers un à un pour les copier, dans l'ordre indiqué ci-dessus,
mais j'ai un problème avec mon tri car mes fichiers restent triés par thème à l'intérieur d'un répertoire et non pas juste triés par thème, quel que soit le répertoire.
voici mon code :
Public sem As Integer, semaine As Integer, jsem$
Public chemin As String, chemsem As String, Dossier As Object, Fichier As Object
Public ATraiter() As String, ATraiterchem() As String, DateModif() As Date, i As Integer
Public semainedu As String, elem As String
Public Mondoc As String, Nomdoc As String
Code:
Sub TraitDeb()
Dim Mondoc As String
Mondoc = ThisDocument.Name
Selection.Find.ClearFormatting
With Selection.Find
.Text = "SOMMAIRE"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.Collapse
Selection.MoveRight Unit:=wdWord, Count:=2, Extend:=wdMove
On Error Resume Next
ActiveDocument.TablesOfContents(1).Delete
Selection.MoveRight Unit:=wdWord, Count:=2, Extend:=wdMove
Selection.EndKey Unit:=wdStory, Extend:=wdExtend
If Len(Selection) > 1 Then Selection.Delete
Selection.Collapse
Selection.TypeParagraph
Selection.Style = ActiveDocument.Styles("Normal")
End Sub
Code:
Sub AcquisitionDossier()
Dim fd As FileDialog, vrtSelectedItem As Variant
Set fd = Application.FileDialog(msoFileDialogFolderPicker) 'selection répertoire
With fd
chemin = ThisDocument.Path & "\"
End With
With fd
.InitialFileName = chemin
If .Show Then
chemin = .SelectedItems(1)
End If
End With
Set fd = Nothing
End Sub
Code:
Sub ListeDay() 'création de la liste des fichiers du jour à agréger
ChangeFileOpenDirectory chemin
i = 0
Set Dossier = CreateObject("Scripting.FileSystemObject").getfolder(chemin)
For Each Fichier In Dossier.Files
If Right(Fichier.Name, 4) = ".doc" And LCase(Left(Fichier.Name, 9)) <> "prompteur" Then ' liste les fichier DOC seulement
ReDim Preserve ATraiter(i) ' pour les noms des fichiers valides
ReDim Preserve DateModif(i) ' pour les dates
ATraiter(i) = Fichier.Name
DateModif(i) = Fichier.DateLastModified
i = i + 1
End If
Next
Call tri(ATraiter, 0, UBound(ATraiter, 1))
End Sub
Code:
Sub ListeWeek() 'création de la liste des fichiers de la semaine à agréger
ChangeFileOpenDirectory chemin
Set Dossier = CreateObject("Scripting.FileSystemObject").getfolder(chemin)
i = 0
For Each SousDossier In Dossier.SubFolders
chemin = SousDossier
For Each Fichier In SousDossier.Files
If Right(Fichier.Name, 4) = ".doc" And LCase(Left(Fichier.Name, 9)) <> "prompteur" Then ' liste les fichier DOC seulement
ReDim Preserve ATraiter(i) ' pour les noms des fichiers valides
ReDim Preserve DateModif(i) ' pour les dates
ReDim Preserve ATraiterchem(i) 'chemin complet
ATraiter(i) = Fichier.Name
DateModif(i) = Fichier.DateLastModified
ATraiterchem(i) = chemin & "\" & Fichier.Name
i = i + 1
End If
Next
Next
Call tri(ATraiter, 0, UBound(ATraiter, 1))
End Sub
Code:
Sub tri(a, gauc, droi)
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
Temp = a(g): a(g) = a(d): a(d) = Temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub
Code:
Sub TraitWeek()
'si j'ai choisi le répertoire semaine (ex. 47) j'agrège tous les fichiers des répertoires semaine
Dim v
Dim Nomdoc As String
Selection.EndKey Unit:=wdStory
Mondoc = ActiveDocument.Name
For i = LBound(ATraiter) To UBound(ATraiter)
On Error GoTo 0
ChangeFileOpenDirectory chemin
Documents.Open filename:=ATraiterchem(i), _
ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
wdOpenFormatAuto, XMLTransform:=""
v = Split(ActiveDocument.Path, "\")
sem = IIf(UBound(v) > 0, v(UBound(v) - 1), v(UBound(v)))
Nomdoc = ActiveDocument.Name
Documents(Mondoc).Activate
With Selection
.InsertBreak Type:=wdPageBreak
.TypeText Text:=Nomdoc & " : " & DateModif(i)
.Style = ActiveDocument.Styles("Cathy")
.TypeParagraph
.Style = ActiveDocument.Styles("Normal")
End With
Documents(Nomdoc).Activate
With Selection
.WholeStory 'tout sélectionner
.Copy
ActiveWindow.Close
Selection.EndKey Unit:=wdStory 'fin du doc
Selection.PasteAndFormat (wdPasteDefault)
End With
Next i
End Sub
Code:
Sub TraitDay() 'si j'ai choisi un répertoire jour (ex. lundi) j'agrège tous les fichiers du jour
Dim Mondoc As String
Mondoc = ThisDocument.Name
Dim v
v = Split(ActiveDocument.Path, "\")
sem = IIf(UBound(v) > 0, v(UBound(v) - 1), v(UBound(v)))
Selection.EndKey Unit:=wdStory
For i = LBound(ATraiter) To UBound(ATraiter)
On Error GoTo 0
With Selection
.InsertBreak Type:=wdPageBreak
.TypeText Text:=ATraiter(i) & " : " & DateModif(i)
.Style = ActiveDocument.Styles("Cathy")
.TypeParagraph
.Style = ActiveDocument.Styles("Normal")
ChangeFileOpenDirectory chemin
Documents.Open filename:=ATraiter(i), _
ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
wdOpenFormatAuto, XMLTransform:=""
Selection.WholeStory 'tout sélectionner
Selection.Copy
ActiveWindow.Close
Selection.EndKey Unit:=wdStory 'fin du doc
Selection.PasteAndFormat (wdPasteDefault)
End With
Next i
End Sub
Mon problème :
si je trie par ordre alpha du nom des fichiers, ils seront triés par thème, puisque celui_ci figure en début de nom de fichier, mais du coup exit le tri par date...
Ce problème vous semble-t-il insoluble???
En tout cas mon tri ne marche pas car j'ai des affaires étrangères, puis du social, puis des affaires étrangères (d'un autre jour)... Damned!
Un aide (ou un début d'aide) de votre part serait vraiment bienvenue car je ne m'en sors pas, alors qu'il ne me reste que ce point pour que tout fonctionne à merveille...
Un grand merci à vous si vous pouvez me mettre sur le chemin d'une solution.
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.