Renommer onglet

Freedal

XLDnaute Junior
Bonjour à tous,
Je souhaiterai renommer une feuille selon le nom dans une cellule se trouvant sur une autre feuille.
Merci pour votre aide.
 

Freedal

XLDnaute Junior
J'ai saisis ceci :
Sheets(N° de la feuille qui doit être renommer).Name = Sheets("Nom de la feuille ou se trouve la cellule de référence").[A1]
ça fonctionne mais lorsque je renomme ma cellule A1, l'autre feuille ne se renomme pas, je suis obligé d'exécuter la macro manuellement.
N'y aurait-il pas un moyen que la macro s'exécute automatiquement lorsque je saisis un nouveau nom dans la cellule A1 et que je clic sur "Entrée" ?
 

zebanx

XLDnaute Accro
Rebonjour Freedal

Avec un peu de retard.
Pas gros utilisateur des privatesub mais ça doit correspondre à ta demande en modifiant la cellule A1 dans la feuille de départ (sheets(1)) on a le nom de la sheets(2) automatiquement modifié.
J'ai laissé le code avec deux variantes en module 1 sinon -
si tu souhaites soit nommer les feuilles soit utiliser leur numéro (dans l'ordre d'affichage)

++ zebanx
 

Pièces jointes

  • macro_nom feuille.xls
    299 KB · Affichages: 43
Dernière édition:

Freedal

XLDnaute Junior
Bonjour zebanx,
merci pour ta réponse, je débute en VBA, serait possible de mettre plutôt la macro sur la feuille "Fin" ou l'onglet doit être renommer car il y aura plusieurs feuilles "Fin" à renommer suivant différentes cellules de la feuille principale "Départ"
Merci
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Non, ce n'est pas possible. Une proposition pour la 1ère feuille:
VB:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Rows.Count <> 1 Or Target.Columns.Count <> 1 _
   Or Target.Column <> 1 Then Exit Sub
Sheets(Target.Row).Name = Target.Value
End Sub
 

Freedal

XLDnaute Junior
Bonjour zebanx , Dranreb
Merci pour ton fichier, ça fonctionne très bien.
Le problème c'est que les feuilles qui devront être renommer ne sont pas forcément placer dans l'ordre, et que d'autres feuilles viendront interférer, qu'elles soient ici au départ ou qu'elles soient créer à l'usage.
Merci si vous pouvez m'éclairer.
 

Pièces jointes

  • macro_nom feuille copie .xls
    192.5 KB · Affichages: 21

zebanx

XLDnaute Accro
Bonjour Freedal,

C'est ce qu'on appelle une demande à tiroir (qui aurait pu être évité tu ne crois pas ??)
(1) petit exemple simple en 1 seule ligne
(2) il faut l'automatiser
(3) il y a plusieurs feuilles
(4) mais toutes ne sont pas à renommer
.... est-ce vraiment fini ou y aura-t-il d'autres demandes STP ?o_O

Je ne sais pas répondre pour ta dernière demande mais, sans doute, faudrait-il pouvoir mettre une fonction qui permette de ressortir le numéro d'affichage de la feuille au départ pour l'utiliser dans le code de la privatesub.

++ zebanx

Edit : ci-joint une fonction pour récupérer le numéro d'affichage de la feuille en fonction de son nom mais je ne sais pas comment l'imbriquer dans la demande de Freedal.
Si l'un(e) d'entre vous peut me venir en aide, merci par avance.


Code:
Function numSh(c As Range) As Variant
Application.Volatile
For i = 1 To Sheets.Count
If Sheets(i).Name = Range(c.Address).Value Then
numSh = i
End If
Next
End Function
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Essayez comme ça :
VB:
Option Explicit
Private Wsh As Worksheet
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
Set Wsh = ThisWorkbook.Worksheets(CStr(Target(1, 1).Value))
If Err Then Set Wsh = Nothing
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim NouvNom As String
If Wsh Is Nothing Then Exit Sub
NouvNom = Target(1, 1).Value
On Error Resume Next
Wsh.Name = NouvNom
If Err Then
   MsgBox "Err " & Err & " en tentant de renommer '" & NouvNom & "' la feuille '" & _
      Wsh.Name & "'." & vbLf & Err.Description, vbCritical, "Renommer feuille"
   Application.EnableEvents = False
   Target(1, 1).Value = Wsh.Name
   Application.EnableEvents = True
   End If
End Sub
 
Dernière édition:

Freedal

XLDnaute Junior
Bonsoir Dranreb Zebanx et un grand merci. :)
Je vais essayer d'interpréter le travail que vous avez fait.
Je n'ai jamais fait de macros ni de code auparavant, j'arrivais à m'en sortir que par les formules. :(
La macro renomme les onglets jusque ST26, comment puis-je faire pour appliquer cela jusque ST43 ?
@+
 

Statistiques des forums

Discussions
311 712
Messages
2 081 802
Membres
101 819
dernier inscrit
lukumubarth