XL 2021 Revenir à la dernière feuille "Créée"

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous :)

LOL, en voilà une bien bonne :)
Je cherche à revenir ou à activer la dernière feuille que j'ai crée...

Particularité :
La feuille crée à le nom de Feuil1 et ensuite je la renomme pour qu'elle ait le nom de mon Client
Pour l'exemple : "A moi les petites Olé Olé P" ou "A moi les p'tits mectons"

Besoin
APRES AVOIR CREE MA NOUVELLE FEUILLE…
Jai activé plusieurs feuilles à la suite et je suis sur une autre feuille active

J'ai besoin de revenir (activer) ma dernière feuille créée soit : "A moi les petites Olé Olé P"ou "A moi les p'tits mectons" selon le nom donné

Je sais comment revenir sur la feuille activée précédemment
Mais je ne trouve rien sur le net pour revenir à la dernière feuille créée

Si mon sujet retient votre attention
Pour test et pour vous expliquer ce que je fais, voici mes actions
:
A partir de la feuille "Facture"
1 en A1, j'entre le n° du Client, 1 ou 2
2 en L33, j'entre le n° du Pack de 2,3 ou 4
3 ma facture se fait et je clique sur le bouton "Go Facture"
4 mon code m'ouvre une nouvelle feuilX que je renomme (toujours avec mon code) du nom de mon Client

En espérant que vous m'aurez compris, auriez-vous la solution ?
Un grand merci à toutes et à tous,
Je joins le fichier test et je continue mes recherches...
:)
 

Pièces jointes

  • Facturation Mois test4.xlsm
    289.2 KB · Affichages: 4
Dernière édition:
Solution
Bonjour à tous,
sauvegarde son nom dans un nom :
VB:
Sub sauverDerF()
    ' créer et renommer ta feuille puis :
    ActiveWorkbook.Names.Add Name:="dernièreFeuille", RefersToR1C1:=ActiveSheet.Name
End Sub

Sub actDerF()
    Worksheets([dernièreFeuille]).Activate
End Sub

Reste accessible même si le fichier a été fermé
eric

eriiic

XLDnaute Barbatruc
Bonsoir Lionel, Job, Eriic, TooFatBoy,
La dernière feuille crée aura toujours le numéro d'index le plus élevé, donc on peut faire :
VB:
Sub DernièreFeuille()
    Nmax = 0
    For Each F In Worksheets
        If F.Index > Nmax Then Nmax = F.Index
    Next F
    Sheets(Nmax).Select
End Sub
Aussi oui, ou Worksheets(Worksheets.Count) plus simple. Vu qu'elle vient d'être crée
A voir si elle reste en dernier...
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonsoir Lionel, Job, Eriic, TooFatBoy,
La dernière feuille crée aura toujours le numéro d'index le plus élevé, donc on peut faire :
VB:
Sub DernièreFeuille()
    Nmax = 0
    For Each F In Worksheets
        If F.Index > Nmax Then Nmax = F.Index
    Next F
    Sheets(Nmax).Select
End Sub
Bsr sylvanu :)
Merci pour l'idée et le code.
Bon sang, mais c'est bien sûr comme dirait le regreté B...
:)
 

job75

XLDnaute Barbatruc
Bonjour Lionel, le forum,

Une autre solution, cette fois-ci en créant un nom dans la feuille créée, dans ThisWorkbook :
VB:
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Sh.Names.Add "Creation", Now
'Sh.Names.Add "Creation", Now, Visible:=False 'avec le nom masqué
End Sub

Sub Activer_DerFeuille()
'se lance par les touches Ctrl+D
Dim w As Worksheet, nom As Name, hmax#, DerFeuille As Worksheet
For Each w In Worksheets
    For Each nom In w.Names
        If nom.Name Like "*!Creation" Then If Evaluate(nom.Name) > hmax Then hmax = Evaluate(nom.Name): Set DerFeuille = w
Next nom, w
If Not DerFeuille Is Nothing Then DerFeuille.Activate
End Sub
Le renommage des feuilles et même leur suppression n'ont plus d'importance.

A+
 

dysorthographie

XLDnaute Accro
Bonjour,
mon code m'ouvre une nouvelle feuilX que je renomme (toujours avec mon code) du nom de mon Client
Je te compredrais jamais tu connais le nom de la feuille et tu ne sais pas l'activer ?
Code:
 Sheets ("Nom Client").Activate

dans ThisWorkbook
VB:
Public NewSheet As Worksheet
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Set  NewSheet = Sh
End Sub

dans Module1
Code:
Sub test()
With ThisWorkbook
    .Sheets.Add
    .NewSheet.Name = "toto"
End With
End Sub
Sub test2()
ThisWorkbook.NewSheet.activate
End sub
 
Dernière édition:

dysorthographie

XLDnaute Accro
Bonjour Lionel,job75 et le forum.
C'est vrai qu'à la prochaine ouverture NewSheet sera réinitialiser mais en réalité il n'a besoin que de la cellule A1 où il Stock le Nº du client peut-être lui faut il un table de relation Nº avec Client ????
en A1, j'entre le n° du Client, 1 ou 2
Du reste il n'avait précisé qu'il voulait réactiver cette feuille dans le cadre de son traitement pas à un nouvel ouverture du fichier.
1 ou 2 ? Type de client ?

Laisse à Lionel le soins de modifier sa demande au fur et à mesure de la discussion,il en a l'habitude, ne lui donne pas d'idée 😎
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour,

Je te compredrais jamais tu connais le nom de la feuille et tu ne sais pas l'activer ?
Code:
 Sheets ("Nom Client").Activate

dans ThisWorkbook
VB:
Public NewSheet As Worksheet
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Set  NewSheet = Sh
End Sub

dans Module1
Code:
Sub test()
With ThisWorkbook
    .Sheets.Add
    .NewSheet.Name = "toto"
End With
End Sub
Sub test2()
ThisWorkbook.NewSheet.activate
End sub
Bonjour à toi :)
"Je te compredrais jamais tu connais le nom de la feuille et tu ne sais pas l'activer ?"
C'est vrai, je ne suis pas facile à comprendre qqfois lol :)
Dans le cas présent, évidement que je la vois, je pourrais cliquer dessus...
Mais c'est par un code dans ma macro que je veux l'activer sachant que :
- c'est la dernière feuille ajoutée,
- quelle a été renommée.
- et que je suis sur une autre feuille après avoir (toujours avec ma macro) plusieurs fois activé d'autres feuilles.

Pour info : "peut-être lui faut il un table de relation Nº avec Client ????"
Dans le classeur test, il y a une feuille avec références Clients
:)
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour au fil :), bonjour le Forum :)
Je vous remercie pour tous vos retours :)
J'ai testé tous vos codes qui fonctionnent nickel.
Toutefois, celui de sylvanu #post 16 "La dernière feuille crée aura toujours le numéro d'index le plus élevé"
Dans mon fichier exemple, cela ne sera pas le cas :
dernière feuille.png

Des feuilles ont été supprimées et d'autres créées.
Le numéro d'index le plus élevé est le 13 et ma dernière feuille créée est le numéro 8
:)
 

dysorthographie

XLDnaute Accro
Bonjour Lionel ,
Si ta macro active plusieurs onglets,puis revient au dernier créé alors ma macro du poste #22 fonction.

Si tu actives plusieurs onglets sugcesivement tes utilisateurs risque l'épilepsie 🫢

Il faut que tu apprennes à bannir de tes codes les select,selection et autre Activate.

Code:
 range("A2").select
Selection.copie
Range("A2").select
Selection.past xlall

Range("A1").Copy Range("A2")
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Le numéro d'index le plus élevé est le 13 et ma dernière feuille créée est le numéro 8
Ca, Lionel, ce n'est pas possible, quelle que soit la configuration. Le N° index est unique dans la vie d'un fichier. Votre feuille N° 8 a peut être été renommée, mais la dernière créé est bien la N°13.
Regardez cet ex :
1- J créé 5 feuilles dans un fichier, j'obtiens ça :
1697358577514.png

2- Je supprime 4 feuilles :
1697358617237.png

3- J'en recrée une :
1697358658635.png

Même renommée elle porte obligatoirement l'index 6, XL a mémorisé toutes les feuilles crées même si celles ci ont été supprimées, donc a bien mémorisé les index de 2 à 5 et ne les ré utilisera jamais.

NB: On parle bien de création de feuilles ? Pas de renommage ou de déplacements.
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 220
Membres
103 158
dernier inscrit
laufin