Renommer feuille par la valeur de deux cellules

Bonjour à tous

Le sujet du jour est simple mais je cale sur le fait de renommer la feuille "worksheet" par la valeur de deux cellules.

En position B5 et C5 j'ai deux valeurs.

Ces deux valeurs je voudrais qu'elles forment le nouveau nom de la feuille exemple si b5 = tarte et c5 aux fraises la feuille se nommerait " tarte aux fraises"

donc dans ma macro j'indique

ActiveSheet.Name = Cells(B5, C5) cela ne marche pas

Avec la formule ActiveSheet.Name = Range ("B5") cela marche seulement pour B5 donc je n'ai que la tarte pas les fraises ( frustration )

Une solution parmi vous ?

D'avance mille fois merci

papy Ben

Bonjour,

La première syntaxe n'est pas correcte, cells ne gère pas une plage mais une cellule (ex : cells(1,1) correspond à A1).

Une solution serait :

With ActiveSheet
    .Name = .Range("B5") & .Range("C5")
End With

La première syntaxe n'est pas correcte, cells ne gère pas une plage mais une cellule (ex : cells(1,1) correspond à A1).

Une solution serait :

With ActiveSheet
    .Name = .Range("B5") & .Range("C5")
End With

[/quote]

Coucou Pedro

Cette solution me semble bonne également mais inclue dans cette macro elle bugg

Sub Macro8()
'
' Macro8 Macro
'

'
    Range("A1:X36").Select
    Selection.Copy
    Sheets.Add After:=ActiveSheet
    ActiveSheet.Paste
    With ActiveSheet
    .Name = .Range("B5") & .Range("C5")
    End With
     Columns("D:E").Select
    Selection.EntireColumn.Hidden = True
    ActiveWindow.DisplayGridlines = False
    Sheets("Planning").Select
    Range("B4").Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Range("F6:X36").Select
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("B4").Select
End Sub

Une idée ?

papy Ben

Sans avoir une idée du contenu de votre fichier, j'aurais du mal à vous aider. Serait-il possible de joindre un fichier ?

Par ailleurs, votre macro est issue de l'enregistreur de macro, ce qui est une très mauvaise idée car l'enregistreur produit un code ni optimisé, ni robuste et avec de nombreuses instructions superflues (type ".select").

Sans avoir une idée du contenu de votre fichier, j'aurais du mal à vous aider. Serait-il possible de joindre un fichier ?

Par ailleurs, votre macro est issue de l'enregistreur de macro, ce qui est une très mauvaise idée car l'enregistreur produit un code ni optimisé, ni robuste et avec de nombreuses instructions superflues (type ".select").

Merci de votre attention

il est sur qu'un code VBa pour une macro serait plus convenable

Je pensait vraiment que cela serait plus simple sans passer par du code pur et dur et c'est pourquoi j'ai fait confiance au système D

voici en annexe le classeur qui gère un simple planning mensuel de disponibilité horaire.

Chaque pilote peut remplir la feuille planning avec ses heures et jour de disponibilité. Ce canevas se remet vide avec le bouton sauvegarde et engendre une création d'une feuille au nom et prénom et mois du pilote. c'est là qu'est l'os.....

Merci de votre collaboration.

Bav

Papy Ben

J'ai essayé de réécrire ton code :

Sub NvlleFeuille()

Dim F As Worksheet, NomF As String

Set F = Worksheets("Planning") 'Nom feuille à adapter
NomF = F.Range("B5") & F.Range("C5")
If NomExistant(NomF) Then
    MsgBox "Le nom " & NomF & " existe déjà !"
    Exit Sub 'Stop la macro ici si le nom existe déjà
End If
Sheets.Add After:=F 'Insertion d'une feuille vierge
ActiveSheet.Name = NomF 'Changement de nom
With Sheets(NomF) 'Tout objet commençant par "." se rapporte à cette feuille
    F.Range("A1:X36").Copy .Range("A1") 'Copier/coller la plage A1:X36
    Application.CutCopyMode = False 'Ne garde pas en mémoire la plage copiée
    .Columns("D:E").EntireColumn.Hidden = True 'Masque les colonnes D et E
    ActiveWindow.DisplayGridlines = False
End With
F.Range("B4").ClearContents 'Supprime le contenu de B4
With F.Range("F6:X36").Interior 'Modifie le format de cellule
    .Pattern = xlNone
    .TintAndShade = 0
    .PatternTintAndShade = 0
End With

End Sub
Private Function NomExistant(NomRef As String) As Boolean

'Fonction permettant de contrôler qu'un nom de feuille n'existe pas déjà

Dim Sht As Worksheet, Res As Boolean 'Déclaration des variables

For Each Sht In ThisWorkbook.Worksheets 'Parcourir les feuilles
    If Sht.Name = NomRef Then Res = True 'Si correspondance de nom, renvoie VRAI
Next Sht
NomExistant = Res

End Function

Je regarde en détail avec ton fichier.

A priori le code fonctionne, pour peu que tu adaptes un peu les plages indiquées dans le code. Par contre, la dernière partie détruit complètement la mise en forme de ton planning source. Je t'invite à revoir le code selon ce que tu souhaites réellement faire.

A priori le code fonctionne, pour peu que tu adaptes un peu les plages indiquées dans le code. Par contre, la dernière partie détruit complètement la mise en forme de ton planning source. Je t'invite à revoir le code selon ce que tu souhaites réellement faire.

Merci beaucoup

dans mon classeur, la ligne ActiveSheet.Name = NomF de la macro bugg étrangement sinon le reste semble ok

Je regarde encore un peu tout ça et adapterais si nécessaire

Encore merci de ton précieux coup de main.

Papy Ben

A priori le code fonctionne, pour peu que tu adaptes un peu les plages indiquées dans le code. Par contre, la dernière partie détruit complètement la mise en forme de ton planning source. Je t'invite à revoir le code selon ce que tu souhaites réellement faire.

Merci beaucoup

dans mon classeur, la ligne ActiveSheet.Name = NomF de la macro bugg étrangement sinon le reste semble ok

Je regarde encore un peu tout ça et adapterais si nécessaire

Encore merci de ton précieux coup de main.

Papy Ben

Dans ton fichier test, les infos sont dans la ligne 4 de la feuille. J'avais écrit le code sur la base des infos de départ, à savoir la ligne 5. Il te suffit de changer ou le code, ou de placer les infos de nommage en ligne 5.

Merci Beaucoup Pedro, j'ai mis en route ton code adapté à ma disposition en remaniant juste la largeur des cellules copiées et en ajoutant le mois au nom de feuille.

Je te souhaite une très belle journée.

papy Ben

Merci du retour et d'avoir validé le sujet !

Bonne journée également.

Rechercher des sujets similaires à "renommer feuille valeur deux"