Onglets renommés par les données d'une plage de cellules

Bonjour,

Cela fait plusieurs jours que je cherche une solution à l'un de mes problèmes, sans résultat.

Débutant tout juste sur les VBA, il est également possible que je n'arrive tout simplement pas à faire fonctionner les éléments que j'ai trouvés.

Voilà mon problème :

Je souhaiterais que mes onglets se renomment automatiquement en fonction des données (dates) inscrites dans une plage de cellule.

Dans mon classeur, j'ai créé une feuille (données), dans laquelle sont inscrites des dates dans la colonne A (1er au 31 janvier).

Et je voudrais savoir comment faire en sorte que mes 31 autres onglets prennent automatiquement comme nom, les uns à la suite des autres, les dates inscrites dans cette colonne.

Ainsi, je n'aurais qu'à modifier le premier jour du mois (ex: 1er janvier en 1er février) pour que tous mes onglets en prennent automatiquement comme nom les jours d'un autre mois.

J'avais trouvé (désolée je ne me souviens plus où) un début de réponse grâce à :

Sub RenommerFeuille()

Dim i As Integer

i = 1

Dim NombreFeuilles As Integer

NombreFeuilles = Worksheets.Count

While i <= NombreFeuilles

Sheets(i).Name = Replace(Sheets(i).Range("A1").Value, "/", "")

i = i + 1

Wend

End Sub

qui me permet de donner le nom de la première cellule à l'onglet actif et cela, même s'il s'agit de date, mais je n'arrive pas (et ne sais pas) comment l'adapter à mon problème.

J'espère avoir été claire dans mes explications. Si ce n'est pas le cas, je joins mon classeur.

Merci.

13stock-boissons.xlsx (275.25 Ko)

Bonjour

A tester

Bonjour,

Sub AddShs()
Dim i%
Application.ScreenUpdating = False
  With ThisWorkbook
    For i = 3 To Me.Range("A" & Rows.Count).End(xlUp).Row
      .Sheets(2).Copy After:=.Sheets(.Sheets.Count)
      .Sheets(.Sheets.Count).Name = Format(Me.Range("A" & i), "dd-mmm")
    Next i
  End With
End Sub

A mettre dans le module de la feuille données.

Prend comme modèle la seconde feuille.

Cdt,

Darzou

Merci beaucoup, c'est exactement ce que je cherchais ^^.

À tout hasard, vous ne seriez pas comment faire pour écrire une formule du style : ="Feuille active - 1"!H4 ?

Toujours dans mon classeur, à partir de l'onglet "02 janv.", j'ai inscris dans la colonne B sous SI (Stock Initial) la formule :

='01 janv.'!H4

qui reprend donc les données inscrites sous SF (Stock Final)

Seulement, cette formule, il faut la ré-écrire pour chaque jour avec la feuille d'avant.

Je me demandais par conséquent si on pouvait automatiser le calcul.

Encore merci .

Bonjour

Clo'n'Co a écrit :

Merci beaucoup, c'est exactement ce que je cherchais ^^.

Tu as 2 solutions différentes et tu ne dis pas laquelle tu voulais

Sinon en renommant les feuilles les formules s'adaptent automatiquement (un avantage des formules Excel par rapport au VBA)

Option Explicit

Sub AddShs()
Dim i%, j%
  Application.ScreenUpdating = False
  With ThisWorkbook
    For i = 3 To Me.Range("A" & Rows.Count).End(xlUp).Row
      .Sheets(2).Copy After:=.Sheets(.Sheets.Count)
      .Sheets(i).Name = Format(Me.Range("A" & i), "dd-mmm")
      For j = 4 To 28
        .Sheets(i).Range("B" & j).Formula = "='" & .Sheets(i - 1).Name & "'!H" & j
      Next j
    Next i
  End With
End Sub

Cdt,

Dazou

Désolé, le temps de répondre, je n'avais pas vu la deuxième réponse.

Banzai64, la tienne fonctionne parfaitement. Merci.

Banzai64 a écrit :

Sinon en renommant les feuilles les formules s'adaptent automatiquement (un avantage des formules Excel par rapport au VBA)

Je sais, cependant je me suis un peu embêtée pour le faire et je me demandais, par conséquent, s'il était possible de faire autrement que de reprendre la formule feuille par feuille.

Darzou, je viens d'essayer ta solution, mais quand j'essaie de l'exécuter, ça me met un message d'erreur ("Erreur de compilation : Utilisation incorrecte du mot clé Me"). Étant débutante, je dois avouer que je ne comprends pas tout je dois donc certainement faire une erreur.

Bonjour

Clo'n'Co a écrit :

je me suis un peu embêtée pour le faire et je me demandais, par conséquent, s'il était possible de faire autrement que de reprendre la formule feuille par feuille.

Tu n'as rien à faire

Les formules s'adaptent aux nouveaux noms des feuilles

Banzai64, je n'ai pas l'impression que l'on se soit compris, donc, je me ré-explique :

Dans le classeur, que j'ai posté, j'ai dû ré-écrire la formule sur toute les pages (sauf les deux premières).

Je sais que si l'on modifie le nom de l'onglet sur laquelle elle porte, la formule se ré-ajuste d'elle-même.

Cependant, je voudrais savoir si on peut faire autrement que manuellement ; car, si je suis amenée à re-faire un classeur dans le même genre mais avec un tableau différents, je souhaiterais trouver un moyen pour aller plus vite, et donc trouver un formule, ou autre, qui permette de dire au logiciel d'aller chercher les donnée dans une colonne (ex:H) de la feuille précédente (ex : 01 janv) et de la ré-inscrire dans une autre colonne (ex:B) de la feuille (ex : 02 janv) et ce, pour toute les feuilles du classeur pour lesquels c'est nécessaire.

Merci

Tant pis, merci quand même Banzai64, tu m'as déjà bien aidé ^^.

Rechercher des sujets similaires à "onglets renommes donnees plage"