Nommer automatiquement une feuille de calcul
Résolu/Fermé
A voir également:
- Nommer automatiquement une feuille de calcul
- Feuille de pointage excel - Télécharger - Tableur
- Calcul moyenne excel - Guide
- Supprimer une feuille word - Guide
- Formule de calcul excel - Guide
- Calcul période d'essai cdi simulateur excel ✓ - Forum Excel
2 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
20 nov. 2009 à 12:19
20 nov. 2009 à 12:19
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
20 nov. 2009 à 16:31
20 nov. 2009 à 16:31
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...
20 nov. 2009 à 14:35
ç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")
20 nov. 2009 à 15:00
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...
20 nov. 2009 à 15:14
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
20 nov. 2009 à 15:26
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) ?