Renommer feuilles export

Bonjour,

Depuis un logiciel comptable, j'exporte un classeur avec environ 25 onglets.

Chaque onglet a un nom, celui du médecin. Je dois enregistrer chaque onglet à part, dans un nouveau classeur.

Pour l'instant, je ne connais rien en VBA mais j'ai trouvé un bout de code qui permet de faire ça :

Sub SplitWorkbook()
'Updateby20140612
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim xWs As Worksheet
Dim xWb As Workbook
Dim FolderName As String
Application.ScreenUpdating = False
Set xWb = Application.ThisWorkbook
DateString = Format(Now, "yyyy-mm-dd hh-mm-ss")
FolderName = xWb.Path & "\" & xWb.Name & " " & DateString
MkDir FolderName
For Each xWs In xWb.Worksheets
    xWs.Copy
    If Val(Application.Version) < 12 Then
        FileExtStr = ".xls": FileFormatNum = -4143
    Else
        Select Case xWb.FileFormat
            Case 51:
                FileExtStr = ".xlsx": FileFormatNum = 51
            Case 52:
                If Application.ActiveWorkbook.HasVBProject Then
                    FileExtStr = ".xlsm": FileFormatNum = 52
                Else
                    FileExtStr = ".xlsx": FileFormatNum = 51
                End If
            Case 56:
                FileExtStr = ".xls": FileFormatNum = 56
            Case Else:
                FileExtStr = ".xlsb": FileFormatNum = 50
        End Select
    End If
    xFile = FolderName & "\" & Application.ActiveWorkbook.Sheets(1).Name & FileExtStr
    Application.ActiveWorkbook.SaveAs xFile, FileFormat:=FileFormatNum
    Application.ActiveWorkbook.Close False
Next
MsgBox "You can find the files in " & FolderName
Application.ScreenUpdating = True
End Sub

Si le nom du médecin (et de l'onglet du coup) est "Dupont Jean", je souhaite qu'il me l'enregistre en tant que "dupont gardes09.2019", en sachant que chaque mois, le "09.2019" change. Il s'agit toujours du moins N-1. Il faudrait que cela soit une variable aussi je pense, qu'excel me demande d'entre la valeur à l'exécution du code.

Pouvez-vous me dire où je dois ajouter cette condition s'il vous plait ?

Merci d'avance pour votre aide.

Bonjour,

un essai :

    tab_nom = Split(Application.ActiveWorkbook.Sheets(1).Name, " ")
    xFile = FolderName & "\" & tab_nom(0) & " gardes " & Format(Month(Now) - 1, "00") & "." & Format(Year(Now),"YYYY") & FileExtStr

On "split" le nom de l'onglet grâce au caractère "espace", du coup dans le tableau de résultat de découpage, l'index 0 correspond au nom de la personne, si ce nom n'est pas composé, dans ce cas il faudrait mettre en place une structure de type "-" afin de lier les noms composés.

Ensuite on fait plusieurs "concatener" afin de coller les morceaux ensembles.

Format(Month(Now) - 1, "00") : permet de sortir sur 2 digits le numéro du mois qui précède celui en cours, mais il doit y avoir une erreur car si l'on est sur janvier, cela va créer 0 donc il faut certainement modifier ceci, mais l'idée est là...

Format(Year(Now),"YYYY") : permet de coder l'année en cours sur 4 digits, pareille ici si on est en janvier alors il y aura une erreur d'année pour la sauvegarde de décembre...

Voilà pour ma réponse qui je m'en rend compte n'est pas "optimum" !

@ bientôt

LouReeD

Rechercher des sujets similaires à "renommer feuilles export"