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 SubBonjour, 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.