Macro Excel : Renommer un onglet via macro

Fermé
Tuxike Messages postés 12 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 11 février 2010 - 27 janv. 2010 à 19:13
Le Pingou Messages postés 12230 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 15 janvier 2025 - 11 févr. 2010 à 15:32
Hello,

Il est encore temps de le faire, alors je vais commencer par vous souhaiter une bonne année 2010 à tous !!

Et maintenant place au problème ^^ :

Je travaille sur un document excel et je souhaiterai pouvoir via une macro réaliser les étapes suivantes :

1) Créer un nouvel onglet que je souhaiterai renommer à l'aide d'une cellule possédant la fonction AUJOURDHUI()
2) Copier plusieurs cellules de la feuill1 et les coller dans mon nouvel onglet fraichement créé
3) Copier plusieurs cellules de la feuill2 et les coller sous la première copie faites à l'étape 2

Concrètement cette macro doit générer un onglet et y copier des données dans le but de faire un historique qui permettra de visualiser l'évolution de caractéristiques liées à mon activité pro.

Mon problème est que je n'arrive pas à renommer mon onglet, ce qui fait que ma macro fonctionne une fois, mais si je la réutilise dans la foulée, j'obtiens un message d'erreur qui me précise que la feuill"X" existe déjà.

Comment faire pour renommer un onglet, ce qui éviterait ce pb ou alors pour demander à ce que le numéro des feuilles soit incrémenté d'un +1 à chaque fois que la macro est utilisée ??? Et surtout est-ce possible ?

J'ai trouvé sur un ancien topic de 2008, la fonction suivante, mais je ne sais pas comment l'incorporer dans ma macro. Je ne suis pas un expert en macro :p

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Name = Range("A1").Value
End Sub

Si une bonne âme a une petite idée je suis preneur !
Merci
A voir également:

20 réponses

Tuxike Messages postés 12 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 11 février 2010 2
27 janv. 2010 à 19:35
Petit complément d'info ! :)

Voilà ce que j'obtiens sur ma Macro, et à cela il faudrait que je puisse incorporer, je ne sais pas comment, la possibilité de renommage de l'onglet créé ou incrementation du numéro de feuille (apparement d'après ce que j'ai vu sur un autre sujet, il faudrait initialiser un compteur et ensuite utiliser la fonction nbfeuille+1...)

Sub Enregistrement_histo_MDC()
'
' Enregistrement_histo_MDC Macro
' Macro enregistrée le 27/01/2010 GD
'

'
Sheets("Histo").Select
Sheets.Add
Sheets("Feuil1").Select
Sheets("Feuil1").Move After:=Sheets(5)
Sheets("Compétences Techniques").Select
Range("A3:F54").Select
Selection.Copy
Sheets("Feuil1").Select
ActiveWindow.SmallScroll Down:=-12
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
ActiveWindow.SmallScroll Down:=12
Range("A55").Select
Sheets("Compétences Comportementales").Select
Range("A1:F10").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Feuil1").Select
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=18
Sheets("Compétences Techniques").Select
Range("H16").Select
Application.CutCopyMode = False
ActiveWorkbook.Save
End Sub
0
Bonjour,

Une idée qui me vient en lisant ton mail.
Ton code pourrait récupérer le dernier numéro d'onglet et affecter incrémenter ce numéro de 1.
Tu pourrais la lancer autant de fois que tu voudrais.

A voir
Gilles
0
Pour illustrer mon précédent message que j'ai essayé avec des onglets numérotés 1 2 3 4
Je pense qu'il y a beaucoup plus simple mais c'est pour te donner une idée de départ
Dim nb As Integer
Dim nom As String
Dim ancien As Integer
Dim nouveau As Integer

'je compte le nombre de feuille
nb = ActiveWorkbook.Sheets.Count
'je récupère le nom de la feuille
nom = Sheets(nb).Name
'je convertis ce nombre en chiffre
ancien = CInt(nom)
'j'incrémente ce nombre de 1
nouveau = ancien + 1
'j'insère un nouvel onglet
Sheets.Add After:=Sheets(Sheets.Count)
'je donne un nom à cet onglet
Sheets(nb + 1).Name = nouveau

Gilles
0
Tuxike Messages postés 12 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 11 février 2010 2
28 janv. 2010 à 09:20
Merci pour tes réponses Gilles.

Le pb c'est que je suis novice et que j'utilise l'interface "graphique" d'excel pour créer ma macro, je ne code pas.
Je ne sais pas comment incorporer ton code dans ma macro.

En gros je dois rajouter ca dans mon code ?

ActiveWorkbook.Sheets.Count
Sheets(nb).Name
CInt(nom)
nouveau = ancien + 1
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(nb + 1).Name = nouveau
0

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

Posez votre question
Le Pingou Messages postés 12230 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 15 janvier 2025 1 454
28 janv. 2010 à 15:13
Bonjour,
J’ai modifié votre procédure, il suffit de remplacer l’existante par celle qui suit :
Note : les lignes modifier/ajouter/supprimer ont une note explicative.

Sub Enregistrement_histo_MDC()
' Enregistrement_histo_MDC Macro
' Macro enregistrée le 27/01/2010 GD
'
Sheets("Histo").Select
Sheets.Add After:=Sheets(Sheets.Count) ' modifier, placer la nouvelle feuille à la fin
ActiveSheet.Name = "le Nouveau Nom" ' Nouveau, donner un nom à cette feuille
NouvSh = ActiveSheet.Name ' placer le nouveau nom dans une variable pour utilisation dans le code
' **** Supprimer **** Sheets("Feuil1").Select
' **** Supprimer **** Sheets("Feuil1").Move After:=Sheets(5)
Sheets("Compétences Techniques").Select
Range("A3:F54").Select
Selection.Copy
Sheets("NouvSh").Select ' utiliser variable [NouvSh]comme nom feuille
ActiveWindow.SmallScroll Down:=-12
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
ActiveWindow.SmallScroll Down:=12
Range("A55").Select
Sheets("Compétences Comportementales").Select
Range("A1:F10").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("NouvSh").Select ' utiliser variable [NouvSh]comme nom feuille
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=18
Sheets("Compétences Techniques").Select
Range("H16").Select
Application.CutCopyMode = False
ActiveWorkbook.Save
End Sub


Copier et coller la procédure dans le module.
Faites comme suit : touche Alt+F11 pour ouvrir le VBA Projet / Dans la partie gauche rechercher Modules et double clic pour avoir Module1 et de nouveau double clic dessus et dans la partie droite vous avez votre procédure. Je vous conseille de modifier sont nom par ajout de [ancien] comme suit : Sub Enregistrement_histo_MDC_ancien()
Vous copier la procédure que j’ai modifié et vous la collez à la fin de l’ancienne,
Pas oublier d’enregistrer.
0
Tuxike Messages postés 12 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 11 février 2010 2
8 févr. 2010 à 16:19
Salut Pingou,

Merci pour ta réponse et désolé pour mon retard, j'étais en congés :)

La macro marche nickel mais elle ne peut fonctionner qu'une fois car à la seconde fois, l'onglet généré possède le même nom que celui généré juste avant et du coup la macro s'arrête.

Je vais essayer de voir comment incrémenter un + 1 dans la variable "nouvsh"

En tout cas, un grand merci :) j'avance petit à petit
0
Tuxike Messages postés 12 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 11 février 2010 2
9 févr. 2010 à 11:28
Bonjour,

J'ai une nouvelle question !? :)

Est-il possible d'utiliser (toujours dans le cadre de ma macro) une fonction "date" pour que l'onglet qui se génère est pour nom : MDC_"date" ??

Je n'ai pas réussi pour le moment à incorporer cette valeur
0
Le Pingou Messages postés 12230 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 15 janvier 2025 1 454
9 févr. 2010 à 11:36
Bonjour,
Juste au passage, désolé, je n'ai pas encore eu le temps de voir votre poste précédent.
Oui il est possible de nommer l'onglet avec une date:
D'où vient la date ... ? Dans le but de la prendre en compte dans la procédure !
0
Tuxike Messages postés 12 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 11 février 2010 2
9 févr. 2010 à 14:44
Bonjour,

Sur mon document, j'ai la cellule I9 qui contient la fonction AUJOURDHUI() et c'est de cette cellule que je souhaiterais récupérer la valeur.

Mais au final je souhaiterais que l'onglet se nomme "MDC_"datedujour")
"datedujour" étant la reprise de la cellule I9.
En gros il faudrait que je puisse concatener MDC et la date
0
Le Pingou Messages postés 12230 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 15 janvier 2025 1 454
9 févr. 2010 à 14:53
Bonjour,
Merci d'indiquer sur quelle feuille (nom de l'onglet) se trouve [i9] ?
Est-ce que je peux me baser sur la procédure du poste 5 ? : https://forums.commentcamarche.net/forum/affich-16337114-macro-excel-renommer-un-onglet-via-macro#5
0
Tuxike Messages postés 12 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 11 février 2010 2
9 févr. 2010 à 15:01
La fonction AUJOURDHUI() est sur la feuille 1 qui s'intitule "Compétences Techniques"

Et oui tu peux te baser sur le poste 5
Merci
Grég
0
Le Pingou Messages postés 12230 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 15 janvier 2025 1 454
9 févr. 2010 à 17:35
Bonjour
Ci dessous la procédure complète. Vous pouvez le mettre en place comme expliqué au poste 5 ou modifier les lignes de la version existante !
Les lignes modifier sont en italique
Sub Enregistrement_histo_MDC()
' Enregistrement_histo_MDC Macro
' Macro enregistrée le 27/01/2010 GD
Dim datdujour As Date
datdujour = Sheets("Compétences Techniques").Range("i9") ' Récupérer date du jour
Sheets("Histo").Select
Sheets.Add After:=Sheets(Sheets.Count) ' modifier, placer la nouvelle feuille à la fin
ActiveSheet.Name = "MDC_" & datdujour ' Nouveau nom formé de MDC et la date du jour, pour cette feuille
NouvSh = ActiveSheet.Name ' placer le nouveau nom dans une variable pour utilisation dans le code
' **** Supprimer **** Sheets("Feuil1").Select
' **** Supprimer **** Sheets("Feuil1").Move After:=Sheets(5)
Sheets("Compétences Techniques").Select
Range("A3:F54").Select
Selection.Copy
Sheets("NouvSh").Select ' utiliser variable [NouvSh]comme nom feuille
ActiveWindow.SmallScroll Down:=-12
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
ActiveWindow.SmallScroll Down:=12
Range("A55").Select
Sheets("Compétences Comportementales").Select
Range("A1:F10").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("NouvSh").Select ' utiliser variable [NouvSh]comme nom feuille
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=18
Sheets("Compétences Techniques").Select
Range("H16").Select
Application.CutCopyMode = False
ActiveWorkbook.Save
End Sub
--

Salutations.
Jean-Pierre
0
Tuxike Messages postés 12 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 11 février 2010 2
10 févr. 2010 à 09:13
Hello,

J'ai testé ce matin la nouvelle macro mais sans succès. J'obtiens un message d'erreur me précisant que :

Le nom de feuille que vous avez tapé n'est pas valide. Essayer l'une des méthodes suivantes :
- Vérifiez que le nom de la feuille ne dépasse pas 31 caractères (Donc ca c'est ok)
- Vérifiez que le nom de la feuille ne contient aucun des caractères suivants : : / \ ? * [ ou ] (J'ai modifié le format de cellule de [i9] pour que la date s'affiche sous la : mercredi 10 février par exemple, mais ca n'a pas résolu le pb)
- Vérifier que le nom n'est pas vide

Par ailleurs, je me posais une question. Suite à vos nouvelles modifications de la macro, est que la ligne suivante est toujours utile :
NouvSh = ActiveSheet.Name ' placer le nouveau nom dans une variable

Le nouveau nom étant normalement donné par la ligne suivante :
ActiveSheet.Name = "MDC_" & datdujour ' Nouveau nom formé de MDC et la date du jour, pour cette feuille
Si j'ai bien compris (et là c'est loin d'être une certitude :p ) la variable NouvSh n'a pu lieu d'exister ?!
0
Le Pingou Messages postés 12230 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 15 janvier 2025 1 454
10 févr. 2010 à 10:35
Bonjour.
Concernant le message d’erreur, c’est une erreur de ma part.
Dans les 2 lignes suivantes : Sheets("NouvSh").Select ,
vous supprimez les guillemets qui entourent le nom de la variable Sheets(NouvSh).Select

Suite à vos nouvelles modifications de la macro, est que la ligne suivante est toujours utile :
NouvSh = ActiveSheet.Name ' placer le nouveau nom dans une variable

Oui et le pourquoi se trouve dans l’explication à droite du code de cette ligne :
NouvSh = ActiveSheet.Name ' placer le nouveau nom dans une variable pour utilisation dans le code


En clair, j’utilise cette variable chaque fois que je travail avec cette feuille.
0
Tuxike Messages postés 12 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 11 février 2010 2
10 févr. 2010 à 11:22
Je viens de supprimer les guillemets sur sheets("nouvSh") mais le pb persiste.

La ligne en erreur dans le code est la suivante :

ActiveSheet.Name = "MDC_" & datdujour ' Nouveau nom formé de MDC et la date du jour, pour cette feuille"

Penses-tu que cela puisse provenir du format de la cellule qui contient la date ?
0
Le Pingou Messages postés 12230 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 15 janvier 2025 1 454
10 févr. 2010 à 12:39
Bonjour,
J’ai fait un contrôle avec les formats de date : mercredi, 10. février 2010 et 10.02.2010 , tout est correct.
Comment avez-vous appliqué le format à la cellule [i9] ?
A défaut mettre votre fichier sur https://www.cjoint.com/ et poster le lien !
0
Tuxike Messages postés 12 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 11 février 2010 2
10 févr. 2010 à 13:53
Je viens de t'envoyer un message avec l'url

Pour la cellule [i9], j'ai fait un click droit > format de cellule > date, tout simplement :)
0
Le Pingou Messages postés 12230 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 15 janvier 2025 1 454
10 févr. 2010 à 14:51
Bonjour,
J'ai essayé votre fichier, tout fonctionne correctement , la nouvelle feuille avec le nom [MDC_10.02.2010] est présente y compris la copy du tableau.
C'est étrange !
Qu'elle est la version d'Excel ?
0
Tuxike Messages postés 12 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 11 février 2010 2
11 févr. 2010 à 09:34
Ah oui c'est étrange ça.

J'ai testé sur Excel 2000, 2003, 2007 et même sur Excel pour Mac et j'ai le même pb à chaque fois !
0
Le Pingou Messages postés 12230 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 15 janvier 2025 1 454
11 févr. 2010 à 15:32
Bonjour,
S'agit-il bien du fichier mis à disposition ?
Pouvez-vous d'écrire pas à pas et faire une copie d'écran de l'erreur et la mettre sur https://www.cjoint.com/
Merci.
0