Renommer des onglets avec des contenus de cellules

Bonjour,

je souhaiterai pouvoir renommer des onglets à partir d'une liste contenue dans une feuille de calcul ( Feuil1 ).

Le cahier des charges est le suivant :

  • Extraire le contenu d’une cellule d’un champ ( dont le nombre de cellules contenant des informations peut être défini manuellement ), ce contenu est situé dans la première feuille de calcul du classeur,
  • Utiliser ce contenu pour renommer un onglet d’une feuille de calcul existante.
  • Renommer le bon nombre d’onglets en fonction du nombres de cellules contenant une information ( nombre de cellules pouvant être limité à 30 ). Exemple : si j’ai 10 cellules du champ contenant chacune une information ( un nom ), la macro devra renommer 10 onglets.

Je remercie d’avance toute l’aide apportée.

Pascal

Bonjour JLP, bonjour le forum,

jlp_007 a écrit :

Exemple : si j’ai 10 cellules du champ contenant chacune une information ( un nom ), la macro devra renommer 10 onglets.

C'est quoi un champ pour toi ? une plage nommée ?

Oui c'est ça, une plage de cellule.

Bonjour,

Ton problème est un peu plus complexe qu'il n'y paraît à cause du nom des onglets qui ne supporte pas certains caractères ou des doublons (je n'ai géré que les doublons). Et surtout, tu donnes tellement peu d'indications. C'est impressionnant comme les demandeurs sont flemmards !...

Le code est à placer dans le classeur contenant la plage nommée. Il faut que les deux classeurs soient ouverts pour qu'il fonctionne correctement.

Code commenté à adapter :

Sub Macro1()
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim CR As Workbook 'déclare la variable CR (Classeur à Renommer)
Dim PN As Range 'déclare la variable PN (Plage Nommée)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim NC As Byte 'déclare la variable NC (Nombre de Cellules)
Dim NO As Byte 'déclare la variable NO (Nombre d'Onglets)
Dim MES As String 'déclare la variable MES (MESsage)

Set CS = ThisWorkbook 'définit le classeur source CS
Set CR = Workbooks("Le Classeur à Renomer.xls") 'définit le classeur à renommer CR (tu adapteras le nom évidement)
CS.Activate 'active le classeur source
Set PN = Range("Ta_Plage_Nommée") 'définit la palge nommée PN (tu adapteras évidement)
NC = PN.Cells.Count 'définit le nombre de cellules (donc de noms) de la plage nommée (tu adapteras le nom évidement)
NO = CR.Sheets.Count 'définit le nombre d'onglets du classeur à renommer CR
If NC > NO Then MES = "Il y a plus de noms que d'onglets à renommer !" 'si le nombre de cellules est supérieur au nombre d'onglets, définit le message MES
If NO > NC Then MES = "Il y a plus d'onglets que de noms, les derniers ne seront pas renommés !" 'si le nombre d'onglets est supérieur au nombre de cellules, définit le message MES
If NC <> NO Then MsgBox MES 'si les deux nombre sont différent, affiche le message MES
For I = 1 To PN.Cells.Count 'boucle sur toutes les cellules de la palge nommé
    On Error Resume Next 'gestion des erreurs (en cas d'erreur passe a la ligne suivante)
    'renomme l'onglet I du classeur CR avec le nom de la cellule I (si non vide) de la plage nommée PN (génère une erreur si le nom existe déjà)
    If PN(I).Value <> "" Then CR.Sheets(I).Name = PN(I).Value
    If Err <> 0 Then 'condition : si une erreur a été générée
        Err.Clear 'supprime l'erreur
        'si les deux variables NC et NO sont églales affiche un message
        MsgBox "Un onglet portant ce nom existe déjà ! Impossible de renommer l'onglet " & I & " !"
    End If 'fin de la condition
Next I 'prochaine cellule de la plage nommée PN
End Sub

Waou, merci pour cette macro.

je vais tester ça ce WE, avec grand plaisir.

pour ce qui est du cahier des charges, je ne souhaitais pas non plus être trop restrictif pour la personne qui apporterait des réponses.

Encore merci à toi ThauThème.

Bonjour ThauThème,

encore merci pour la macro, mais je me rends compte que je n'ai pas de connaissances suffisantes , lexique principalement, pour adapter ta proposition de macro.

Le plus simple c'est de laisser le fichier avec le message.

Les noms sont dans la colonne A, cellules A4 et A5 ( pour commencer, j'adapterai après )

Prendre ces noms qui serviront à renommer les onglets présents.

D'avance merci pour ton aide.

Pascal

Re,

Désolé Jlp, mais au départ tu parles de deux fichiers et d'une plage nommée tu mets en pièce jointe un seul fichier sans plage nommée...

Je ne comprends pas ce que tu veux dire par : laisser le fichier avec le message...

Effectivement, je vais préciser mon souhait par rapport au fichier joint

je souhaite qu'une macro puisse renommer tous les onglets du fichier ( sauf le premier ) en prenant un nom contenu dans le champ de la feuille de calcul Fr_01, ce champ commençant par la cellule A4 et se terminant par la cellule A34.

Il faut idéalement que le nombre d'onglets renommés corresponde au nombre de cellules contenant un nom.

N'hésite pas si tu as besoin de plus de détails.

Encore une fois merci pour ton aide.

Au plaisir.

Pascal

Re,

Super exemple avec 2 noms seulement et 4 onglets masqués. Dernier code proposé après je passe la main...

Sub Macro1()
Dim O As Worksheet
Dim PL As Range
Dim I As Integer

Set O = Sheets("Fr_01")
Set PL = O.Range("A4:A" & O.Cells(Application.Rows.Count, 1).End(xlUp).Row)
For I = 1 To PL.Cells.Count
    Sheets(I + 1).Name = PL(I).Value
Next I
End Sub
Rechercher des sujets similaires à "renommer onglets contenus"