Renomer mes feuilles de classeur Excel
Bonjour,
Je cherche un code VBA pour reprendre dans chaque feuille du classeur les cellules A5 et B2 comme nom de feuille.
J'ai essayé de noter ceci dans VBA:
Sub Renommer_onglets()
ActiveSheet.Name = [A5] & [B2]
End Sub
Pour que cela fonctionne, il faut que je me mette sur chaque feuille du classeur et que j'active ma macro. Cela est donc trop long....
J'aimerais appuyer sur ma macro et que cela se fasse automatique pour tout mon classeur en activant qu'une seule fois ma macro.
De plus, il faudrait rajouter une condition du nombre de lettres à 25 pour le nom de l'onglet.
Pourriez-vous me dire quoi noter dans VBA ?
Merci d'avance.
Sandrine.
Hello,
De plus, il faudrait rajouter une condition du nombre de lettres à 25 pour le nom de l'onglet.
J'ai pas bien compris ce que tu souhaites faire
Tu ne pourras pas mettre 2 fois le même nom dans ton classeur
Je souhaite que toutes les feuilles de mon classeur correspondent aux noms de mes cellules A5 et B2 fusionnées de chaque feuille et ceux sur tout mon classeur.
Les noms des cellules sont bien sûr différentes sur toutes mes feuilles du classeur, il n'y aura pas deux fois le même nom .
Dans le nom de chaque feuille je souhaite que la macro reprennent uniquement les 25 premiers caractères de mes cellules A5 et B2.
Est ce plus clair ?
Merci.
Bonjour
un exemple
la macro est dans le thisworkbook
si cela te convient tu passes le sujet en résolu
Cordialement
Bonjour le forum
Bonjour sandrine-c, Joco7915
Je te propose ce code. Attention les 2 espaces vides compris entre & " "& sont considérés comme 2 caractères de la chaine des 25.
Option Explicit
Sub Renommer_Nom_Feuilles()
Dim Sh As Worksheet, Txt As String
For Each Sh In Sheets
With Sh
Txt = .Range("A5") & " " & .Range("B2")
.Name = Left(Txt, 25)
End With
Next Sh
End Sub
Bonjour…
Autre proposition tenant compte des changements de saisies dans les différentes cellules de base* :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal R As Range)
If R.Address = "$A$5" Then
Sh.Name = "OUPS_" & [B2]: R.Font.Color = vbRed
R.Font.Color = vbBlack: Sh.Name = Left([A5], 25) & "_" & [B2] ‘noir pour la couleur d’origine
End If
If R.Address = "$B$2" Then
Sh.Name = Left([A5], 25) & "_OUPS": R.Font.Color = vbRed
R.Font.Color = vbBlack: Sh.Name = [A5] & "_" & [B2]
End If
End SubEn cas d’erreur pour le changement de contenu d’une seule des 2 cellules prévues dans l’onglet actif, un message de contrôle d’Excel indique une inadaptation et le nom de la saisie est remplacé par OUPS (pour le visuel).
*s’il y a d’autres onglets non concernés par cette étape, c’est une autre histoire : il faudra réadapter ce code !
Remarque personnelle :
«si le sujet te semble résolu signale le» je trouve que cette condition est à éviter dans la mesure où elle peut empêcher tout autre intervenant de proposer une solution (plus complète voir plus simple, …) sachant qu’il est rare d’avoir un contexte précis donc qui peut engendrer des mises à jour incessantes.
Par contre je suis pour proposer «si cela t'a plu, n'oublie pas de "liker"» pour des remerciements envers les intervenants qui ont donné un peu de temps pour aider le demandeur.
Bonne fin de journée aux lecteurs de passages .
Bonsoir le fil
Bonsoir Ordonc
@Ordonc - Sandrine recherche une macro pour renommer TOUTES les feuilles de son classeur :
Je cherche un code VBA pour reprendre dans chaque feuille du classeur les cellules ... J'aimerais appuyer sur ma macro et que cela se fasse automatique pour tout mon classeur en activant qu'une seule fois ma macro.
Ton code fait son "job" pour chaque nouvelle feuille créée et ce de façon dynamique mais je ne pense pas (peut être me trompe je) que c'est cela qu'elle désirait.
Nota : Concernant la phrase : "Si le sujet te semble résolu signale le". Tu n'as pas tord dans ton raisonnement mais lorsqu'un demandeur remarque un sujet dit "Résolu", il peut se dire : là, je peux peut être avoir la solution à mon problème - Tout cela n'engage que moi bien sur. Et rien n'empêche toute nouvelle réponse (Le sujet remonte).
Bonne soirée à toi ainsi qu'à toutes & à tous
@micalement à toi - Eric
Bonsoir,
Merci à tous pour votre aide.
@Ericool02, tu réponds parfaitement à ma demande, ça fonctionne parfaitement et je comprends la macro. Merci beaucoup
Bonne soirée à tous.
Re…
Sandrine, si tu pars de l’idée que toutes tes saisies conviendront (tu connais tous les risques courus et pourtant il y en a énormément !) tu peux te contenter du code de Ericcool02 (salut
Cependant, mais, hé oui (il y en a toujours un), s’il y a une saisie refusée (du genre depuis:) dans le premier (ou autre) onglet, la macro s‘arrêtera et il n’y aura pas de mises à jour pour les noms suivants pourtant valides.
Pour ce faire, il faudra corriger les erreurs. Dans le fichier joint, supprimer(exemple avec un seul refus) les : pour ne garder que depuis et relancer la macro !
Ma proposition part du principe «Il vaut mieux prévenir que guérir !» et que je n’ai pas en tête toutes les conditions de refus ! J'évite les blocages en signalant les causes à corriger !
Nota : toutes les feuilles créées d'un classeur sont nommées (et cela sans doublon), non ?
Bonne continuation à tous les lecteurs ...