Execution de macro feuille 4 à 42 quand modification cellules feuille 1

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 !

castor123456

XLDnaute Nouveau
Bonjour

Je suis novice en la matière. Je recherche une macro permettant de renommer les onglets (à partir de la cellules "c4" de chaque feuille) des feuilles 4 à 42 quand je modifie une plage de cellules en feuille 1. Les feuilles 1 à 3 ne doivent pas être renommées.

La feuille 1 s' appel Bilan (récapitulatif des feuilles 4 à 42). En colonne C de cette feuille, je saisie des numero de client. Chaque ligne correspond à une feuille (4 à 42). ex : C3 de la feuille bilan est liée a la cellule C4 de la feuille 4, C4 de la feuille bilan est liée à C4 feuille 5, ... , C41 de la feuille bilan est liée a la cellule C4 de la feuille 42.
Donc je souhaiterai que dés modification d'une des cellules de la colonne C (C3 : C42) de la feuille bilan que la macro renommer onglet s'exécute. Les onglets ne doivent être renommés qu'à partir de la feuille 4 jusqu'à la feuille 42 (dernière feuille du classeur). Je souhaiterai que les onglets portent le nom contenu dans la cellule C4 de chaque feuille. ex : C4 feuille 4 = nom onglet feuille 4 , ... , C4 feuille 42 = nom onglet feuille 42.

J'espère avoir été clair dans mon explication. N'hésitez pas à me poser des questions.

Merci d'avance.
 
Re : Execution de macro feuille 4 à 42 quand modification cellules feuille 1

Bonjour castor123456,
Pouvez vous poster un classeur exemple avec les quatres premières feuilles et en enlevant les données non utiles (moins de 48,8K0)
Cordialement
 
Re : Execution de macro feuille 4 à 42 quand modification cellules feuille 1

Bonjour Castor, Efgé, bonjour le forum,

La remarque d'Efgé est fort juste...

Si j'ai bien compris ta demande, je te propose la macro événementielle Change à placer par VBE dans l'onglet Bilan :
Code:
Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque changement dans l'onglet
If Not Application.Intersect(Target, Range("C3:C42")) Is Nothing Then 'condition : si le changement à lieu dans la plage C3:C42
    For x = 4 To 42 'boucle sur les onglets 4 à 42
        Sheets(x).Name = Sheets(x).Range("C4").Value 'renomme l'onglet en fonction de la cellule C4 de celui-ci
    Next x 'prochain onglet de la boucle
End If 'fin de la condition
End Sub
 
Re : Execution de macro feuille 4 à 42 quand modification cellules feuille 1

Re castor123456, Bonjour Robert
Je propose une autre vesion pour le même résultat mais sans s'appuyer sur le numéro des feuilles à renommer.
Pour ne pas renommer les trois premières il faut mettre leurs noms dans les zones en rouges.
Comme on ne connait pas la plage à prendre en compte pour lancer la macro j'ai pris A1:A50.

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A1:A50")) Is Nothing And Target.Count = 1 Then
    Dim feuille As Worksheet
        For Each feuille In ThisWorkbook.Worksheets
            If Not feuille.Name = "[COLOR=red][B]Bilan[/B][/COLOR]" Or Not feuille.Name = "[COLOR=red][B]Bilan[/B][/COLOR]" Or Not feuille.Name = "[COLOR=red][B]Bilan[/B][/COLOR]" Then
                feuille.Name = Sheets(feuille.Name).Range("C4").Value
            End If
        Next
End If
End Sub
A mettre dans le code la feuille
Cordialement
PS Robert, Content que ma MsgBox vous ai plus 😉.
 
Re : Execution de macro feuille 4 à 42 quand modification cellules feuille 1

Re à tous,
Robert,Je me suis basé sur :
quand je modifie une plage de cellules en feuille 1
Pour moi, je ne sait pas pourquoi, je passe toujours par SelectionChange
Je n'ai pas pensé à utiliser Worksheet_Change , il faudra que j'y pense désormais...
Merci de ta remarque.
Cordialement
 
Re : Execution de macro feuille 4 à 42 quand modification cellules feuille 1

Bonjour le fil, bonjour le forum,

Oui justement, Modifier = Change, sinon ton code s'effectue chaque fois que tu déplaces (SélectioChange) le curseur dans l'onglet... Ça peut ralentir considérablement !

Au fait Efgé t'as des nouvelles de Castor ? Il est pas mort au moins...
 
Re : Execution de macro feuille 4 à 42 quand modification cellules feuille 1

Merci pour vos réponses. J'ai choisit la solution d'Efgé qui est parfaitement adapté a ma problématique d'après le classeur "castor123456". Je viens de la copier et d'essayer mais quand la macro s'exécute, elle renomme aussi les feuilles qui ne devraient pas être renommées.
 
Re : Execution de macro feuille 4 à 42 quand modification cellules feuille 1

Re
castor123456, avez vous bien changé le nom des feuilles à proptéger comme je vous l'ai indiqué dans mon post (les zones en rouge).
Nous en revenons toujours au même problème: pas de fichier exemple.
Cordialement
 
Re : Execution de macro feuille 4 à 42 quand modification cellules feuille 1

oui, j'ai modifié le nom des feuilles.

Je vous joint le fichier original un peu simplifié pour ne pas dépasser 48ko.

Les pages qui ne sont pas a renommer sont les 5 premières de "Données" à "BILAN".

Saisie des numéros dans feuilles "bilan" colonne B (B3 à B42) et liaison avec les feuilles notés par des lettres ("a" à "an"). La cellules B3 ("bilan") est liée avec la cellules C4 de la feuille "a", B4 "bilan" est liée avec C4 feuille "b" et ainsi de suite.

La feuille "a" devra porter comme nom la cellule C4 de la feuille "a", la feuille "b" devra porter comme nom la cellule C4 de la feuille "b" ...

Cette macro sera exécutée dés qu'une des cellules (B3 à B42) de "bilan" sera modifiée.

voilou
 

Pièces jointes

Re : Execution de macro feuille 4 à 42 quand modification cellules feuille 1

Re
Voici le retour. J'ai supprimé pas mal de feuilles...
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B3:B42")) Is Nothing And Target.Count = 1 Then
    Dim f As Worksheet
        For Each f In ThisWorkbook.Worksheets
            If Mid(f.Name, 1, 4) <> "BILA" Then
                If Not f.Name = "Données" Then
                    f.Name = Sheets(f.Name).Range("C4").Value
                End If
            End If
        Next
End If
End Sub
Je ne sais pas pourquois mais le "Or" ne fonctionne pas , étrange...
Cordialement
 

Pièces jointes

- 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