Fonction personnalisé RESOLU

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 !

PRAETOR

XLDnaute Nouveau
Bonsoir,
j'ai créer une fonction perso. qui me renvoi le nom du classeur sous différentes formes.
Code:
Option Explicit
Public Function NomClasseur(r As Integer) As String
Dim i As Integer
Dim PresenceVersion As Boolean
'si r=-1  renvoi le nom du classeur sans son suffixe
'         et sans sa version
'si r=0   renvoi le nom du classeur sans son suffixe
'si r=1   renvoi le nom du classeur avec son suffixe

  If r = 0 Then
    N$ = Application.Caller.Parent.Parent.Name
      If Len(N$) > 4 Then
         NomClasseur = Left(N$, Len(N$) - 4)
           Else
         NomClasseur = N$
      End If
  End If
  If r = -1 Then
    N$ = Application.Caller.Parent.Parent.Name
      For i = 1 To Len(N$)
        If Mid(N$, i, 2) = "_V" Then PresenceVersion = True
      Next i
    If PresenceVersion = True Then  'If Len(N$) > 9 Then
       NomClasseur = Left(N$, Len(N$) - 9)
           Else
       NomClasseur = Left(N$, Len(N$) - 4)
    End If
  End If
  If r = 1 Then
    N$ = Application.Caller.Parent.Parent.Name
    NomClasseur = N$
  End If
End Function
La fonction marche bien, seulement si je change le nom de mon classeur, il me faut activer la cellule, ou se trouve ma formule " =NomClasseur(-1) ", puis valider pour que celle-ci ce mette à jour.
Le calcul Automatique est bien activé dans les options.
J'aimerai que dès l'ouverture du classeur les cellules concernées se mettent à jour automatiquement.

Merci de m'expliquer ce qui cloche.

Thierry.
 
Dernière édition:
Re : Fonction personalisé

Re Bonsoir,

Je viens de trouver une solution à mon problème en modifiant ma fonction ainsi :

Code:
Function NomClasseur(wbook As String, r As Integer) As String
Dim i As Integer
Dim PresenceVersion As Boolean
'si r=-1  renvoi le nom du classeur sans son suffixe
'         et sans sa version
'si r=0   renvoi le nom du classeur sans son suffixe
  If r = 0 Then
      If Len(wbook) > 4 Then
         NomClasseur = Left(wbook, Len(wbook) - 4)
           Else
         NomClasseur = wbook
      End If
  End If
  If r = -1 Then
      For i = 1 To Len(wbook)
        If Mid(wbook, i, 2) = "_V" Then PresenceVersion = True
      Next i
    If PresenceVersion = True Then  'If Len(wbook) > 9 Then
       NomClasseur = Left(wbook, Len(wbook) - 9)
           Else
       NomClasseur = Left(wbook, Len(wbook) - 4)
    End If
  End If
End Function
Dans ma cellule "D3" =NonClasseur($D$2;-1)
Dans ma cellule "D4" =NonClasseur($D$2;0)
Dans la cellule "D2" je renvoi, à chaque ouverture de la feuille,
par un Cells(2, 4) = ActiveWorkbook.Name dans Private Sub Worksheet_Activate()
le nom du classeur et de ce fait la modification de la cellule "D2" provoque le recalcul de "D3" et "D4".

Il y a peut être une autre solution.....?

Bonne soirée à tous,
Thierry.
 
- 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

Réponses
2
Affichages
163
Réponses
8
Affichages
486
  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
173
Réponses
8
Affichages
238
Retour