Changement de nom document+feuille

Bonjour,

Je cherche à renommer le document ainsi que 2 feuille de celui-ci à l'appuis de 3 bouton. J'ai donc réaliser les macro qui suivent mais j'ai deux problèmes. Tout d'abord la macro pour renommer le document me renvoie une erreur de type 75 (que je supposerait plutôt liée à des problèmes d'autorisation que de code). Et ensuite la macro pour renommer les feuilles me renvoie "l'indice n'appartient pas à la sélection". Auriez vous des pistes de réflexions sur la source de ces problèmes.

Sub ChangerNomFichier()
    Dim nouveauNom As String
    Dim cheminFichier As String
    Dim extension As String
    Dim cheminComplet As String
    Dim nouveauCheminComplet As String

    ' Récupérer le chemin du fichier actuel
    cheminFichier = ThisWorkbook.Path
    If cheminFichier = "" Then
        MsgBox "Le fichier doit être sauvegardé d'abord.", vbExclamation
        Exit Sub
    End If

    ' Spécifier l'extension du fichier actuel
    extension = ".xlsm"

    ' Lire la valeur de la cellule A1 pour obtenir le nouveau nom
    nouveauNom = ThisWorkbook.Sheets("Feuille_de_calcul_intermediaire").Range("A1").Value ' Changez "Feuil1" si nécessaire

    ' Vérifier si la cellule A1 n'est pas vide
    If Trim(nouveauNom) = "" Then
        MsgBox "La cellule A1 est vide. Veuillez entrer un nom de fichier.", vbExclamation
        Exit Sub
    End If

    ' Construire le chemin complet pour le fichier actuel et le nouveau fichier
    cheminComplet = cheminFichier & "\" & ThisWorkbook.Name
    nouveauCheminComplet = cheminFichier & "\" & nouveauNom & extension

    ' Vérifier si un fichier avec le nouveau nom existe déjà
    If Dir(nouveauCheminComplet) <> "" Then
        MsgBox "Un fichier avec ce nom existe déjà.", vbExclamation
        Exit Sub
    End If

    ' Renommer le fichier
    Name cheminComplet As nouveauCheminComplet

    ' Fermer et rouvrir le fichier avec le nouveau nom
    ThisWorkbook.Save
    Application.DisplayAlerts = False
    ThisWorkbook.Close SaveChanges:=False
    Application.DisplayAlerts = True
    Workbooks.Open nouveauCheminComplet
End Sub

Sub RenommerFeuilleA()
    Dim nouveauNom As String

    ' Lire la valeur de la cellule A1 pour obtenir le nouveau nom
    nouveauNom = ThisWorkbook.Sheets("Feuille_de_calcul_intermediaire").Range("B1").Value

    ' Vérifier si la cellule A1 n'est pas vide
    If Trim(nouveauNom) = "" Then
        MsgBox "La cellule B1 est vide. Veuillez entrer un nom de feuille.", vbExclamation
        Exit Sub
    End If

    ' Vérifier si le nom est valide (par exemple, longueur maximale de 31 caractères)
    If Len(nouveauNom) > 31 Then
        MsgBox "Le nom de la feuille ne peut pas dépasser 31 caractères.", vbExclamation
        Exit Sub
    End If

    ' Vérifier si un autre feuille avec le même nom existe déjà
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Sheets
        If ws.Name = nouveauNom Then
            MsgBox "Une feuille avec ce nom existe déjà.", vbExclamation
            Exit Sub
        End If
    Next ws

    ' Renommer la feuille
    ThisWorkbook.Sheets("XXXa- Adresse - Code Postal").Name = nouveauNom
End Sub

Sub RenommerFeuilleB()
    Dim nouveauNom As String

    ' Lire la valeur de la cellule A1 pour obtenir le nouveau nom
    nouveauNom = ThisWorkbook.Sheets("Feuille_de_calcul_intermediaire").Range("C1").Value

    ' Vérifier si la cellule A1 n'est pas vide
    If Trim(nouveauNom) = "" Then
        MsgBox "La cellule C1 est vide. Veuillez entrer un nom de feuille.", vbExclamation
        Exit Sub
    End If

    ' Vérifier si le nom est valide (par exemple, longueur maximale de 31 caractères)
    If Len(nouveauNom) > 31 Then
        MsgBox "Le nom de la feuille ne peut pas dépasser 31 caractères.", vbExclamation
        Exit Sub
    End If

    ' Vérifier si un autre feuille avec le même nom existe déjà
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Sheets
        If ws.Name = nouveauNom Then
            MsgBox "Une feuille avec ce nom existe déjà.", vbExclamation
            Exit Sub
        End If
    Next ws

    ' Renommer la feuille
    ThisWorkbook.Sheets("XXXb- Adresse - Code Postal").Name = nouveauNom
End Sub

Bonjour, je ne pense pas que vous puissiez renommer un fichier qui est actuellement ouvert.

Au mieux enregistrer une copie avec un nouveau nom.

Effectivement merci bien de cette remarque, j'ai changer pour faire une copie et fermer l'original et cela fonctionne à merveille.

Mon second problème était liée à un mauvais appel car un caractère espace c'était glisser en trop dans le nom de mes feuilles, pour que ça n'arrive plus je m'y suis référer avec l'index des pages histoires de sécuriser le fonctionnement au maximum.

Rechercher des sujets similaires à "changement nom document feuille"