Bonjour Le Forum 😀 ,
J'ai une macro qui change le nom de mes feuilles.
Ces feuilles sont exportées et ont des noms inutilisables du style StatExportDonneesActivitePassagesAuxArrets_GUID_DateTime_v2.
Je veux donc changer leur nom.
Le souci c'est que lorsque je clique sur mon bouton qui associe cette macro, j'ai un message d'erreur.
Je dois donc enregistrer, fermer le fichier et réouvrir puis accepter la récupération des feuilles car le nom n'est pas valide et ensuite la macro fonctionne.
Une petite aide serait sympa.
Voici la macro:
Je joins des fichiers :la feuille Type et trois fichiers avec seulement la cellule M5 pour des raisons de confidentialité.
Merci à vous.
PS: Si je suis pas assez clair, demander des infos
PS': Si je déplace les feuilles dans mon classeur type une par une, la macro fonctionne. Mais j'ai 2x feuilles donc ...
J'ai une macro qui change le nom de mes feuilles.
Ces feuilles sont exportées et ont des noms inutilisables du style StatExportDonneesActivitePassagesAuxArrets_GUID_DateTime_v2.
Je veux donc changer leur nom.
Le souci c'est que lorsque je clique sur mon bouton qui associe cette macro, j'ai un message d'erreur.
Je dois donc enregistrer, fermer le fichier et réouvrir puis accepter la récupération des feuilles car le nom n'est pas valide et ensuite la macro fonctionne.
Une petite aide serait sympa.
Voici la macro:
Code:
Sub NomFeuille()
Dim Sh As Worksheet, TmpSh As Worksheet, Tmp As Variant, TmpName As String
'Declaration Variable
For Each Sh In Sheets 'Pour chaque feuille du classeur
If Sh.Name <> "Recap" And Not IsEmpty(Sh.Range("M5")) Then
'Si la feuille ne se nomme pas Recap et si M5 non vide
Sh.Name = Sh.Index ' Le nom de la feuille est le numéro feuille
Tmp = Split(Sh.Range("M5"), "-") ' Coupure après - dans M5
TmpName = Left(Trim(Tmp(UBound(Tmp))), 31) 'Coupure à gauche de Tmp jusqu'à 31 caractères
On Error Resume Next ' Si pas d'erreur
Set TmpSh = Sheets(TmpName) 'Feuille prend valeur de TmpName
On Error GoTo 0 'Si erreur
If Not TmpSh Is Nothing Then 'Si Feuille nommée TmpName existe déjà
Sh.Name = Left(Trim(TmpName), 29) & Sh.Index ' Feuille prend TmpName mais avec 29 caractères
Set TmpSh = Nothing 'Mettre TmpSh vide car Feuille avec ce nom existe maintenant
Else
Sh.Name = Left(Trim(TmpName), 31) 'Sinon Prise Valeur TmpName comme nom
End If
End If
Next Sh ' Feuille Suivante.
End Sub
Je joins des fichiers :la feuille Type et trois fichiers avec seulement la cellule M5 pour des raisons de confidentialité.
Merci à vous.
PS: Si je suis pas assez clair, demander des infos
PS': Si je déplace les feuilles dans mon classeur type une par une, la macro fonctionne. Mais j'ai 2x feuilles donc ...
Pièces jointes
-
Aide_Macro.xls53.5 KB · Affichages: 37
-
StatExportDonneesActivitePassagesAuxArrets_GUID_DateTime_v12.xls20.5 KB · Affichages: 20
-
StatExportDonneesActivitePassagesAuxArrets_GUID_DateTime_v8.xls20 KB · Affichages: 20
-
StatExportDonneesActivitePassagesAuxArrets_GUID_DateTime_v19.xls20.5 KB · Affichages: 20
-
Aide_Macro.xls53.5 KB · Affichages: 30
-
Aide_Macro.xls53.5 KB · Affichages: 38