Comment éviter qu'une fonction VBA d'un classeur soit lancée par un autre classeur ?

  • Initiateur de la discussion Initiateur de la discussion Danava
  • Date de début Date de début

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 !

Danava

XLDnaute Nouveau
Bonjour,

Je réalise actuellement un récapitulatif de fiches clients.
J'ai une fiche client par onglet et un onglet récapitulatif qui reprend la totalité des informations de chaques onglets. Exemple en pièce jointe avec toto et maman... Il faut imaginer que j'ai en fait plus de 100 clients.

J'utilise deux fonctions VBA pour récupérer les noms des onglets en automatique dans l'onglet "Recap" :

Function nomOnglet(n)
Application.Volatile
nomOnglet = Sheets(n).Name
End Function

Function nbOnglets()
Application.Volatile
nbOnglets = Sheets.Count
End Function

Je me suis inspiré de codes VBA trouvé sur le net. Je compose, je n'ai pas le niveau pour créer...

Le problème :
Le fichier Excel "client.xlsm" fonctionne parfaitement lorsqu'il est ouvert seul mais il suffit que j'ouvre en parallèle un autre fichier Excel est que je rentre dans une cellule (en faisant F2 par exemple) pour que mon onglet "Recap" du fichier "client.xlsm" reprenne les noms des onglets du 2ème fichier Excel ouvert... Tout revient dans l'ordre lorsque je rentre dans une cellule du fichier "client.xlsm" mais cela ne fait pas très pro et le fichier est destiné à une trentaine d'utilisateurs qui n'auront pas la patience de faire ce type de manip...

En résumé, comment éviter qu'une fonction VBA d'un classeur soit lancée par un autre classeur ?
J'imagine qu'il s'agit d'une particularité de l'Application.Volatile mais serait-il possible que l'actualisation de l'onglet "Recap" soit dédié seulement au fichier Excel comprenant mes clients? L'objectif étant de pouvoir travailler sur d'autres fichiers Excel en même temps sans faire disparaître les informations de l'onglet "Recap" du fichier client...

J'ai essayé Application.Volatile (False) mais cela n'est pas satisfaisant car le fichier "client.xlsm" est sensé être "vivant", c'est à dire qu'il y aura des ajouts et suppressions de fiches clients (suppression et création de nouveaux onglets) qui doivent être pris en compte automatiquement par l'onglet "Recap"...

Merci encore pour vos conseils avisés.

Bien amicalement,
Danava
 

Pièces jointes

Re : Comment éviter qu'une fonction VBA d'un classeur soit lancée par un autre classe

Bonjour Danava et bienvenue sur le forum,

Sans avoir testé, peut-être ceci, afin de limiter ta fonction à ton classeur en spécifiant "ThisWorkbook"

VB:
Function nomOnglet(n)
Application.Volatile
nomOnglet = ThisWorkbook.Sheets(n).Name
End Function

Function nbOnglets()
Application.Volatile
nbOnglets = ThisWorkbook.Sheets.Count
End Function

A tester...
 
Re : Comment éviter qu'une fonction VBA d'un classeur soit lancée par un autre classe

Bonjour Grand Chaman Excel !

Ta solution fonctionne parfaitement !

Pour être certain, j'ai fait tous les tests possibles avec un deuxième fichier Excel ouvert et en réalisant simultanément des actions sur les deux fichiers Excel :
1- Insérer un onglet "fiche client" en le copiant d'un fichier Excel source vers le fichier cible "client.xlsm" + action sur fichier parallèle : OK
2- Créer un onglet "fiche client" directement dans le fichier cible "client.xlsm" + action sur fichier parallèle : OK
3- Insérer feuille (vierge) dans le fichier cible "client.xlsm" sans autre action : Non OK... mais dès qu'une action est réalisée dans le fichier cible "client.xlsm" (et seulement dans ce fichier) : OK !

Je me cassais réellement les dents sur cet aspect donc un GRAND MERCI Grand Chaman Excel !

PS : c'est sûrement le fruit du hasard mais je suis en train de lire actuellement une anthologie du chamanisme... 😉 !
 
- 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