XL 2016 Nommer onglet automatiquement

AdrienSLAP

XLDnaute Nouveau
Bonjour le forum, je rencontre un probleme avec les nom automatique de mes onglets. J'utilise un VBA pour les nommer automatiquement :

Private Sub Worksheet_Activate()
If Sheets("Données CSV").Range("E8") = "" Then
ActiveSheet.Name = "Collone 1"
Else
ActiveSheet.Name = Sheets("Données CSV").Range("E8")
End If
End Sub

Je nomme mon onglet en fonction de la case "E8" mais lorsque celle-ci se finit par une apostrophe ou un autre caractère spécial, excel refuse de nommer l'onglet. De plus, je me sert de cette même formule pour nommer d'autres onglet dans le même classeur mais il arrive que par exemple, 2 onglets nommer avec respectivement les cases "E8" et "H8", ces dernières contiennent la même chose, donc je ne peux nommer mes onglets.
J'aurais besoin d'aide pour résoudre mon problème, je voudrais si c'est possible que lorsqu'il y a une apostrophe, le code la remplace par "(bis)" (Exemple : "E8" contient
" Bonjour' ", et je voudrais que l'onglet se nomme " Bonjour(bis) "). Mais aussi que lorsque le un autre onglet possède déjà le nom voulu, il rajoute a la fin "bis" également (exemple : "E8" et "H8" se nomment tout 2 "Bonjour", Je voudrais que l'onglet associer à "E8" se nomme "Bonjour" et que celui à "H8" s'appel "Bonjour(bis)").

Et en option disons, je voudrais savoir si c'est possible d'actualisé les feuilles sans avoir à cliquer dessus.

PS : Petite contrainte, je ne peux pas modifier les cellules d'ou les onglets tirent leur noms ("E8" et "H8").
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Désolé de n'avoir pas répondu, mais je ne comprends pas :
Et en option disons, je voudrais savoir si c'est possible d'actualisé les feuilles sans avoir à cliquer dessus.
Vous pouvez actualiser toutes les feuilles sans cliquer dessus. Mais il faut que l'actualisation soit provoquer par un événement ( clic sur bouton, changement de feuille, ouverture fichier ... )
Je ne sais pas à quel moment et sous quelles conditions vous voulez actualiser. La solution dépend de votre contexte.
 

AdrienSLAP

XLDnaute Nouveau
Désolé de n'avoir pas répondu, mais je ne comprends pas :

Vous pouvez actualiser toutes les feuilles sans cliquer dessus. Mais il faut que l'actualisation soit provoquer par un événement ( clic sur bouton, changement de feuille, ouverture fichier ... )
Je ne sais pas à quel moment et sous quelles conditions vous voulez actualiser. La solution dépend de votre contexte.
Daccord merci, c'est juste que je ne comprend pas encore très bien comment tout cela fonctionne donc j'ai demandé.
 

Dranreb

XLDnaute Barbatruc
Dans l'explorateur de projet, à la rubrique Microsoft Excel Objets vous avez non pas des feuilles Excel puisque ce sont des entités de l'application hôte et non des objets, mais des objets VBA implantés par celle ci, qui représentent ces entités. Les noms des objets Worksheet sont utilisable comme expression Worksheet. Ils sont suivis de l'indication entre parenthèses du nom de la feuille qu'ils représentent.
Sinon l'autre solution c'est de les isoler par leur position dans la collection Worksheets plutôt que par leur nom. Mais c'est moins fiable à mon avis, surtout si vous êtes susceptible d'ajouter de nouvelles feuilles ou d'en supprimer devant celles concernées.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonsoir.
En tout cas qu'elle soit sélectionnée ou pas, le nom d'une feuille se change en changeant la propriété Name d'une expression Worksheet qui représente cette feuille.
Alors si elle ne doit pas être activée pour cela ça pose deux problèmes :
1) — ActiveSheet ne peut plus convenir comme expression Worksheet, pas plus que Me que vous auriez pu utiliser plutôt, d'ailleurs, il faut en trouver une autre qui garantit de représenter la bonne feuille. Moi pour désigner les entités du classeur portant la macro, j'utilise toujours les noms d'objets de la rubrique Microsoft Excel Objets de l'explorateur de projets.
2) — L'opération ne peut plus se faire lors de son activation, il faut trouver une autre occasion détectable. Par exemple lors du changement de contenu de la cellule E8 ou H8 par une Sub Worksheet_Change dans le module de l'objet Worksheet qui représente la feuille contenant ces cellules.
 
Dernière édition:

Discussions similaires