Nommer automatiquement une feuille de calcul
Résolu
toutsie
-
Toutsie -
Toutsie -
Bonjour,
Avec Excel 2007, je souhaiterais que ma feuille de calcul prenne automatiquement le nom de la valeur d'une cellule.
Je m'explique :
J'ai une liste de nom en feuille1.
dans la cellule A1 de chaque feuille suivante (avec un collage avec liaison), apparait un nom de ma liste. Je voudrais pouvoir renommer automatiquement mes feuilles pour qu'elles prennent le nom indiqué en A1...
Merci de m'aider !
Avec Excel 2007, je souhaiterais que ma feuille de calcul prenne automatiquement le nom de la valeur d'une cellule.
Je m'explique :
J'ai une liste de nom en feuille1.
dans la cellule A1 de chaque feuille suivante (avec un collage avec liaison), apparait un nom de ma liste. Je voudrais pouvoir renommer automatiquement mes feuilles pour qu'elles prennent le nom indiqué en A1...
Merci de m'aider !
A voir également:
- Nommer automatiquement une feuille de calcul
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Comment imprimer en a5 sur une feuille a4 - Guide
- Bruler feuille de laurier - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
2 réponses
Bonjour,
Par cette procédure :
Alt + F11 ---> une fenêtre Visual Basic s'ouvre
Insertion / modules
Copier / coller ce code :
Sub renommer()
Dim Ws As Worksheet
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name <> Ws.Range("A1") Then
Ws.Name = Ws.Range("A1")
End If
Next Ws
End Sub
Fermer la fenêtre Visual Basic
Alt + F8
cliquer sur renommer puis sur le bouton exécuter.
Et voilà
Pour renommer toutes les feuilles sauf la feuille "index" (ou feuil1 ou autre) : adapter selon votre classeur le nom de la feuille est en gras ci dessous...
Sub renommer()
Dim Ws As Worksheet
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name = "index" Then
GoTo suite
End If
If Ws.Name <> Ws.Range("A1") Then
Ws.Name = Ws.Range("A1")
End If
suite:
Next Ws
End Sub
Par cette procédure :
Alt + F11 ---> une fenêtre Visual Basic s'ouvre
Insertion / modules
Copier / coller ce code :
Sub renommer()
Dim Ws As Worksheet
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name <> Ws.Range("A1") Then
Ws.Name = Ws.Range("A1")
End If
Next Ws
End Sub
Fermer la fenêtre Visual Basic
Alt + F8
cliquer sur renommer puis sur le bouton exécuter.
Et voilà
Pour renommer toutes les feuilles sauf la feuille "index" (ou feuil1 ou autre) : adapter selon votre classeur le nom de la feuille est en gras ci dessous...
Sub renommer()
Dim Ws As Worksheet
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name = "index" Then
GoTo suite
End If
If Ws.Name <> Ws.Range("A1") Then
Ws.Name = Ws.Range("A1")
End If
suite:
Next Ws
End Sub
Je n'avais jamais réalisé ce genre de code avant. Les puristes me pardonneront certainement un jour......
Clic droit sur l'onglet de ta feuille qui contient la liste / visualiser le code.
Copier / coller ce code dans la fenêtre visual basic qui vient de s'ouvrir
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Intersection As Range, Plage As Range
Dim i As Integer
i = Range("A65536").End(xlUp).Row
Set Plage = Range("A1:A" & i)
Set Intersection = Application.Intersect(Target, Plage)
If Intersection Is Nothing Then Exit Sub
On Error Resume Next
Sheets.Add After:=Sheets("Feuil1")
ActiveSheet.Range("A1") = Intersection
ActiveSheet.Name = Intersection
Sheets("Feuil1").Activate
End Sub
Ca fonctionne, tant que l'utilisateur ne fait pas de bêtises...
Clic droit sur l'onglet de ta feuille qui contient la liste / visualiser le code.
Copier / coller ce code dans la fenêtre visual basic qui vient de s'ouvrir
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Intersection As Range, Plage As Range
Dim i As Integer
i = Range("A65536").End(xlUp).Row
Set Plage = Range("A1:A" & i)
Set Intersection = Application.Intersect(Target, Plage)
If Intersection Is Nothing Then Exit Sub
On Error Resume Next
Sheets.Add After:=Sheets("Feuil1")
ActiveSheet.Range("A1") = Intersection
ActiveSheet.Name = Intersection
Sheets("Feuil1").Activate
End Sub
Ca fonctionne, tant que l'utilisateur ne fait pas de bêtises...
ça bug !
je n'y connais rien en visual basic, mais j'ai respecté la procédure, et il me dit "erreur d'exécution 1004"
le bug est sur cette ligne :
Ws.Name = Ws.Range("A1")
Essaie de remplacer :
Ws.Name = Ws.Range("A1")
par :
Ws.Name = Ws.Range("A1").Value
attention, il ne doit pas y avoir en A1 des caractères spéciaux comme / ou autre...
en A1, j'ai :
=MAJUSCULE(Feuil2!$B$1)
c'est donc un collage avec liaison de mon tableau de la feuille 2
je me rends compte tout à coup que ça fonctionne pour la feuille1 (qui n'a rien à voir) mais que ça bug pour les autres... justement pour les feuilles avec ce lien
mes dernières feuilles de calcul était vide et impossible de renommer 2 fois de la meme façon
donc c'est bon, ça marche !
merci !
tant que j'y suis, j'abuse...
qd je mets ma liste à jour, suis je obligé de retourner ds visual basic pour faire tourner le programme ?
et ne peut on pas créer qqchose pour qu'excel crée une nouvelle feuille automatiquement si j'ajoute un nom à ma liste de départ (feuille2) ?