Dupliquer un onglet tout en changeant son nom

Résolu/Fermé
Nonnoo Messages postés 25 Date d'inscription lundi 14 mars 2016 Statut Membre Dernière intervention 9 juin 2016 - 14 mars 2016 à 15:54
Nonnoo Messages postés 25 Date d'inscription lundi 14 mars 2016 Statut Membre Dernière intervention 9 juin 2016 - 15 mars 2016 à 14:48
Bonjour,

J'ai un fichier excel contenant un onglet avec une liste (feuille 1) et un onglet avec des données et des boutons de macro (feuille 5, je ne sais pas pourquoi il est en feuille 5...).

Je souhaite dupliquer mon onglet de données, tout en renommant les onglets en fonction de la liste située en feuille 1.
Exemple :
Dans la feuille 1 j'ai une liste :
01
02
03
...

Je voudrai que mes onglets se nomment automatiquement 01 02 03 en copiant mon onglet de données.

Avez-vous une idée ? Merci d'avance
A voir également:

5 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
14 mars 2016 à 17:30
Re,

Dans le code je perle de l'onglet Feuil1 et toi tu parles de Feuille1. Quel sont les noms exact des deux onglets ?
1
Nonnoo Messages postés 25 Date d'inscription lundi 14 mars 2016 Statut Membre Dernière intervention 9 juin 2016
15 mars 2016 à 09:29
Bonjour,

Non l'onglet s'appelle GLOBAL et est rattaché à la feuille 1 (feuil 1)
et le deuxième onglet avec les données s'appelle SX19. et est rattaché à la feuille 5 (feuil5).

J'avais trouvé une macro qui faisait à peu près ce que je demandais sauf que j'ai du insérer une colonne dans mon onglet de données contenant la liste. De là en activant ma macro j'ai réussi à obtenir mes différents onglets avec des noms suivant la liste et aussi que ca écrit le nom de l'onglet dans la cellule F1 de la feuille.

Cependant cela m'embête d'avoir rajouté une colonne dans ma feuille car lorsqu'elle se duplique, elle duplique aussi cette colonne, mais du coup comme j'ai des macros dans chacune de mes feuilles, elles ne s’exécutent pas correctement. Je mets le code ici :

" Option Explicit

Sub Ajouter_Feuilles()
Dim J As Long
Dim Ws As Worksheet

Application.ScreenUpdating = False
Set Ws = ActiveSheet
For J = 1 To Ws.Range("A" & Rows.Count).End(xlUp).Row
If Not FeuilleExiste(Ws.Range("A" & J).Value) Then
Sheets("Modèle").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = Ws.Range("A" & J)
Range("F1") = ActiveSheet.Name ' Met le nom de la feuille dans la cellule F1
End If
Next J
Ws.Select
End Sub

'Si l'onglet existe déjà, il n'est pas créé
Function FeuilleExiste(Nom As String) As Boolean
On Error Resume Next
FeuilleExiste = Sheets(Nom).Name <> ""
On Error GoTo 0
End Function "

Je voudrais éviter de rajouter une colonne supplémentaire dans mon onglet de données et avoir la macro qui aille chercher l'info dans mon onglet Global pour nommer mes différents onglets.

Je ne sais pas si je suis assez claire, en tout cas merci d'avance.

Nono
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
14 mars 2016 à 16:44
Bonjour Nono, bonjour le forum,

Si j'ai bien compris, le code ci-dessous devrait fonctionner :

Sub Macro1()
Dim CEL As Range 'declare la variable CEL (CELlule)

'boucle sur toutes les cellules CEL éditées de la colonne 1(=A)
For Each CEL In Sheets("Feuil1").Range("A1:A" & Sheets("Feuil1").Cells(Application.Rows.Count, 1).End(xlUp).Row)
    Sheets("Feuil5").Copy after:=Sheets(Sheets.Count) 'copy l'onglet "Feuil5" en dernier
    ActiveSheet.Name = CEL.Value 'renomme l'onglet copié
Next CEL 'prichaine cellule de la boucle
End Sub

0
Nonnoo Messages postés 25 Date d'inscription lundi 14 mars 2016 Statut Membre Dernière intervention 9 juin 2016
14 mars 2016 à 17:26
Bonjour Thautheme !

Merci de ta réponse... Cependant le code ne marche pas, il me met en jaune la ligne "for each..." et me dit que "l'indice n'appartient pas à la sélection" ...

Merci beaucoup de ton aide

Nono
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
15 mars 2016 à 09:51
Re,

Il suffisait d'adapter les noms des onglets dans le code...

Sub Macro1()
Dim CEL As Range 'declare la variable CEL (CELlule)

'boucle sur toutes les cellules CEL éditées de la colonne 1(=A)
For Each CEL In Sheets("GLOBAL").Range("A1:A" & Sheets("GLOBAL").Cells(Application.Rows.Count, 1).End(xlUp).Row)
    Sheets("SX19").Copy after:=Sheets(Sheets.Count) 'copie l'onglet "SX19" en dernier
    ActiveSheet.Name = CEL.Value 'renomme l'onglet copié
Next CEL 'prichaine cellule de la boucle
End Sub


0
Nonnoo Messages postés 25 Date d'inscription lundi 14 mars 2016 Statut Membre Dernière intervention 9 juin 2016
15 mars 2016 à 10:24
Merci mais ca ne marche toujours pas... il me met la ligne
ActiveSheet.Name = CEL.Value 'renomme l'onglet copié
en jaune...

Merci quand même

Nono
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
15 mars 2016 à 10:35
Le code proposé utilise une liste qui serait écrite dans les cellules de la colonne A (en commençant en A1) de l'onglet GLOBAL. Si cette liste est ailleurs il faut adapter le code. Comme tu n'as pas daigné donner des renseignements fiables quant à l'adresse de cette liste, j'ai fait au plus simple...
0
Nonnoo Messages postés 25 Date d'inscription lundi 14 mars 2016 Statut Membre Dernière intervention 9 juin 2016
15 mars 2016 à 10:44
C'est bon j'ai réussi merci beaucoup !
Désolée de pas avoir été très claire sur mes explications, mais merci grâce à toi ca marche !

J'ai aussi une autre question qui est liée : Je voulais savoir s'il était possible de nommer chaque cellule D1 de chaque onglet à partir de la colonne B de mon onglet global. Je m'explique : dans l'onglet Global il y a en colonne a les codes 01, 02, 03.... qui m'ont servi à nommer mes onglets. Et dans la colonne B2, en face de chaque code il y a les noms des bureaux, je voudrais que ces noms apparaissent dans chaque onglet dans la cellule D1 pour qu'on puisse reconnaître à quel bureau appartient ce code...

Merci par avance de votre aide

Nono
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
15 mars 2016 à 12:53
Re,

Essaie ce nouveau code :

Sub Macro1()
Dim CEL As Range 'declare la variable CEL (CELlule)

'boucle sur toutes les cellules CEL éditées de la colonne 1(=A)
For Each CEL In Sheets("GLOBAL").Range("A1:A" & Sheets("GLOBAL").Cells(Application.Rows.Count, 1).End(xlUp).Row)
    Sheets("SX19").Copy after:=Sheets(Sheets.Count) 'copie l'onglet "SX19" en dernier
    ActiveSheet.Name = CEL.Value 'renomme l'onglet copié
    ActiveSheet.Range("D1").Value = CEL.Offset(0, 1).Value 'copie dans la cellule D1 de l'onglet actif la valeur de la cellule CEL décalée d'une colonne à droite
Next CEL 'prichaine cellule de la boucle
End Sub

0
Nonnoo Messages postés 25 Date d'inscription lundi 14 mars 2016 Statut Membre Dernière intervention 9 juin 2016
15 mars 2016 à 14:48
MERCI beaucoup Thautheme tu me sauves !
0