j'ai un classeur excel qui possède une macro en VB, dont voici le code.
Option Explicit
Const wDemandePath As String = "C:\Test\" ' doit se terminer par \
Const wDemandeNomF As String = "Fichier du "
Const wDemandeNomV As String = "$B$1"
Sub SavDemande()
Dim nomFich As String, i As Long, j As Long
nomFich = Range(wDemandeNomV)
If Not IsDate(nomFich) Then
i = MsgBox("'" & nomFich & "' n'est pas une date valide.", vbCritical + vbOKOnly)
Exit Sub
End If
i = InStr(nomFich, "/")
j = InStr(i + 1, nomFich, "/")
nomFich = Mid(nomFich, j + 1) & "-" & Mid(nomFich, i + 1, j - i - 1) & "-" & Left(nomFich, i - 1)
nomFich = wDemandePath & wDemandeNomF & nomFich & ".xls"
ActiveWorkbook.SaveAs Filename:=nomFich
End Sub
Cette macro permet de créer un classeur dont une partie du nom du fichier est contenu dans la cellule B1.
Je voudrai modifier cette macro pour que le string du fichier puisse être modifier.
Je voudrai rajouter un sous-catalogue à C:\Test\
Le nom du sous catalogue serait en cellule A1.
On pourrait le remplacer à la place de : Const wDemandeNomF As String = "Fichier du "
A essayer :
Option Explicit
Const wDemandePath As String = "C:\Test\" ' doit se terminer par \
Const wDemandeNomF As String = "Fichier du "
Const wDemandeNomV As String = "$B$1"
Const wDemandeSousC As String = "$A$1" Sub SavDemande()
Dim nomFich As String, i As Long, j As Long , nomSousC As String nomSousC = Range(wDemandeSousC) nomFich = Range(wDemandeNomV)
If Not IsDate(nomFich) Then
i = MsgBox("'" & nomFich & "' n'est pas une date valide.", vbCritical + vbOKOnly)
Exit Sub
End If
i = InStr(nomFich, "/")
j = InStr(i + 1, nomFich, "/")
nomFich = Mid(nomFich, j + 1) & "-" & Mid(nomFich, i + 1, j - i - 1) & "-" & Left(nomFich, i - 1)
nomFich = wDemandePath & nomSousC & wDemandeNomF & nomFich & ".xls"
ActiveWorkbook.SaveAs Filename:=nomFich
End Sub
Voila dans l'esprit de ce qui existe déja. en A1 le nom du sous catalogue doit être de la forme TOTO\