J'aimerais renommer mes onglets en fonction des valeurs de cellules de A1àA2 et B1àB20.
J'ai trouvé ceci qui fonctionne pour une cellule (A1) mais je n arrive pas à associer les autres éléments.
""Sub TabNameA1()
Dim Feuille As Worksheet
For Each Feuille In Worksheets
If Feuille.Range("A1&B1") <> "" Then
Feuille.Name = Feuille.Range("A1&B1").Value
End If
Next Feuille
End Sub""
Dès que j ajoute "&B1" cela ne marche plus.
Merci pour votre aide
Re : La valeur de 2 cellules = le noms des onglets
Merci pour ta réponse
Cela fonctionne parfaitement pour le 1 onglet.
Je dois réecrire le code pour chaque cellule ? ou il y a un moyen de créer une boucle?
Re : La valeur de 2 cellules = le noms des onglets
Je te joins le fichier
Tu comprendras mieux ma demande
Je ne parle pas encore bien l'excellois
J'ai 100 feuilles à faire qui se nommeraient A1 B1,A2 B1 ,A3 B1 en fonction de la selection du menu tu arriverais à la fenêtre correspondante.
Mais 20 * 20 = 400 feuilles à faire
Re : La valeur de 2 cellules = le noms des onglets
Re
a essayer
Si j'ai bien compris il s'agit de créer une feuille basée sur un modèle et non pas de créer des feuilles vierges.
J'ai copier une feuille que j'ai nommé "Modèle" et supprimé les feuilles Ax Bx existantes.
les noms de feuilles sont crées avec le contenu des cellules A et B . S'il fallait juste nommer ces feuilles A1 B1, A2 B4, ... on pourrait le faire sans passer par le contenu des cellules A et B.
Code:
...
Dim i, j, NomFeuille As String
For i = 1 To 20
For j = 1 To 20
NomFeuille = Range("A" & j) & " " & Range("B" & i)
Worksheets("Modèle").Copy After:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = NomFeuille
Next
Next
...
Chez moi ce code ne peut arriver à son terme. erreur 1004 ...
Apparemment cette anomalie n'est pas rare, mais pas trouvé de parade.
Sur une machine plus puissante que la mienne, peut-être ....
Re : La valeur de 2 cellules = le noms des onglets
Re ,
Oui tu as raison pour les variables , elles étaient en variant et pas en string .
Et non , pas un problème de machine
Voici un exemple à mettre dans un fichier contenant un onglet modele
Code:
Option Explicit
Sub copie()
Dim Tourne As Long
Dim NomTempo As String
Application.Workbooks.Add
ActiveWorkbook.SaveAs "En_création.xlsx"
For Tourne = 1 To 80
If Tourne > 1 And Tourne Mod 40 = 0 Then Application.Workbooks(NomTempo).Close False
If Tourne Mod 40 = 0 Or Tourne = 1 Then
Application.Workbooks.Add
NomTempo = ActiveWorkbook.Name
ThisWorkbook.Sheets("Modele").Copy before:=Workbooks(NomTempo).Sheets(1)
ActiveSheet.Name = "Modele"
End If
Workbooks(NomTempo).Sheets("Modele").Copy before:=Workbooks("En_création.xlsx").Sheets(1)
Next Tourne
End Sub