Microsoft 365 macro renommer onglets

Freedal

XLDnaute Junior
Bonjour,
Sur un classeur de 5 feuilles, j'ai saisi un code sur chaque feuille pour les renommer suivant le contenu d'une cellule dans chaque feuille.
Le contenu de la cellule de référence pour la première feuille est saisi directement mais pour les 4 autres feuilles les cellules de référence contiennent des formules.
Les macros que j'ai insérées dans chaque feuilles fonctionnaient mais après avoir saisi des valeurs dans les feuilles, Excel n'arrête pas de planter.
N'étant pas spécialiste en macro, je soupçonne que les macros calculent en permanence.
Merci de votre aide.
Bonne journée. :cool:
 

Pièces jointes

  • Renommer onglets.xlsm
    88.6 KB · Affichages: 8

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

C'est normal, avant d'appeler un changement de valeur de cellule dans un évènement calculate ou change de feuille ou classeur, utiliser: application.Calculation =xlCalculationManual avant de faire la modification puis rétablir le mode de calcul ensuite.

Mais dans le classeur joint ci-dessous, j'ai une autre proposition à vous faire.
Dans la première feuille vous changer la date en A2 et sur l'évènement Change de la feuille, les feuilles suivantes sont renommée.
J'ai renommer la cellue A2 En 'Date_1'.
Cette date est reprise par formule dans les autres feuilles.

Pour le Calendrier comme l'exemple affichez 2018 et que en feuille 1 on avait 1/1/2026 je ne m'en suis pas occupé. Mais m'est avis que vous devriez appliquer le même principe: Saisir l'année en C2 de calendrier, la nommer AnneeCal (Pas Annee seulement car c'est un nom de fonction excel) l'afficher au format "'Année '0000". Ensuite vous pourriez y faire référence dans toutes vos formule plutôt que des Gauche(......;...) qui alourdissent inutilement.


Dernier point, si vous voulez mettre En A2 de la première feuille une liste de validation avec les années possible, alors nous changerons l'évè
nement change pour calculate, mais dans les règles de l'art, ainsi que les formule et le nom de la cellule.

Cordialement
 

Pièces jointes

  • Renommer onglets-Roblochon.xlsm
    93.5 KB · Affichages: 7

Freedal

XLDnaute Junior
Bonjour Roblochon,:)
Merci pour ta réponse mais je ne parviens pas à ce que ça fonctionne , n'étais-ce pas possible de garder le menu déroulant en C2 qui renvoie la date en A2 sans avoir besoin de saisir manuellement A2 .
Cordialement
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Pourtant je viens de re-essayer et si je tape 1/1/2019 en A2, les feuilles sont bien renommées et les formules mises à jour.
Pour votre demande, à moins que quelqu'un d'autre passe par-là, ce ne sera pas tout de suite... obligations extérieures, ce soir peut-être, demain certainement.

bon après-midi
 

Freedal

XLDnaute Junior
Rebonjour Roblochon,
J'ai fermé le classeur et réouvert et ça fonctionne.
Mais je tiens à mon menu déroulant en C2, je l'ai donc remis et j'ai modifié ton code, j'ai changé A2 en C2,mais c'est pas si simple.
Et pour la feuille Calendrier, ça ne marche pas.
Je te remercie de t'être penché sur mon cas, je vais étudié tes macros. J'espére te revoir. je ne sais pas codé.
Merci encore et A+
Cordialement
 

Freedal

XLDnaute Junior
Bonjour, :)
J'ai trouvé une solution sur le première feuille pour continuer à utiliser le menu déroulant pour changer la date.
Pour la derniére feuille "calendrier" je préfère pouvoir changer l'année par le menu déroulant et j'ai réctiver la macro d'origine sur cette feuille mais par moment ça rame.
Qu'avaient donc mes macros d'origine qui fonctionnaient bien au début et qui une fois des données saisies dans les feuilles faisaient planté Excel ?
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,
Qu'avaient donc mes macros d'origine qui fonctionnaient bien au début et qui une fois des données saisies dans les feuilles faisaient planté Excel ?

J'y ai répondu dès le début du post #2. Il faut lire les réponses et REFLECHIR à leur sens et ce qu'elles impliquent avant de se précipiter pour ouvrir les fichier et lancer les macros.

Je vais voir ce que je peux faire.

bonne journée
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re bonjour,

Voici le fichier modifié. Voir sur la feuille 1 le commentaire près de la cellule A2 puis ensuite le code de la feuille 1 (WorkSheet_Calculate).

Principe général:

Lorsque vous utilisez les évènements calculate d'une feuille ou du classeur faire attention de ne pas ré-entraîner un nouveau calcul, qui tournerait en boucle. Dans le code de la feuille 1 sur l'évènement Calculate, nous changeons les noms de feuilles. Si ces noms de feuilles sont utilisés par des formules dans la feuille alors l'évènement Calculate est rappelé.
Voir la méthode employée pour stopper le mode de calcul et le rétablir une fois les opérations effectuées.

Pour les événements Change c'est le même principe, si vous entraîner un nouveau changement alors le gestionnaire d'évènement risque d'être appelé en boucle.

La méthode pour empêcher ça consiste à employer Application.EnableEvents = False puis faire les changements dans les cellule et ensuite rappeler la gestion des événements par Application.EnableEvents = True.

Cette dernière méthode est radicale. Elle arrêtera TOUS les évènements => d'où la nécessité de bien organiser ses actions dans les macros.


Dans le code de la feuille Calendrier voici le code modifié.
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("C2")) Is Nothing Then
        '
        ' Arrêter la gestion des événements
        ' pour que Worksheet_Change ne soit pas rappelé.
        '
        Application.EnableEvents = False
        ActiveSheet.Name = Range("A3")
        '
        ' Rétablir la gestion des événements
        Application.EnableEvents = True
    End If
End Sub
 

Pièces jointes

  • Renommer onglets-Roblochon - Copie.xlsm
    96.3 KB · Affichages: 4

Freedal

XLDnaute Junior
Merci Roblochon , c'est excellent ce que tu as fais pour moi, je vais bosser sur tes macros,bien les comprendre pour pouvoir les utiliser dans d'autres
cas de figure . Super que des personnes comme toi donnent leur temps et leurs compétences pour d'autres.
Merci encore et bonne journée. :)
 

Discussions similaires

Statistiques des forums

Discussions
311 740
Messages
2 082 047
Membres
101 880
dernier inscrit
Anton_2024