Microsoft 365 Renommer une feuille selon la valeur d'une cellule (suite)

BZHPSYCOW

XLDnaute Nouveau
[URGENT]
Bonjour,
Je suis totalement novice en Macro et pour ma 1ère macro,
j'ai vu le topic qui traite mon besoin ("Renommer une feuille selon la valeur d'une cellule").
Par contre, j'ai plus de 150 feuilles à renommer ainsi :(
J'ai bien utilisé le code fourni précédemment :
VB:
Sub nom_onglet()
ActiveSheet.Name = Range("e1")
End Sub
...mais le pb est que je dois passer sur chaque feuille pour exécuter la macro :(
N'y a-t-il moyen d'exécuter la macro une fois pour l'ensemble des feuilles ?
 
Solution
Et si je dois faire un mixte des 2 : j'ai des feuilles cachées qu'on ne va pas renommer et (par exclusion) des feuilles visibles qu'il ne faut pas renommer, c'est possible ? il faut peut-être imbriquer des if ? Je ne parviens pas à imbriquer les 2 if :(

Voià, voilou:
VB:
Sub RenommerC1()
' Dans la constante Exclusion, indiquez les noms des onglets à exclure séparés par une virgule
' et on ne renomme pas les feuilles masquées
Const Exclusion = "TOTO,titi"

Dim F
   On Error GoTo Err001
   For Each F In ThisWorkbook.Worksheets
      If InStr(1, "," & Exclusion & ",", "," & F.Name & ",", vbTextCompare) = 0 And _
         F.Visible = xlSheetVisible Then
            F.Name = F.Range("e1").Value
      End If
   Next F
   Exit Sub...

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour BZHPSYCOW,

Juste un point issue de la charte - partie demandeur:
2 – Tous les membres du forum répondent gracieusement aux questions. Il n’y a donc aucune obligation de résultat et de délai. Les mots URGENT, SOS, AU SECOURS sont donc à bannir.

Cela dit, pour la question, on peut se baser sur ceci :
VB:
Sub RenommerC1()
Dim F
   On Error GoTo Err001
   For Each F In ThisWorkbook.Worksheets
      F.Name = F.Range("e1").Value
   Next F
   Exit Sub

Err001:
   MsgBox "La feuille de nom <" & F.Name & "> n'a pas pu être renommée" & vbLf & _
      "avec le nom <" & F.Range("e1").Value & ">." & vbLf & _
      "L'erreur suivante s'est produite: Erreur n° " & Err.Number & vbLf & _
      Err.Description, vbCritical
      Resume Next
End Sub

nota: en général, la question suivante est: Et si on doit exclure certaines feuilles ?
 

BZHPSYCOW

XLDnaute Nouveau
Bonjour BZHPSYCOW,

Juste un point issue de la charte - partie demandeur:


Cela dit, pour la question, on peut se baser sur ceci :
VB:
Sub RenommerC1()
Dim F
   On Error GoTo Err001
   For Each F In ThisWorkbook.Worksheets
      F.Name = F.Range("e1").Value
   Next F
   Exit Sub

Err001:
   MsgBox "La feuille de nom <" & F.Name & "> n'a pas pu être renommée" & vbLf & _
      "avec le nom <" & F.Range("e1").Value & ">." & vbLf & _
      "L'erreur suivante s'est produite: Erreur n° " & Err.Number & vbLf & _
      Err.Description, vbCritical
      Resume Next
End Sub

nota: en général, la question suivante est: Et si on doit exclure certaines feuilles ?

Je viens de tester et j'ai 150 fois le même msg d'erreur (modulo le nom de l'onglet ;)):
1587989872438.png
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Cette erreur vient du fait que le nom de renommage est vide <>.

Dans le code de la première version, j'avais renommé avec C1 au lieu de E1 (étourderie :mad:)
Le message a été corrigé. Là où on a c1, remplacer par e1.

Si l’erreur persiste, alors fournir un petit fichier test avec un cas d'erreur.
 

BZHPSYCOW

XLDnaute Nouveau
Re,

Cette erreur vient du fait que le nom de renommage est vide <>.

Dans le code de la première version, j'avais renommé avec C1 au lieu de E1 (étourderie :mad:)
Le message a été corrigé. Là où on a c1, remplacer par e1.

Si l’erreur persiste, alors fournir un petit fichier test avec un cas d'erreur.

Alors, je viens de corriger et cela fonctionne bien.
Sauf que (sinon ce serait trop facile), j'avais oublié que j'avais des feuilles cachées à ne pas renommer... Comment puis-je ajouter des exceptions dans le code fourni ?
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Sauf que (sinon ce serait trop facile), j'avais oublié que j'avais des feuilles cachées à ne pas renommer... Comment puis-je ajouter des exceptions dans le code fourni ?

Je savais bien qu'elle viendrait cette question ;)

Ici on passe les feuilles ayant pour nom (nom sur l'onglet) les noms "Toto" et "titi".
VB:
Sub RenommerC1()
' Dans la constante Exclusion, indiquez les noms des onglets à exclure séparés par une virgule

Const Exclusion = "TOTO,titi"

Dim F
   On Error GoTo Err001
   For Each F In ThisWorkbook.Worksheets
      If InStr(1, "," & Exclusion & ",", "," & F.Name & ",", vbTextCompare) = 0 Then
         F.Name = F.Range("e1").Value
      End If
   Next F
   Exit Sub

Err001:
   MsgBox "La feuille de nom <" & F.Name & "> n'a pas pu être renommée" & vbLf & _
      "avec le nom <" & F.Range("e1").Value & ">." & vbLf & _
      "L'erreur suivante s'est produite: Erreur n° " & Err.Number & vbLf & _
      Err.Description, vbCritical
      Resume Next
End Sub
 

BZHPSYCOW

XLDnaute Nouveau
Je savais bien qu'elle viendrait cette question ;)

Ici on passe les feuilles ayant pour nom (nom sur l'onglet) les noms "Toto" et "titi".
VB:
Sub RenommerC1()
' Dans la constante Exclusion, indiquez les noms des onglets à exclure séparés par une virgule

Const Exclusion = "TOTO,titi"

Dim F
   On Error GoTo Err001
   For Each F In ThisWorkbook.Worksheets
      If InStr(1, "," & Exclusion & ",", "," & F.Name & ",", vbTextCompare) = 0 Then
         F.Name = F.Range("e1").Value
      End If
   Next F
   Exit Sub

Err001:
   MsgBox "La feuille de nom <" & F.Name & "> n'a pas pu être renommée" & vbLf & _
      "avec le nom <" & F.Range("e1").Value & ">." & vbLf & _
      "L'erreur suivante s'est produite: Erreur n° " & Err.Number & vbLf & _
      Err.Description, vbCritical
      Resume Next
End Sub

Rien à dire, c'est parfait ! Merci :)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

La version excluant les feuilles masquées:
VB:
Sub RenommerC1()
'on ne renomme pas les feuilles masquées

Dim F
   On Error GoTo Err001
   For Each F In ThisWorkbook.Worksheets
      If F.Visible = xlSheetVisible Then
         F.Name = F.Range("e1").Value
      End If
   Next F
   Exit Sub

Err001:
   MsgBox "La feuille de nom <" & F.Name & "> n'a pas pu être renommée" & vbLf & _
      "avec le nom <" & F.Range("e1").Value & ">." & vbLf & _
      "L'erreur suivante s'est produite: Erreur n° " & Err.Number & vbLf & _
      Err.Description, vbCritical
      Resume Next
End Sub
 

BZHPSYCOW

XLDnaute Nouveau
Re,

La version excluant les feuilles masquées:
VB:
Sub RenommerC1()
'on ne renomme pas les feuilles masquées

Dim F
   On Error GoTo Err001
   For Each F In ThisWorkbook.Worksheets
      If F.Visible = xlSheetVisible Then
         F.Name = F.Range("e1").Value
      End If
   Next F
   Exit Sub

Err001:
   MsgBox "La feuille de nom <" & F.Name & "> n'a pas pu être renommée" & vbLf & _
      "avec le nom <" & F.Range("e1").Value & ">." & vbLf & _
      "L'erreur suivante s'est produite: Erreur n° " & Err.Number & vbLf & _
      Err.Description, vbCritical
      Resume Next
End Sub


Et si je dois faire un mixte des 2 : j'ai des feuilles cachées qu'on ne va pas renommer et (par exclusion) des feuilles visibles qu'il ne faut pas renommer, c'est possible ? il faut peut-être imbriquer des if ? Je ne parviens pas à imbriquer les 2 if :(
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 196
Messages
2 086 099
Membres
103 116
dernier inscrit
kutobi87