Bonjour,
Avec l'aide de BrunoM45 (merci encore), j'étais arrivé à ceci :
Notre contributeur évoquait d'éventuels "effets de bord" ; je crois comprendre ce qu'il voulais dire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Function NomFeuilPrec() As String Dim NomF As String Application.Volatile 'Exécute la fonction lors de tout recalcul NomF = Application.Caller.Worksheet.Name 'Récupère le nom de la feuille qui appelle la fonction If Not ActiveSheet.Index = 1 Then NomFeuilPrec = Worksheets(Sheets(NomF).Index - 1).Name 'Détermine la feuille précédente End Function
Je lis ici : https://silkyroad.developpez.com/vba/fonctions/
Dans la feuille ?Ajoutez la ligne d'instruction Application.volatile en début de fonction lorsque celle-ci est utilisée dans la feuille et doit être recalculée automatiquement à chaque fois qu'une modification ou un calcul est effectué dans une cellule quelconque du classeur.
J'ai mis cette fonction dans un module standard puisque le calcul concerne toutes les feuilles mais je me demande si je n'ai pas fait une erreur car le re-calcul me paraît intempestif.
Il y a une erreur dans le code suivant (module standard) mais je n'arrive pas à l'exécuter pas à pas car ça boucle sur Function NomFeuilPrec() :
J'imagine que c'est l'arbre qui cache la forêt et que cette fonction volatile a d'autres effets indésirables que je ne "maîtrise" manifestement pas du tout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub Rec_Onglets() 'Workbook_NewSheet(ByVal Sh As Object) Dim ws As Worksheet, i As Integer i = 2 Sheets("synthèse").Rows(2).ClearContents For Each ws In Application.Worksheets If ws.Name <> "synthèse" Then Sheets("synthèse").Range(i & 1) = ws.Name i = i + 1 End If Next ws End Sub
En vous remerciant par avance pour votre aide.
Cordialement,
PS : la cellule $F$2 contient une date (qui peut être modifiée manuellement) et qui renomme l'onglet de ladite feuille. C'est donc cette date qui détermine la feuille actuelle et donc la précédente.
Partager