XL 2019 [RESOLU] VBA Renommer un onglet en fonction de plusieurs cellules

elsabio77

XLDnaute Nouveau
Bonjour à tous,
Je viens vers vous car je pêche.
Je sais que vous allez surement dire qu'il y a la solution ailleurs, mais je n'arrive pas à faire fonctionner les codes proposés. Je ne connais strictement rien en VBA...
Et de ce que j'ai pu lire, le VBA est la seule solution viable.

Je vous expose mon dilemme et ma requête :
- Je souhaiterais que lorsque je crée un nouvel onglet, le nom de celui-ci soit le texte de la cellule A1 et B1 ainsi que les cellules C1 et D1 si elles ne sont pas vide.
- Il y aura au minimum les cellules A1 et B1 de remplies. Pour les cellules C1 et D1, cela sera en fonction des besoins.
- le nom de l'onglet soit modifié dès la validation des cellules citées.
- Est-il possible que chaque onglet soit indépendant?

Mon fichier

J'ai testé ce code VBA, mais comme les onglets peuvent ne pas être identiques, les noms des onglets sont faussés

VB:
Option Explicit
Sub NomFeuille()

Dim I As Long   
    
On Error Resume Next   
    
For I = 1 To Worksheets.Count   
   Worksheets(I).Name = Worksheets(I).Range("A1")&" "&Range("B1")&"-"&Range("C1")&"-"&Range("D1")&"-"&Range("E1")   
Next   
    
On Error GoTo 0   
End Sub
J'ai l'impression d'en demander beaucoup, mais je suis totalement à la ramasse….

Je tiens à remercier par avance les personnes qui se pencheront sur mon problème :)
Cordialement.
 

danielco

XLDnaute Occasionnel
Bonjour,

Essaie :

VB:
Sub NomFeuille()
  Dim Sh As Worksheet, Txt As String
  On Error Resume Next
  For Each Sh In Sheets
    With Sh
     Txt = .Range("A1") & " " & .Range("B1")
     If .[C1] <> "" Then Txt = Txt & "-" & .[C1]
     If .[D1] <> "" Then Txt = Txt & "-" & .[D1]
     .Name = Txt
    End With
  Next Sh
  On Error GoTo 0
End Sub
Cordialement.

Daniel
 

elsabio77

XLDnaute Nouveau
Bonsoir @danielco,
Votre code est parfaitement fonctionnel !!!!!!
J'avais réussi à en créer un, j'ai persévéré malgré mon message ( au bout de 4 jours de dur labeur)....
Je vous le met en dessous, mais il est beaucoup plus brouillon que le vôtre :

VB:
Sub RenameSheet()

Dim Choix1 As String
Dim Choix2, Choix3, Choix4 As String

Choix1 = ActiveSheet.Range("A1").Value
Choix2 = ActiveSheet.Range("B1").Value
Choix3 = ActiveSheet.Range("C1").Value
Choix4 = ActiveSheet.Range("D1").Value

If Choix2 <> "" And Choix3 = "" Then
    ActiveSheet.Name = Choix1 & " " & Choix2
   
ElseIf (Choix2 & Choix3) <> " " And Choix4 = "" Then
    ActiveSheet.Name = Choix1 & " " & Choix2 & "-" & Choix3
   
ElseIf Choix4 <> " " Then
    ActiveSheet.Name = Choix1 & " " & Choix2 & "-" & Choix3 & "-" & Choix4

End If

End Sub
Merci pour le temps que vous m'avez accordé :)
 

Haut Bas