Modification automoatique du nom de l'onglet

Bonjour,

Je bloque depuis quelques jours : Je voudrais changer automatiquement le nom d'un onglet (un nom propre) en fonction d'une cellule intégrée dans une autre feuille (liste de noms propres). Existe-t-il un moyen (compréhensible pour la néophyte que je suis) ?

Merci d'avance pour vos réponses !

Bonsoir,

Clique droite sur l'onglet de la feuille à renommer puis choisis "visualiser le code". Ensuite place le code ci-dessous :

Private Sub Worksheet_Activate()
ActiveSheet.Name = Sheets("Feuil2").Range("A1")
End Sub

avec :

  • Feuil2 : le nom de l'onglet contenant la cellule de référence
  • A1 = la cellule contenant la donnée pour renommer ta feuille.

Après avoir changé A1, clique sur l'onglet à renommer pour changer son nom.

Amicalement

Dan

Merci Dan pour ta rapide réponse : ça fonctionne !

Ce genre de code existe-t-il pour le même principe mais entre deux classeurs différents : nom d'un onglet à modifier en fonction d'une liste dans un autre classeur ?

Lo

Re,

Cela peut être plus complexe mais essaie ce code :

Private Sub Worksheet_Activate()
ActiveSheet.Name = Workbooks("Classeur2").Sheets("Feuil2").Range("A1")
End Sub

Le fichier "classeur2" doit être ouvert.

Le changement se fera de la même manière que dans la proposition précédente. Donc à la sélection de la feuille.

Dan

Mille mercis Dan :

la complexité fonctionne !

Ce code sera-t-il à répéter à chaque création d'un nouvel onglet (à partir d'un nouveau nom de la liste) ou existe-t-il un moyen de fabriquer autant d'onglet qu'il y a de noms sur ma liste ?

Lo

Re,

Tel quel, le code est valable pour un onglet. Chaque fois que tu changeras le nom dans ta liste, l'onglet changera de nom. Rien de plus.

existe-t-il un moyen de fabriquer autant d'onglet qu'il y a de noms sur ma liste ?

oui. Mais à lire cette question, ce serait mieux que tu expliques tout ce que tu veux faire car le code va être , si je ne me trompes, assez différent.

Mets ton fichier en ligne avec l'explication claire de ce que tu veux faire, ce sera plus facile.

Dan

En résumé :

J'ai créé un classeur "récapitulatif général", comprenant un listing.

Dans un autre classeur "6A", je dois créer autant de feuilles que de noms sur mon listing (au bout du bout du compte, plus de 250 noms...).

Existe-t-il une possibilité de simplifier la tâche ?

Encore merci pour les solutions déjà trouvées

3376a.xlsm (78.73 Ko)

Re,

Déso mais je ne sais pas lire ton fichier au format 2007...

En voyant ton fichier Recap, il s'agit de créer un classeur (ou le classeur est déjà créé ?) avec des onglets correspondant au noms en regard des 6A de contenu dans la colonne A ?

Dan

Re,

C'est le même fichier qu'ici ??? -> https://forum.excel-pratique.com/excel/inserer-une-donnee-recherchee-dans-un-autre-classeur-t15577.html

Si oui pas besoin de poster à deux endroits du forum. Je prendrai celui-là

Dan

Je joins le fichier en .xls

Dans le classeur Récap, le listing a été importé depuis un logiciel externe.

Dans le classeur 6A, j'ai commencé à créer les feuilles (ici nombre réduit à cause du poids) en fonction du listing en colonne B de Récap (listing filtré pour réduire le nombre de données visibles).

Le but à terme sera de modifier seulement le listing de Récap, avec une modif automatique des onglets dans le classeur 6A (et d'autres classeurs reliés).

Merci

2826a.zip (39.73 Ko)

-- 13 Fév 2010, 16:36 --

C'est le même fichier qu'ici ??? -> https://forum.excel-pratique.com/excel/inserer-une-donnee-recherchee-dans-un-autre-classeur-t15577.html

Si oui pas besoin de poster à deux endroits du forum. Je prendrai celui-là

Oups : Trop tard...

Re,

Bon tu n'as pas vu mon post précédent là ...

Evite de multiplier les fichiers ci et là pour ne pas alourdir le forum. Merci.

Avancer sur le sujet, il faut que je sache comment tu procèdes car la question de ce fil était à priori simple mais là c'est plus complexe à réaliser.

  • Tes fichiers 6A, 4A etc... sont déjà créés à l'avance ou pas ?
  • Si oui à la question précédente, je suppose que tu dois, au départ, avoir une feuille "Modèle" dans chaque fichier ?

Pour faire simple, le mieux serait d'avoir au départ des fichiers avec une seule feuille appelée "Modèle" et de là, créer par fichier les nouvelles feuilles pour chaque nom.

Exemple : tu crées le fichier 6A avec une feuille, appelée "Modèle". Ensuite on ouvre le fichier "Recap", puis tu sélectionnes la classe 6A et le code va créer les noms à partir de la feuille "Modèle".

Dan

Edit Dan : A moins que toutes les feuilles soient déjà créées manuellement dans le fichier 6A ???

Bon tu n'as pas vu mon post précédent là ...

Evite de multiplier les fichiers ci et là pour ne pas alourdir le forum. Merci.

Re-oups...

- Tes fichiers 6A, 4A etc... sont déjà créés à l'avance ou pas ?

Les fichiers ne sont pas crées. Ils le seront par la suite, à partir du listing de Récap.

Pour faire simple, le mieux serait d'avoir au départ des fichiers avec une seule feuille appelée "Modèle" et de là, créer par fichier les nouvelles feuilles pour chaque nom.

C'est effectivement une démarche simple qui me conviendrait le mieux !

Exemple : tu crées le fichier 6A avec une feuille, appelée "Modèle". Ensuite on ouvre le fichier "Recap", puis tu sélectionnes la classe 6A et le code va créer les noms à partir de la feuille "Modèle".

Là je ne comprends pas bien : j'insère un code où ?

Partons du fichier 6A que j'ai envoyé. Si le 1er onglet est la feuille modèle, comment créer automatiquement les autres à partir du listing ?

Merci de tes lumières dans ma réflexion ténébreuse...

Lo

Re,

Voici un code à essayer et dans lequel j'ai supposé que :

  • Les fichiers 6A, 4A etc.. sont déjà tous créés et contiennent uniquement une feuille nommée "Modèle"
  • Les fichier 6A, 4A etc ...sont tous dans le même répertoire que ton fichier RECAP
Sub test()
'Macro Dan pour lolocerise - XL Pratique le 13/02/2010
Dim plage As Range, cel As Range
Dim ref As String
With ThisWorkbook
Set plage = .ActiveSheet.Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)
ChDir .Path
End with
ref = Application.GetOpenFilename()
Workbooks.Open ref
ref = ActiveWorkbook.Name
For Each cel In plage
If ThisWorkbook.ActiveSheet.Cells(cel.Row, 1) = Left(ref, 2) Then
With Workbooks(ref)
    .Worksheets("Modele").Copy After:=Sheets(Worksheets.Count)
    .ActiveSheet.Name = ThisWorkbook.ActiveSheet.Cells(cel.Row, 2)
End With
End If
Next
End Sub

Le code est à placer dans le fichier RECAP.

Pour plus de facilité, associe ce code à un bouton sur ta feuille RECAP.

Clique sur ce bouton et choisis le fichier à ouvrir et qui sera complété (6A ou 4A ou ...).

On pourrait aussi ajouter une instruction qui fermerait automatiquement le fichier complété (6A,4A etc..).

Amicalement

Dan

Waou !! Je vais essayer...

J'ai également une manip de Amadéus sur le feu... Et ça bouillonne.

Je te tiens au courant de mes avancées.

Une nouvelle fois d'infinis mercis Dan !!

Lo

-- 14 Fév 2010, 17:59 --

C'est à nouveau la néophyte empêtrée dans ses problématiques et qui devient chauve à force de s'arracher les cheveux pour comprendre et tenter d'appliquer...

J'ai essayé le code mais je ne dois sûrement pas bien m'y prendre... Rien ne se passe... D'autant plus que je ne sais pas comment activer le bouton de commande créé.

En fait, je jongle entre cette problématique et celle que j'ai soulevée dans ma question "Insérer une donnée recherchée dans un autre classeur" et je suis un peu dépassée.

Je parviens à effectuer les 1ers codes indiqués, mais pas ceux qui permettent l'automatisation en série...

S'il vous reste du temps pour m'aider je joins à nouveau les docs, mais avec les commentaires pour expliquer exactement mon projet. Peut-être n'est-ce pas possible dans la mesure où les liaisons entre les deux classeurs forment une boucle :

1) point de départ : le classeur Recap qui comprend plusieurs listes (en B,C et D).

2) Objectif 1 : Créer dans le classeur "6A" une feuille pour chaque nom de la liste du classeur Recap, à partir du modèle.

3) Chaque nouvelle feuille devra intégrer automatiquement les nom, prénom et date de naissance dans les cellules voulues (y compris renommer l'onglet)

4) Point d'arrivée : quand la feuille sera complétée avec des données futures (tableaux), je voudrais que ces données soient exportées automatiquement vers le classeur Récap pour permettre une vue d'ensemble.

Voilà...

Et je ne parle même pas de macros (j'ai découvert ce mot hier sur ce forum)...

Si l'un d'entre vous à une solution (pour le lapin de 3 semaines que je suis avec Excel, une solution pas à pas serait l'idéale, mais j'ai peur d'abuser) je le remercie VRAIMENT d'avance !

Lo

566a-avec-modele.rar (36.37 Ko)

Re,

D'abord je ne vois pas de bouton dans ton fichier RECAP et la macro n'est pas bien placée dans ton fichier (tu dois l'enlever de là)

Fais ceci dans le fichier RECAP :

  • ALT + F11 sur ton clavier accéder à VBA
  • Dans VBA, vas dans INSERTION et choisis MODULE
  • Dans la fenêtre de droite, place la macro TEST que je t'ai donnée hier
  • Ferme VBA et enregistre ton fichier
  • dessine ton bouton par Affichage / Barre d'outils / Formulaire
  • Une fois le bouton dessiné, cela t'ouvre une boite dans laquelle tu verras la macro TEST
  • Sélectionne la macro TEST puis OK
  • enregistre ton fichier

Fais un test. Cela résoud les pd de 1 à 3. Restera le 4 à voir.

Dan

C'est MAGIQUE !!!!!!!!!!!!!!!!!!!!!

Tous mes onglets se sont créés en un rien de temps !

En revanche, les informations ne sont pas présentes à l'intérieur des docs (nom, prénom et naissance).

Y a-t-il une manip à faire sur le document modèle ?

Lo

Bonjour

Pour mettre le Nom Prénom et la date de naissance (Le pb est différent de celui du post précédent, puisque nous pouvons profiter de la création des feuilles)

Sur la Récap, tu nommes Identité la formule

=DECALER('RECAPITULATIF GENERAL'!$B$2:$C$2;;;NBVAL('RECAPITULATIF GENERAL'!$A:$A)-1)

Commande de menu "Insertion" "Nom" "Définir"

Dans "Nom dans le Classeur" tu tapes Identité

Dans "Fait référence à:" tu (copie-colles) ou tu tapes la formule.

et sur la feuille Modele

en D13, la formule est

=STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;32)

en D14, la formule est

=RECHERCHEV($D$13;'RECAPITULATIF GENERAL.xls'!Identité;2;FAUX)

Pour le moment, la première formule doit renvoyer "Modele" et la seconde une valeur d'erreur; C'est normal.

Après quoi, lors de l'activation de la macro, tout doit être OK

Pour te rassurer, je viens de tester avec la Macro et ça marche.

Cordialement

Bonjour Amadéus !

J'ai testé les codes :

ça fonctionne bien pour l'insertion automatique du nom mais pas pour la date de naissance. Il m'indique #NOM?

Je suis vraiment mauvaise non ?

Lo

Bonsoir

Ne désespére pas. Ton fichier est dèjà bien avancé.

Bonjour Dan, super ton code, je l'ai archivé.

Lolo Rappel du message précédent:

Sur la Récap, tu nommes Identité la formule

=DECALER('RECAPITULATIF GENERAL'!$B$2:$C$2;;;NBVAL('RECAPITULATIF GENERAL'!$A:$A)-1)

Commande de menu "Insertion" "Nom" "Définir"

Dans "Nom dans le Classeur" tu tapes Identité

Dans "Fait référence à:" tu (copie-colles) ou tu tapes la formule

.

As-tu nommé la formule selon la méthode indiquée?

avec Identité orthographié de la même façon?

A plus tard

Oups

J'ai changé la casse

Lo

Rechercher des sujets similaires à "modification automoatique nom onglet"