Excel : donner des noms aux feuilles à partir de cellules de la première feuille
Dernière réponse : dans Programmation
Bonjour,
Je suis nouveau sur ce forum bien que j'ai déjà passé pas mal de temps à fouiner en quête d'une réponse à ma question. J'ai notament trouvé le poste "macro créant une feuille et lui donnant le nom d'1 cellule" mais je n'ai pas réussi à l'adpater à mon problème (faut dire que je n'y connais rien en VBA !).
Il s'agit donc de créer une macro qui nomme automatiquement une trentaine de feuilles (déjà crées) à partir des cellules de la première colonne de ma première feuille (feuil1!A2 donne le nom à la 2°feuille, feuil1!A3 à la 3° feuille etc.) .
Les essais que j'ai déjà tentés fonctionnent à ceci près que le nom des feuilles ne s'actualise pas comme je le voudrais. L'idéal serait que ce nom de feuille s'actualise au moment où je valide la saisie ce même nom dans la cellule de la première feuille.
J'espère avoir été assez clair. Si il faut un fichier exemple, je peux vous le faire passer sans problème.
Merci d'avance !
Sylvestre
Je suis nouveau sur ce forum bien que j'ai déjà passé pas mal de temps à fouiner en quête d'une réponse à ma question. J'ai notament trouvé le poste "macro créant une feuille et lui donnant le nom d'1 cellule" mais je n'ai pas réussi à l'adpater à mon problème (faut dire que je n'y connais rien en VBA !).
Il s'agit donc de créer une macro qui nomme automatiquement une trentaine de feuilles (déjà crées) à partir des cellules de la première colonne de ma première feuille (feuil1!A2 donne le nom à la 2°feuille, feuil1!A3 à la 3° feuille etc.) .
Les essais que j'ai déjà tentés fonctionnent à ceci près que le nom des feuilles ne s'actualise pas comme je le voudrais. L'idéal serait que ce nom de feuille s'actualise au moment où je valide la saisie ce même nom dans la cellule de la première feuille.
J'espère avoir été assez clair. Si il faut un fichier exemple, je peux vous le faire passer sans problème.
Merci d'avance !
Sylvestre
Autres pages sur : excel donner noms feuilles partir cellules premiere feuille
Lassé par la pub ? Créez un compte
Un petit extrait de l'aide vba devrait t'aider:
Change Event
See AlsoApplies ToExampleSpecificsOccurs when cells on the worksheet are changed by the user or by an external link.
Private Sub Worksheet_Change(ByVal Target As Range)
Target The changed range. Can be more than one cell.
Remarks
This event doesn't occur when cells change during a recalculation. Use the Calculate event to trap a sheet recalculation.
Example
This example changes the color of changed cells to blue.
Private Sub Worksheet_Change(ByVal Target as Range)
Target.Font.ColorIndex = 5
End Sub
Citation :
Change Event
See AlsoApplies ToExampleSpecificsOccurs when cells on the worksheet are changed by the user or by an external link.
Private Sub Worksheet_Change(ByVal Target As Range)
Target The changed range. Can be more than one cell.
Remarks
This event doesn't occur when cells change during a recalculation. Use the Calculate event to trap a sheet recalculation.
Example
This example changes the color of changed cells to blue.
Private Sub Worksheet_Change(ByVal Target as Range)
Target.Font.ColorIndex = 5
End Sub
- | Alerter
Merci pour ta réponse.
Il semblerait que ce soit des changements effectués sur la même feuille, comme dans l'exemple (si mon anglais approximatif ne me trahit pas). Ou pas un lien extérieur mais là je ne vois pas comment faire.
Le code ci-dessous fonctionne mais la validation du nom ne se fait que quand je valide la cellule A1 de la feuille qui change de nom. Or, je voudrais que cette validation se fasse quand la cellule d'une autre feuille est validée :
C'est un copier/coller que je n'ai pas réussi à adapter (notament à cause du format dd-mm-yy) qui n'a rien à voir avec mon problème.
Sylvestre
Il semblerait que ce soit des changements effectués sur la même feuille, comme dans l'exemple (si mon anglais approximatif ne me trahit pas). Ou pas un lien extérieur mais là je ne vois pas comment faire.
Le code ci-dessous fonctionne mais la validation du nom ne se fait que quand je valide la cellule A1 de la feuille qui change de nom. Or, je voudrais que cette validation se fasse quand la cellule d'une autre feuille est validée :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Intersect(Target, Range("A1")) Is Nothing Then: Exit Sub test = Format(Range("A1"), "dd-mm-yy") ActiveSheet.Name = test End Sub
C'est un copier/coller que je n'ai pas réussi à adapter (notament à cause du format dd-mm-yy) qui n'a rien à voir avec mon problème.
Sylvestre
- | Alerter
D'après ce que j'ai compris tu as une seule feuille source, il faut donc utiliser la fonction change de cette feuille, puis en fonction de la ligne de "Target" tu change le nom de la feuille cible.
exemple:
cette fonction doit être déclarée dans l'objet Feuil1 pour toi.
exemple:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row <= Sheets.Count Then Sheets(Target.Row).Name = "ce que tu veux " & Target.Value End If End Sub
cette fonction doit être déclarée dans l'objet Feuil1 pour toi.
- | Alerter
Contenus similaires
- Macro copier coller feuille excel - Forum
- Macro excel copier coller feuille - Forum
- Copier coller macro excel - Forum
- Vb excel copier coller - Forum
Il y a en effet une feuille source. J'ai collé ton code dans le "worsheet -> change" de la feuille source mais ça ne marche pas. Mais je suis pas sûr de m'être bien expliqué alors je joins un exemple. Il s'agit de nommer automatiquement les feuilles à partir des cellules A2, A3 etc. de la feuille SAISIE.
![]()
MErci.
Sylvestre

MErci.
Sylvestre
- zeb a édité ce message
- | Alerter
Alors c'est exactement ce que fait mon code ... (sauf que tu peux supprimer "ce que tu veux " et rajouter un filtre sur la colonne).
Tu es sur de l'avoir coller au bon endroit ?
Que ce passe-t'il avec le code que je t'ai donné ?
Essaie de rajouter un
Pour être sur que le code de la macro est bien executer ...
Tu es sur de l'avoir coller au bon endroit ?
Que ce passe-t'il avec le code que je t'ai donné ?
Essaie de rajouter un
msgbox "salut"
Pour être sur que le code de la macro est bien executer ...
- | Alerter
Ca marche ! Merci beaucoup. En fait je pense qu'il y avait deux problèmes :
1) Je n'étais pas passé à la ligne après le Then et il me renvoyait une erreur sur le bloc If (c'est possible ça ?)
2) Je ne savais quoi mettre dans le "Ce que tu veux" :-) J'ai finalement mis Range("A1") et ça marche. D'ailleurs, pour info, pourquoi ça marche vu que j'ai mis Range("A1") alors que ce n'est pas A1 qu'il faut copier ?
Un gand merci à toi drul !
Sylvestre
1) Je n'étais pas passé à la ligne après le Then et il me renvoyait une erreur sur le bloc If (c'est possible ça ?)
2) Je ne savais quoi mettre dans le "Ce que tu veux" :-) J'ai finalement mis Range("A1") et ça marche. D'ailleurs, pour info, pourquoi ça marche vu que j'ai mis Range("A1") alors que ce n'est pas A1 qu'il faut copier ?
Un gand merci à toi drul !
Sylvestre
- | Alerter
ça marche parce que range("A1") est vide je suppose.
En fait fallit juste supprimer
et ne garder que
edit: P.S. attention, ce code ne tiens pas compte de la colonne que tu modifies, je te laisse le soin de rajouter cette condition.
Si tu es satisfait, selectionne une meilleure réponse stp
En fait fallit juste supprimer
"ce que tu veux " &
et ne garder que
Sheets(Target.Row).Name = Target.Value
edit: P.S. attention, ce code ne tiens pas compte de la colonne que tu modifies, je te laisse le soin de rajouter cette condition.
Si tu es satisfait, selectionne une meilleure réponse stp
- drul a édité ce message
- | Alerter
Oups, en effet, je viens de vérifier à l'instant qu'en changeant la valeur d'une autre case, ça change à nouveau le nom :-(
Je crois avoir trouvé : il suffit de rajouter dans la condition du If "And target.column=1". Merci de m'avoir poussé à fouiner ;-) Je continue mes tests et je reviens selctionner "meilleur réponse".
A+
Sylvestre
Je crois avoir trouvé : il suffit de rajouter dans la condition du If "And target.column=1". Merci de m'avoir poussé à fouiner ;-) Je continue mes tests et je reviens selctionner "meilleur réponse".
A+
Sylvestre
- | Alerter
Bonjour à tous,
Désolé pour tout ce temps passé sans nouvelles de ma part.
Je viens de refaire des tests. Ils sont concluant dans l'ensemble. Il me reste deux problèmes à régler :
1) Si on copie colle des données dans les cases de la première feuille qui sont censées donner le nom aux feuilles suivantes, ces feuilles ne changent pas de nom. Il faut rentrer dans chaque cellule et valider. Y a t'il un moyen que les noms changent juste après le copier/coller ?
2) Si on afface le contenu d'une case de la première feuille qui est censé donné le nom à une autre feuille, y a un bug... Normal puisque le nom d'une feuille ne peut pas être "vide". C'est pas génant plus que ça mais bon, c'est pour améliorer ;-)
Pour finir, je n'ai pas retrouvé le lien "meilleur réponse" pour cloturer ce post. Je l'avais pourtant vu après ton message drul...
Merci pour votre aide.
A+
Sylvestre
Désolé pour tout ce temps passé sans nouvelles de ma part.
Je viens de refaire des tests. Ils sont concluant dans l'ensemble. Il me reste deux problèmes à régler :
1) Si on copie colle des données dans les cases de la première feuille qui sont censées donner le nom aux feuilles suivantes, ces feuilles ne changent pas de nom. Il faut rentrer dans chaque cellule et valider. Y a t'il un moyen que les noms changent juste après le copier/coller ?
2) Si on afface le contenu d'une case de la première feuille qui est censé donné le nom à une autre feuille, y a un bug... Normal puisque le nom d'une feuille ne peut pas être "vide". C'est pas génant plus que ça mais bon, c'est pour améliorer ;-)
Pour finir, je n'ai pas retrouvé le lien "meilleur réponse" pour cloturer ce post. Je l'avais pourtant vu après ton message drul...
Merci pour votre aide.
A+
Sylvestre
- | Alerter
- | Alerter
- | Alerter
Alors tu devrais pouvoir t'en sortir avec un
edit: ceci est un exemple, a toi de l'adapter à tes besoins
Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Integer If Target.Column = 1 Then For i = Target.Row To Target.Rows.Count + Target.Row Cells(i, 2).Value = Cells(i, 1).Value Next End If End Sub
edit: ceci est un exemple, a toi de l'adapter à tes besoins
- drul a édité ce message
- drul a édité ce message
- | Alerter
- | Alerter
Bon, me revoilà !
Je viens de me repencher sur ton code... Difficile pour un novice comme moi de s'y remettre après une semaine "d'inactivité mentale" :-) La montagne, ça doit rouiller le cerveau. A moins qu'il ne l'était avant ? Sans doute :-( Bref, j'ai du mal à insérer ton code dans le mien. Voici donc ce que j'avais au "départ" :
Ceci ayant été possible en bidouillant tes propositions succéssives bien sûr. Je crois comprendre que ton code copie le contenu des cellules de la première colone pour les mettre dans la deuxième. Je suppose que ça permettra de nommer les feuilles après le copier coller. Mais après plusieurs essais, je n'ai pas réussi... Un petit coup de pouce supplémentaire ?
Merci
Sylvestre
Je viens de me repencher sur ton code... Difficile pour un novice comme moi de s'y remettre après une semaine "d'inactivité mentale" :-) La montagne, ça doit rouiller le cerveau. A moins qu'il ne l'était avant ? Sans doute :-( Bref, j'ai du mal à insérer ton code dans le mien. Voici donc ce que j'avais au "départ" :
Private Sub Worksheet_Change(ByVal Target As Range) If (Target.Row - 1) <= Sheets.Count And Target.Column = 1 And Target.Row <> 1 And Target.Value <> "" Then Sheets(Target.Row - 1).Name = Target.Value End If End Sub
Ceci ayant été possible en bidouillant tes propositions succéssives bien sûr. Je crois comprendre que ton code copie le contenu des cellules de la première colone pour les mettre dans la deuxième. Je suppose que ça permettra de nommer les feuilles après le copier coller. Mais après plusieurs essais, je n'ai pas réussi... Un petit coup de pouce supplémentaire ?
Merci
Sylvestre
- | Alerter
- | Alerter
- | Alerter
- | Alerter
Drul n'a pas Excel, mais il a Internet apparemment. Il pourra quand même t'aider.
Remarque, moi aussi, je le peux :
1)
Ouvre un nouveau classeur.
Mets X Y et Z dans les cellules A1 B1 et C1 de la feuille 1.
Mets ce bout de code dans le code de la feuille 1
Sélectionne les cellules A1 à C1.
Copie ces cellules dans le presse-papier
Positionne-toi sur la cellule I8 de ta feuille 1.
Colle ce qu'il y a dans le presses-papier.
Qu'observes-tu ?
2)
Va lire l'aide sur For Each dans l'aide d'Excel.
3)
Trouve un rapport entre 1) et 2).
Et voilà, bonnes vacances !
Remarque, moi aussi, je le peux :
1)
Ouvre un nouveau classeur.
Mets X Y et Z dans les cellules A1 B1 et C1 de la feuille 1.
Mets ce bout de code dans le code de la feuille 1
Private Sub Worksheet_Change(ByVal Target As Range) MsgBox Target.Address End Sub
Sélectionne les cellules A1 à C1.
Copie ces cellules dans le presse-papier
Positionne-toi sur la cellule I8 de ta feuille 1.
Colle ce qu'il y a dans le presses-papier.
Qu'observes-tu ?
2)
Va lire l'aide sur For Each dans l'aide d'Excel.
3)
Trouve un rapport entre 1) et 2).
Et voilà, bonnes vacances !
- | Alerter
Bonjour
Ce sujet m'a énormément aidé pour avancer dans une problème identique sur excel.
Sauf que moi, je fais un manip identique pour des classes, dans une école, donc pour gagner du temps, j'ai besoin de faire un copier-coller des listes sur ma première feuille. Est-ce possible ? Si oui, pouvez-vous me dire comment faire ? Je ne connais pratiquement pas le VBA.
Merci beaucoup.
Ce sujet m'a énormément aidé pour avancer dans une problème identique sur excel.
Sauf que moi, je fais un manip identique pour des classes, dans une école, donc pour gagner du temps, j'ai besoin de faire un copier-coller des listes sur ma première feuille. Est-ce possible ? Si oui, pouvez-vous me dire comment faire ? Je ne connais pratiquement pas le VBA.
Merci beaucoup.
- | Alerter
Lassé par la pub ? Créez un compte
Parceque malgré toute ma bonne volonté, je crois que j'ai atteint mes limites