Microsoft 365 activation de la dernière feuille créée selon son n° (pas sa position)

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,

J'ai besoin de pouvoir activer la dernière feuille créée dans mon classeur
Par exemple ici j'ai créé les Feuile1 à 6

le code "Sheets(Sheets.Count).Select" fonctionne

mais active la dernière Feuille selon sa position dans le classeur
alors que c'est la dernière créé soit la Feuil6 que je souhaite activer.

Malgré mes recherches et essais, je n'ai pas trouvé comment coder.
Pourriez-vous m'aider sachant que mes feuilles sont créées depuis longtemps et donc antérieurement au code que vous m'aurez (je l'espère LOL) transmis.
Je joins un fichier test.

Avec mes remerciement,
Je vous souhaite à toutes et à tous une belle journée,
amicalement,
lionel,
 

Pièces jointes

Bonjour,

Ah ben celle-là (la question) a le mérite d'être originale. Jamais vu avant pour ma part. Par contre, je ne sais s'il y a une réponse pour des feuilles qui ont déjà été créées. Le classeur n'a pas de Propriété LastSheetCreated ou LastCreatedSheet ou autre anglaiserie sur laquelle se baser.

Pour les nouvelles feuilles on peut s'appuyer sur lévènement de classeur 'Workbook_NewSheet' et une variable public LastCreatedSheetCodeName de type String. Mais là encore si la feuille est supprimée entre temps ? comment retrouver la précédente créée ?

Je crois qu'il y a là moyen de faire une belle usine à gaz 🙂 .

Bon continuation.
 
Bonjour Roblochon,

LOL, j'ai toujours des questions particulières (mais ne sommes nous pas tous particuliers ? LOL)

Par contre, ta réponse m'a donné une idée et je pense que le fait d'utiliser un code pour afficher la nouvelle feuille créée (après l'insertion du code) va me servir.
Alors si il y a, je suis preneur 🙂
lionel,
 
bonjour

dans le thisworkbook tu met
VB:
Private Sub Workbook_NewSheet(ByVal Sh As Object)
    ActiveWorkbook.Names.Add Name:="LastcreatedSheet", RefersTo:=Sh.Index
End Sub




on va tester dans un module
on ajoute un sheets pas forcement a la fin on le nomme "toto"
Code:
Sub test()
    Set Sh = Sheets.Add(after:=Sheets(3))
    Sh.Name = "toto"
End Sub

maintenant on teste si on a bien le dernier sheets ajouté ou qu'il soit
Code:
Sub test2()
    'MsgBox Names("LastcreatedSheet")
    Index = Val(Replace(Names("LastcreatedSheet"), "=", ""))
    MsgBox Sheets(Index).Name
End Sub

😉
il est évident que le classeur doit être enregistré a la fermeture pour garder le name "LastcreatedSheet"pour un éventuel besoins

je donnerais bien une autre solution qui elle serait invisible
mais c'est comment dire heu... astuce a la patricktoulon 😛
 
Bonjour Patrick,

Merci à toi, je teste et je te dis 🙂

"je donnerais bien une autre solution qui elle serait invisible
mais c'est comment dire heu... astuce a la patricktoulon
"
Combien tu veux pour me donner ton astuce ? LOL 🙂
lionel,
 
Re-Bonjour Roblochon 🙂

merci pour le retour fichier.
J'ai créée une feuille et un message d'erreur :
Sans titre.jpg


je me demande bien Pkoi LOL
lionel,
 
Re,

Désolé, mais chez moi cela fonctionne. Ouvrir le classeur créer une feuille et revenir sur base et cliquer sur le bouton.

Mais comme dit précédemment tout ceci va mener directement à une usine à gaz à la construction de laquelle je ne veux pas participer (surtout pour quelqu'un qui semble ne faire aucun effort pour comprendre ce qu'il lui est communiqué.)

A une prochaine.
 
bonjour Roblochon
tu fait bien de parler de session du classeur
ps j'ai bien precisé qu'il fallait que le fichier soit sauver en fermeture sinon le names est perdus

mais revenons a mon astuce patricktoulonnaise

savez vous ajouter une commandbar popup??

et vous vous dites c'est bon on a perdu le toulonnais
mais non!!!!
quand on fait un commandbars.add("nom de la bar",.....)
et que l'on ferme le fichier
ben je vous le donne dans le mille la commandbar elle RESTE!!!! car c'est au niveau supérieur au workbook que l'on travaille (l'application)
la j'ai tout dis, le reste se devine tout seul
et pour le coup c'est invisible 😛 😉
je fait un exemple ou tout le monde a compris

donc a moins de faire un commandbars.reset ou supprimer la bar ben c'est jamais perdu
je précise pour ceux qui se perdraient dans mes idées loufoques qu'il n'est nullement question ici de faire un show sur la barre
 
Re-Roblochon,
Je précise que bien évidemment, je suis revenu sur la feuille base après création de la nouvelle feuille.
Dans le cas contraire, comment pourrais-je cliquer sur le bouton ? 🙂

Patrick :
"ps j'ai bien précisé qu'il fallait que le fichier soit sauver en fermeture sinon le names est perdus ".

J'ai bien sauvegardé et fermé après création de la feuille ... à la ré-ouverture ça n'a pas fonctionné.
Mais, dans les classeurs ou je souhaite utiliser ce code, j'ai des dizaines de feuilles à ajouter et ce serait
trop fastidieux d'enregistrer, fermer et ré-ouvrir à chaque ajout de feuille. 🙂
lionel,
 
bonjour Roblochon
tu fait bien de parler de session du classeur
ps j'ai bien precisé qu'il fallait que le fichier soit sauver en fermeture sinon le names est perdus

mais revenons a mon astuce patricktoulonnaise

savez vous ajouter une commandbar popup??

et vous vous dites c'est bon on a perdu le toulonnais
mais non!!!!
quand on fait un commandbars.add("nom de la bar",.....)
et que l'on ferme le fichier
ben je vous le donne dans le mille la commandbar elle RESTE!!!! car c'est au niveau supérieur au workbook que l'on travaille (l'application)
la j'ai tout dis, le reste se devine tout seul
et pour le coup c'est invisible 😛 😉
je fait un exemple ou tout le monde a compris

donc a moins de faire un commandbars.reset ou supprimer la bar ben c'est jamais perdu
je précise pour ceux qui se perdraient dans mes idées loufoques qu'il n'est nullement question ici de faire un show sur la barre

Re-patrick : vu mon niveau en vba un exemple serait sympa 🙂
lionel,
 
Bonjour Lionel, Roblochon, patricktoulon,

Sauf si l'on tripote les CodeNames, les feuilles créées ont des CodeNames numérotés dans l'ordre de création : Feuil1 Feul2...Feuil10...

Donc cette macro devrait faire l'affaire :
VB:
Sub derniere_feuille()
Dim txt$, a(), i%
txt = "Feuil" 'début des CodeNames à adapter suivant la version Excel
ReDim a(1 To Sheets.Count, 1 To 2)
For i = 1 To Sheets.Count
    a(i, 1) = Val(Replace(Sheets(i).CodeName, txt, ""))
    a(i, 2) = Sheets(i).Name
Next
i = Application.Max(Application.Index(a, , 1))
Sheets(Application.VLookup(i, a, 2, 0)).Activate
End Sub
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour