Renommer onglet depuis une cellule d'une autre feuille

Bonjour,

Je suis novice en visual et je ne parviens pas à faire ceci :

J'ai un feuille de récapitulation dans laquelle j'entre des noms d'entreprises. J'aimerai que l'onglet d'une autre feuille puisse se renommer automatiquement depuis cette feuille de récapitulation.

HELP

Bonjour

Merci de mettre un fichier exemple. Ce sera plus facile de donner directement la bonne solution

Cordialement

Voici le fichier

Le principe :

Je remplace "entreprise 1" par le nom d'une entreprise dans la feuille "Récapitulation". C'est automatiquement reporté sur l'autre feuille en haut à gauche cellule "A6". J'ai mis dans VBA le code pour que l'onglet prenne le nom de la cellule A6 mais je suis obligé d'aller cliquer sur la cellule A6 pour que le nom de l'onglet change.

J'aimerai que le nom de l'onglet se mette à jour automatiquement. Est-ce possible et comment ?

Merci de votre aide.

Re

j'aimerai que le nom de l'onglet se mette à jour automatiquement. Est-ce possible et comment ?

il n'y aura que deux feuilles dans le fichier ?

Crdlt

Non le but est de créer un document vierge dans lequel on pourra ajouter jusqu'à 20 entreprises. Je pense que le nom de l'onglet devrait faire référence à la cellule de la page récapitulation et non à la "A13 de la même feuille.

re

le but est de créer un document vierge

Faut un document modèle dans le fichier alors ? et créer la feuille sur base de l'entreprise encodée dans la feuille récapitulation

Désolé mais je dois comprendre comment cela fonctionne car renommer un onglet est facile mais ensuite une fois l'entreprise existante

Exemple : si entreprise 1 existe, vous avez une feuille entreprise 1. Vous ajoutez l'entreprise Stanley Sécurity dans la feuille récapitualtion. Le code doit faire quoi ? remplacer le nom de l'onglet entreprise 1 ?

Le document vierge comporte la feuille de récapitulation + une feuille d'entreprise, le tout vierge

Quand j'entre la 1ere entreprise cela remplis automatiquement les informations dans la feuille "entreprise 1". Du coup, l'onglet de cette feuille doit prendre le nom de l'entreprise. Depuis sa cellule A6 ou depuis la cellule A11 de la feuille de récapitulation.

Quand je dois ajouter une 2ème entreprise, j'entre le nom par ex: Stanley Security et le type d'installation et j'active une macro en cliquant sur le bouton "+", qui copie la feuille type "entreprise 1" et reporte les deux montants dans la feuille de récapitulation. La nouvelle feuille doit reprendre le nom inscrit (Stanley Security) et le type d'installation et j'aimerai que l'onglet prenne le nom de l'entreprise car quand il y a 15 entreprises dans le fichier il faut pouvoir les identifier sur les onglets.

Voici la macro en question que j'affecte au bouton "+" :

Ajout_entreprise_2 Macro

' Ajouter une entreprise

'

'

Sheets("Entreprise 1").Select

Sheets("Entreprise 1").Copy After:=Sheets(2)

Range("A6").Select

ActiveCell.FormulaR1C1 = "=Récapitulation!R[6]C"

Range("D6").Select

ActiveCell.FormulaR1C1 = "=Récapitulation!R[6]C[-2]"

Range("A6").Select

Selection.Copy

Sheets("Entreprise 1 (2)").Select

Application.CutCopyMode = False

Sheets("Entreprise 1 (2)").Name = "A6"

Sheets("Récapitulation").Select

Range("D12").Select

ActiveCell.FormulaR1C1 = "="A6"!R[134]C[1]"

Range("E12").Select

ActiveCell.FormulaR1C1 = "='Stanley Sécurity'!R[136]C"

Range("E13").Select

End Sub

Si vous préférez on peut se téléphone ou sur skype par ex. Je ne suis peut-être pas suffisamment claire dans mes explications

Re,

Sur base des explications, faire ceci :

  • Supprimer le code qui se trouve dans la feuille Entreprise 1
  • Placer le code ci-dessous dans la feuille Récapitulation
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A11:A30")) Is Nothing Then
Sheets("Entreprise 1").Copy after:=Sheets(Sheets.Count)
On Error Resume Next
ActiveSheet.Name = Target.Value
If Err > 0 Then MsgBox "Veuillez vérifier que la feuille " & Range("A" & Target.Row) & " existe": Exit Sub
With Sheets(Target.Value)
    .Range("A6") = Target
    .Name = Target.Value
    .Range("E9") = Range("D" & Target.Row)
    .Range("E13") = Range("E" & Target.Row)
End With
End If
End Sub

Le code va :

  • créer une nouvelle feuille sur base de la feuille Entreprise 1
  • Mettre à jour la cellule A6, E9 et E13
  • Renommer la feuille nouvellement créée

Le bouton + (créer) et code associé ne servent plus à rien dans ce cas. (A éviter d'ailleurs les objets sur les feuilles. On a toujours un problème à un moment ou un autre avec les codes.

Si ok, cliquez sur le v vert à coté du bouton EDITER lors de votre réponse pour clôturer le fil

Cordialement

oulaaa ! c'est presque parfait !!!

Problème si la copie se fait juste après avoir entré le nom de l'entreprise je n'ai pas le temps d'entrer également le type d'installation "B12" qui doit apparaitre également sur la nouvelle feuille en "D6"

Il manque également le report des cellules E146 sur Récapitulation D12 et E148 sur Récapitulation E12

Il y a encore un autre problème c'est que pour la deuxième entreprise que l'on entre dans la récapitulation, il ne le type d'installation qui apparait dans la feuille est celle de la 1ere entreprise.

Le bouton "+" m'aidait à faire les reports des montants dans la feuille de récapitulation en enregistrant une macro. Du coup si j'enlève ce bouton, je ne sais pas comment déclencher la macro. Mais dans votre façon de faire le simple "enter" déclenche le code, ce qui est parfait.

Bonjour

Problème si la copie se fait juste après avoir entré le nom de l'entreprise je n'ai pas le temps d'entrer...

Le bouton "+" m'aidait à faire les reports des montants dans la feuille de récapitulation en enregistrant une macro.

Ah oui, ces indications n'étaient mentionnées au départ.

On peut laisser le bouton + mais comme je dis souvent les objets sur les feuilles posent soucis un jour ou l'autre

Vu que l'on doit se trouver sur la ligne pour active le code, on pourrait utiliser le logo DSSA en haut en lieu et place. Ce bouton servirait à exécuter le code. L'avantage reste que l'on supprime tous ces boutons + pour n'avoir qu'un seul

Bon cela ou pas ?

Bonjour,

Je vais me remettre dessus dans la journée et vous dirai. Est-ce qu'il y a moyen de créer la nouvelle feuille après avoir remplis le type d'installation en lieu et place du nom de l'entreprise ?

Merci

Re

Oui bien sûr c'était mon intention mais au vu des nouvelles indications le mieux est de travailler avec un bouton. Cela permet de garder le contrôle

Voici le fichier à jour avec la présentation. Je ne comprends pas pourquoi il ne veut pas m'enregistrer sous le format xls depuis que j'ai mis les dégradés rouge !!

J'ai un message d'erreurs

Bonjour Dan

Voici donc ce que je souhaiterai automatiser :

1. La feuille pour la 1ere entreprise existe et sera le modèle pour toutes les nouvelles. Une fois le nom de la 1ere entreprise et le type d'installation entrés, la feuille "entreprise 1" se met à jour mais je dois modifier le nom de l'onglet pour qu'il prenne le nom de l'entreprise.

Je pense que la feuille "entreprise 1" devrait se nommer "modèle" et ne pas être utilisé pour la 1ère entreprise. Il faut donc dès la saisie du nom et type d'installation de la 1ere entreprise sur la page de récapitulation, créer une nouvelle feuille. Il faut que sur la nouvelle feuille créée, les deux cellules (E139 et E141) soient transposés dans les deux cellules de la récapitulation situés à la suite du type d'installation. Est-ce possible en créant les nouvelles feuilles et ce pour chaque nouvelle entreprise, sachant que ce sera chaque fois une ligne plus bas dans le tableau de récapitulation ?

Merci de votre aide

Re

Remplacez le code donné par celui ci-dessous

Private Sub Worksheet_Change(ByVal Target As Range)
'Macro Dan
If Not Application.Intersect(Target, Range("A11:A30,B11:B30")) Is Nothing Then
If Range("A" & Target.Row) = "" Or Range("B" & Target.Row) = "" Then GoTo fin
Sheets("Entreprise 1").Copy after:=Sheets(Sheets.Count)
On Error Resume Next
ActiveSheet.Name = Range("A" & Target.Row).Value
If Err > 0 Then MsgBox "la feuille " & Range("A" & Target.Row) & " existe déjà !": Exit Sub
With Sheets(Range("A" & Target.Row).Value)
    .Range("A6") = Range("A" & Target.Row)
    .Range("D6") = Range("B" & Target.Row)
    Sheets("Récapitulation").Range("D" & Target.Row).FormulaR1C1 = "='" & ActiveSheet.Name & "'!R146C5"
    Sheets("Récapitulation").Range("E" & Target.Row).FormulaR1C1 = "='" & ActiveSheet.Name & "'!R147C5"
End With
End If
Exit Sub
fin:  MsgBox "Le nom de l'entreprise ou le type d'installation est manquant"
End Sub

Le code créera la feuille si la colonne A et B sont complétée

La feuille entreprise 1 est considérée comme modèle

Crdlt

Bonjour Dan,

Merci beaucoup mais ça ne fonctionne pas. Voici ci-joint le fichier mis à jour avec toutes les fonctionnalités que je souhaitais avoir. Evidemment je l'ai fait avec une série de boutons sur la page récap. L'idéal aurait été de ne pas avoir de boutons et de créer les pages "entreprise" avec la touche Enter.

Si jamais tu arrives à optimiser ça serait vraiment bien mais sinon je me contenterai de ça.

Encore merci pour ton aide.

Olivier

re

Merci beaucoup mais ça ne fonctionne pas.

Si j'ai tout de même testé la solution avant de poster. Cela fonctionne en fonction des explications données

En attendant ton nouveau fichier, vois ton fichier joint avec le code proposé.

Pour tester, tapes "Installation" (ou autre chose) dans B12 de la feuille Récapitulation

Crdlt

Rechercher des sujets similaires à "renommer onglet feuille"