Renommer des feuilles Excel par rapport à des cellules

Bonjour,

Je souhaiterai renommer des feuilles (60 environs) par rapports à des cellules,de "C2 à C61", qui figurent sur une seul feuille nommée "Agents".

J'ai essayé avec plusieurs macros mais je pense que je n'ai pas la bonne syntaxe.

Je vous mets un exemple de VBA, ci-dessous, trouvé sur le forum.J'ai essayer de modifier mais je ne trouve pas la solution.

Je vous mets également une copie d'écran de mon tableau.

Merci pour votre aide

Sub RenommerFeuilles()
Dim NF, i%, maxf%
NF = Worksheets(1).Range("C2:C61").Value
maxf = Worksheets.Count
If maxf > 21 Then maxf = 21
Application.ScreenUpdating = False
For i = 2 To maxf
Worksheets(i).Name = NF(i - 1, 1)
Next i
End Sub

image

Bonjour

Option 1 (ma préféré) :

Tu ne renommé pas de feuille existante mais tu copie une feuille template, dis moi si tu as besoin d'aide.

Option 2 :

tu n'as pas renseigné ta version d'excel, mais avec un peu de chance tu as une formule qui doit ressembler à 'cellule' de mémoire qui permet de récupérer le nom d'une feuille. Fais la pointe sur tes feuilles 1,2,3 etc. et dans ton VBA récupère le nom de chaque feuille.

Option 3 :

Je ne suis pas sûr mais essaie de convertir tes nombres en text pour le nom de la feuille peut être que c'est le type qui bloque.

Belle journée

Bonjour à tous,

Les remarques de Paul sont intéressantes, notamment sur le template pour automatiser la création de nouvelles feuilles (plus robuste). Une proposition sur la structure actuelle ci-après. A insérer dans un module et lancer le sub RenommerFeuilles.

Private Function WSExists(shtName As String, Optional comp As VbCompareMethod = vbTextCompare) As Boolean
  Dim ws As Worksheet
  For Each ws In ThisWorkbook.Worksheets
    If StrComp(ws.Name, shtName, comp) = 0 Then
      WSExists = True
      Exit Function
    End If
  Next ws
End Function

Public Sub RenommerFeuilles()
  If Not WSExists("Agents") Then Exit Sub

  Dim shtNamesLists As Variant
  shtNamesLists = ThisWorkbook.Worksheets("Agents").Range("C2:C61").Value

  Dim indexOfAgents As Long
  Dim i As Long
  With ThisWorkbook.Worksheets
    For i = 1 To .Count
      If .Item(i).Name = "Agents" Then
        indexOfAgents = i
        Exit For
      End If
    Next i
  End With

  Dim shtName As Variant
  For Each shtName In shtNamesLists
    If Not WSExists(CStr(shtName)) Then
      ' renommage feuille selon index par rapport à la feuille agents
      ' on suppose que le nom de feuille "shtName" est un entier
      On Error Resume Next
      ThisWorkbook.Worksheets.Item(indexOfAgents + CLng(shtName)).Name = shtName
      On Error GoTo 0
    End If
  Next shtName
End Sub

Bonjour à vous,

Et merci de prendre du temps pour répondre à ma demande.

En ce qui concerne ma version d'Excel c'est une version Office Professionnal plus 2021.

Malheureusement je ne connais pas le tremplate dans Excel.

Saboh, j'ai essayé ta formule mais rien ne se passe.

Je vous joint le fichier Excel ce sera peut être plus facile pour vous.

9commande-1.zip (1.08 Mo)

Bonne journée

Bonjour,

J'ai oublié de vous demander une chose.

Dans le fichier joint dans mon message précédent j'ai :

-1 Feuilles "RECAP" qui me sert à faire la somme totale du nombre de produits à commander par rapport aux feuilles de 1 à 50.

-1 feuille "AGENTS" qui me sert à faire une liste d'agents afin de mettre le nom des agents sur les feuilles de 1 à 50

la cellule B1 de la feuille "AGENT met le n° de Bt dans la cellule H7 de la feuille 1

la cellule C1 de la feuille "AGENT met le nom de l'agent dans la cellule D6 de la feuille 1

la cellule D1 de la feuille "AGENT met le secteur de travail dans la cellule D7 de la feuille 1

la cellule E1 de la feuille "AGENT met l'adresse de livraison dans la cellule F6 de la feuille 1

-Des feuilles numérotés de 1 à 50 ( car je ne sais pas le nombre de feuilles qu'il me faut pour passer mes commandes, donc j'en ai mis 50 par défaut).

Est-il possible de créer une macro avec laquelle je pourrais sélectionner le nombre de feuille à mettre en place (la feuille à dupliquer est la feuille 1) en fonction

du nombre d'agents qui souhaitent faire une commande.

Par exemple si 10 agents passent une commande je devrais dupliquer la feuille 1 , 9 fois, mais sans perdre si possible les liens entre la feuille "AGENTS" (qui renseigne le nom de l'agent, l'adresse de livraison, le secteur de travail et le n° de Bt) et également avec la feuille " RECAP" qui me donne le total des produits à commander.

J'espère avoir été assez clair dans mes demandes.

Bonne journée

Hello

Les templates c'est pas un concepte spécifique à excel juste un principe générale.

Tu peux copier la feuille 1 et la renommer template

Sub CopierRenommerTemplate()
    Dim wsAgents As Worksheet
    Dim wsTemplate As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim newSheet As Worksheet
    Dim nom As String

    Set wsAgents = ThisWorkbook.Sheets("Agents")
    Set wsTemplate = ThisWorkbook.Sheets("template")

    lastRow = wsAgents.Cells(wsAgents.Rows.Count, "C").End(xlUp).Row

    For i = 2 To lastRow
        nom = Trim(wsAgents.Cells(i, "C").Value)
        If nom <> "" Then
            ' Vérifie que la feuille n'existe pas déjà
            On Error Resume Next
            Set newSheet = ThisWorkbook.Sheets(nom)
            On Error GoTo 0

            If newSheet Is Nothing Then
                wsTemplate.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
                Set newSheet = ActiveSheet
                On Error Resume Next
                newSheet.Name = nom
                If Err.Number <> 0 Then
                    MsgBox "Nom de feuille invalide ou déjà existant: " & nom
                    Err.Clear
                End If
                On Error GoTo 0
            End If
        End If
        Set newSheet = Nothing
    Next i
End Sub

Bonjour Paul,

Merci encore pour ton aide.

Ce VBA est genial pour créer des feuilles et les nommées directement.

Malheureusement dans mon cas je perds les liaisons pour mettre les noms , les n° de BT etc..... directement sur la feuille .

Mais je garde ceci de coté car je pense que cela me reservira pour créer d'autres projet dans le futur.

Connais tu juste un VBA pour renommer les feuilles directement via un tableau qui se trouve sur ma feuille "Agents".

Au moins je n'aurai pas à renommer les feuilles une par une.

Merci encore pour ton aide

Hello

Dans ce cas la réponse de sabot devrait répondre à ton besoin 😉

Belle journée

Bonjour,

Malheureusement le vba de Paul ne fonctionne pas. J'ai essayé de le lancé plusieurs fois mais rien ne se passe.

Bonsoir Hervé,

Mon VBA sert a créer des pages sur la base d'un template.

En revanche celui de "saboh12617" permet de renommer tes feuilles, est-ce que tu l'as essayé ? Oublie le miens

Bonjour Paul,

Je ne vais pas oublié ton VBA car je sais qu'il me sera utile plus tard.

Oui j'ai essayé le VBA de saboh12617 dans le tableau que j'ai mis en ligne mais malheureusement rien ne se passe, aucune modification visibles.

bonjour le fil,

un essai, mais il faut expliquer comment réagir si le nom d'une feuille existe déjà, juste mentionner ???

10commande-1.zip (652.97 Ko)

Bonjour,

Merci pour ton aide, mais rien ne se passe quand je lance la macro.

Bonne journée

Bonsoir

Regarde si cela te convient

s'il y a quelque chose qui ne va pas dis le

Bonjour,

Et bien là je reste sans voix. Merci beaucoup Joco.

Je vais essayer de le tester un peu plus longtemps, mais je dois dire que pour l'instant tout répond à mes attentes.

Encore un grand merci à tous pour votre aide et merci Joco pour cette solution.

Bonne journée

Bonjour

Je te remet un exemplaire du fichier sur l'autre il y a une erreur sur une formule

Bonjour Joco,

L'erreur se situait à quel niveau?

Bonne journée

Bonjour

C'est au niveau de la feuille Modele cellule D7 voici la bonne formule:

=SIERREUR(RECHERCHEV(D6;Agents!C2:D1000;2;FAUX);"")

quand tu auras mis cette formule pense à cliquer sur le bouton (Tout mettre à jour) de la feuille RECAP

Bonne Journée

Rechercher des sujets similaires à "renommer feuilles rapport"