Nom de l'onglet

Bonsoir le forum

j'ai une page de réglage sur mon fichier que les gens doivent remplir. je souhaiterai que les onglets du fichier se renomme automatiquement quand on renseigne certaines cellules.

je ne sais pas trop comment faire : une formule toute bête ou une macro

bonne soirée

Bonsoir

Une petite macro à placer dans le code de la feuille concernée

Ne traite que la modification de la cellule G5

En plus une petite vérification des caractères non autorisés

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Interdit As String
Dim I As Integer

  Interdit = "&:/\?*[]" & Chr(34)
  If Target.Count > 1 Then Exit Sub
  If Not Intersect(Range("G5"), Target) Is Nothing Then
    If Target <> "" Then
      For I = 1 To Len(Interdit)
        If InStr(Target, Mid(Interdit, I, 1)) > 0 Then
          MsgBox "Carctère interdit " & vbCr & vbCr & Mid(Interdit, I, 1) & vbCr & vbCr
          Exit Sub
        End If
      Next I
      ActiveSheet.Name = Range("G5")
    End If
  End If
End Sub

Merci Banzai64 de ta réponse.

je profite de ce post pour un autre question : j'ai deux onglets => un pour la gestion de la course et un deuxième pour l'édition des résultats (classement individuel, par équipe ...) mes deux onglets correspondent à la même course.

ex "course 1" => comment faire pour que mon premier onglet s'appelle "course 1" (ça, c'est bon) et que le deuxième s'appelle "résultat course 1" en gardant le principe de la modification automatique d'une seule cellule ?

en fait, ma question est : comment ajouter dans le code que tu m'as donnée un texte à ajouter avant la cellule concernée pour éviter d'avoir deux fois le même nom d'onglet, qu'Excel n'accepte pas.

merci d'avance.

EDIT : j'ai résolu moi-même, j'ai concaténer deux cellules pour obtenir ce que je voulais !

merci encore.

-- 16 Juin 2011, 10:19 --

Je comprend mieux ton premier message quand tu disais que cela ne fonctionne que sur la modification de la cellule G5 de la feuille concernée.

comment faire pour que le nom des onglets se modifient à partir des modifications apportées à la page de réglages

pour l'instant, j'ai fait une copie de cellule (ex réglages!A1) de la page réglage vers la feuille concernée (ex : G5 = Réglages!A1) et attribué le nom de l'onglet à la cellule. cela fonctionne bien quand je valide la cellule G5, mais quand je modifie la cellule A1 de ma page de réglages, cela ne modifie pas le nomde mes onglets, je dois de nouveau valider la cellule G5.

j'ai essayé en insérant dans le code un appel direct à ma page de réglages mais cela ne fonctionne pas non plus.

Merci de votre aide

Bonjour

Pourquoi ne pas faire la modification de ta page lors de la modification de ta cellule A1 de la page réglages

Cela implique que l'ordre des pages est important, ou alors travailler avec le codename de la feuille

Option Explicit
'
' Code à coller dans le code de la page Réglages
'
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Interdit As String
Dim I As Integer

  Interdit = "&:/\?*[]" & Chr(34)
  If Target.Count > 1 Then Exit Sub
  If Not Intersect(Range("A1"), Target) Is Nothing Then
    If Target <> "" Then
      For I = 1 To Len(Interdit)
        If InStr(Target, Mid(Interdit, I, 1)) > 0 Then
          MsgBox "Caractère interdit " & vbCr & vbCr & Mid(Interdit, I, 1) & vbCr & vbCr
          Exit Sub
        End If
      Next I

      '
      ' Avec le Codename
      '
      'Feuil3.Name = Range("A1")

      '
      ' Avec la position de la page
      '
      Sheets(3).Name = Range("A1")

    End If
  End If
End Sub

merci Banzai64 pour ta réponse qui fonctionne parfaitement !

je fais mon boulet mais comment multiplier l'opération sur plusieurs cellules et donc plusieurs onglet

j'ai essayé de copier / coller le code mais il me génère une erreur de compilation car il retrouve le même nom : Private Sub Worksheet_Change(ByVal Target As Range)

merci de m'éclairer.

bonne soirée

edit : j'arrive à faire deux cellules et deux onglets mais pas la suite ...

    Option Explicit
    '
    ' Code à coller dans le code de la page Réglages
    '
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Interdit As String
    Dim I As Integer

      Interdit = "&:/\?*[]" & Chr(34)
      If Target.Count > 1 Then Exit Sub
      If Not Intersect(Range("B3", "C3"), Target) Is Nothing Then
        If Target <> "" Then
          For I = 1 To Len(Interdit)
            If InStr(Target, Mid(Interdit, I, 1)) > 0 Then
              MsgBox "Caractère interdit " & vbCr & vbCr & Mid(Interdit, I, 1) & vbCr & vbCr
              Exit Sub
            End If
          Next I

          '
         ' Avec le Codename
         '
         'Feuil3.Name = Range("A1")

          '
         ' Avec la position de la page
         '
         Sheets(5).Name = Range("B3")
         Sheets(7).Name = Range("C3")

        End If
      End If
    End Sub

comment augmenter encore le nombre de cellules et d'onglets concernés par ce code ?

merci

Bonsoir

Une méthode

Tu dis

Colonne A : Feuille 1

Colonne B : Feuille 2

Colonne C : Feuille 3

etc....

Comme il n'y a qu'un changement de cellule à la fois tu ne renommes qu'une feuille à la fois

Sinon il faut envisager un autre code

Option Explicit
'
' Code à coller dans le code de la page Réglages
'
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Interdit As String
Dim I As Integer

  Interdit = "&:/\?*[]" & Chr(34)
  If Target.Count > 1 Then Exit Sub
  If Not Intersect(Range("B3", "C3"), Target) Is Nothing Then
    If Target <> "" Then
    If Target.Column > Sheets.Count Then
      MsgBox "Impossible de renommer une page inexistante"
      Exit Sub
    End If
      For I = 1 To Len(Interdit)
        If InStr(Target, Mid(Interdit, I, 1)) > 0 Then
          MsgBox "Caractère interdit " & vbCr & vbCr & Mid(Interdit, I, 1) & vbCr & vbCr
          Exit Sub
        End If
      Next I
      '
      ' Avec la position de la page
      '
      On Error Resume Next
      Sheets(Target.Column).Name = Target
      If Err.Number > 0 Then
        MsgBox "Une page avec le même nom existe déjà"
      End If
    End If
  End If
End Sub

Quelques garde-fous en prime

Merci Banzai64 pour ton code très efficace, notamment avec les garde-fous !

j'ai bien compris le principe => col A renomme mon premier onglet, col B mon 2ème ... etc !

sauf que c'est le "etc" qui me pose problème =>

mon code pour deux onglets :

      If Not Intersect(Range("B3", "C3"), Target) Is Nothing Then

mon code pour trois, dix ... onglets :

 :?:  :?:  :?:  :?:  :?:  :?:  :?: 

merci de ton temps et de ta patience.

bonne soirée

Bonsoir

Tu peux mettre (Range("A3:H3"),Target)

Ce qui te donnera 8 feuilles

Nota: La ligne 3 n'est pas primordiale, si tu veux passer par une autre ligne tu peux faire

(Range("A4828:H4828"),Target)

Bien sur il faudra saisir les infos dans la ligne 4828

Aussi si dans cette page tu n'as rien d'autre que la saisie des noms des pages, tu peux t'affranchir du test

If Not Intersect(Range("B3", "C3"), Target) Is Nothing Then

Cela sera la colonne qui donnera le numéro de la page

Bonsoir,

Merci beaucoup Banzai64.

bonne soirée et @bientot

Rechercher des sujets similaires à "nom onglet"