1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
Private Sub Workbook_Open()
Dim Tbl() As String
Dim Repertoire As String
Dim N As String
Dim Titre As String
Dim NewNom As String
Dim NBFich As Integer
Dim I As Integer
Dim J As Integer
Dim Num As Integer
'Boite de dialogue, si Oui
If MsgBox("Enregistrer le fichier maintenant ?", _
vbYesNo + vbQuestion, _
"Sauvegarde du fichier") = vbYes Then
'définir le chemin de MesDocuments
Repertoire ="C:\Documents and Settings\SCCI08881\Bureau\Céline_Stage\test\"
'Boite de dialogue demandant le nom du classeur à enregistrer
'avec par défaut le nom du classeur contenant cette proc
Titre = InputBox("Indiquer le nom du fichier :", _
"Nom du classeur.", _
Left(ThisWorkbook.Name, InStr(ThisWorkbook.Name, ".") - 1))
'si aucune saisie, fin
If Titre = "" Then Exit Sub
'récupère tous les classeurs du dossier (voir fonction ci-dessous)
Tbl = Fichiers(Repertoire, "xls")
'gère l'erreur du tableau vide
On Error Resume Next
'nombre de classeurs (erreur si aucun classeur)
NBFich = UBound(Tbl)
'affiche un message si pas de classeur dans le dossier et fin
If Err.Number <> 0 Then
MsgBox "Aucun fichier dans le dossier '" & Repertoire & "' !"
Exit Sub
End If
'remet le gestionnaire à zéro
On Error GoTo 0
'parcour le tableau de fichiers
For I = 1 To NBFich
'recherche les chiffres dans les noms et incrémente
'et récupère le nombre le plus élevé
For J = 1 To Len(Tbl(I))
If InStr("1234567890", Mid(Tbl(I), J, 1)) <> 0 Then
N = N & Mid(Tbl(I), J, 1)
End If
Next J
'gère l'erreur du N = ""
On Error Resume Next
'affecte le nombre le plus élevé à Num
If CInt(N) > Num Then Num = CInt(N)
N = ""
Next I
'incrémente de 1 et construit le nom
Num = Num + 1
NewNom = Titre + CStr(Num) + ".xls"
'Enregistrer le fichier
ActiveWorkbook.SaveAs Repertoire & NewNom
End If
End Sub
Function Fichiers(Chemin As String, Extension As String) As String()
Dim TableauFichiers() As String
Dim Fichier As String
Dim I As Integer
Fichier = Dir(Chemin)
Do While (Len(Fichier) > 0)
If Right(Fichier, 3) = Extension Then
I = I + 1
ReDim Preserve TableauFichiers(1 To I)
TableauFichiers(I) = Fichier
End If
Fichier = Dir()
Loop
Fichiers = TableauFichiers()
End Function |
Partager