OVH Cloud OVH Cloud

macro - modif affichage onglets

11 réponses
Avatar
j-pascal
Bonjour à tous,

J'ai un classeur avec 14 onglets, dont les 12 premiers sont :

jan 06
fév 06
mar 06
avr 06
etc.

Est-il possible de faire une macro, qui à partir d'une nouvelle date dans
une cellule (de l'onglet n° 13 par ex.), modifierait tous les onglets comme
:

jan 07
fév 07
mars 07
etc.

?

Question 2 : comment fait-on pour avoir une liste de tous les noms d'onglets
? Dans l'onglet 13, puis-je avoir une liste qui m'affiche :
Feuille 1 : jan 06
Feuille 2 : fév 06
Feuille 3 : mar 06
etc.

?

Un grand merci d'avance à ceux qui veulent bien m'aider.

JP

10 réponses

1 2
Avatar
Jacky
Bonjour,
Regarde ici, si cela convient
http://cjoint.com/?fgjCQdxwB7

'--------
Sub jj()
Anne_en_cours = InputBox("Entrez les deux derniers chiffres des fichiers en
cours:", "Changement de nom des feuilles")
If Anne_en_cours = "" Then Exit Sub
an = InputBox("Entrez l'année souhaitée:", "Changement de nom des feuilles")
If an = "" Then Exit Sub
Dim sh As Worksheet
For Each sh In ThisWorkbook.Sheets
If Right(sh.Name, 2) = Anne_en_cours Then
sh.Name = Mid(sh.Name, 1, Len(sh.Name) - 2) & an
End If
Next
End Sub
Sub jj2()
[a:a] = ""
Dim sh As Worksheet
[a1] = "Liste des onglets de ce classeur"
x = 2
For Each sh In ThisWorkbook.Sheets
If sh.Name <> ActiveSheet.Name Then
Range("a" & x) = sh.Name
x = x + 1
End If
Next
End Sub
'----------
Salutations
JJ

"j-pascal" a écrit dans le message de
news:
Bonjour à tous,

J'ai un classeur avec 14 onglets, dont les 12 premiers sont :

jan 06
fév 06
mar 06
avr 06
etc.

Est-il possible de faire une macro, qui à partir d'une nouvelle date dans
une cellule (de l'onglet n° 13 par ex.), modifierait tous les onglets
comme

:

jan 07
fév 07
mars 07
etc.

?

Question 2 : comment fait-on pour avoir une liste de tous les noms
d'onglets

? Dans l'onglet 13, puis-je avoir une liste qui m'affiche :
Feuille 1 : jan 06
Feuille 2 : fév 06
Feuille 3 : mar 06
etc.

?

Un grand merci d'avance à ceux qui veulent bien m'aider.

JP



Avatar
docm
Bonjour j-pascal.

Sub Question2()
'Créer d'abord la feuille sommaire
FeuilleSommaire = "Feuil1"
ligne = 2
For Each c In Worksheets
If c.Name <> "Feuil1" Then
Worksheets("Feuil1").Cells(ligne, 1) = "Feuille " & c.Index
Worksheets("Feuil1").Cells(ligne, 2).NumberFormat = "@"
Worksheets("Feuil1").Cells(ligne, 2) = c.Name
ligne = ligne + 1
End If
Next
End Sub

Sub Question1()
'Changer ensuite le nom des feuilles dont le nom apparait dans la liste sur
la feuille "Sommaire"
FeuilleSommaire = "Feuil1"
'La nouvelle date se trouve en "D1" ; par exemple: 08
NouvelleAnnée = Worksheets(FeuilleSommaire).Range("D1")
Longueur = Len(NouvelleAnnée)

For ligne = 2 To 13
NomActuel = Worksheets(FeuilleSommaire).Cells(ligne, 2)
If NomActuel <> "" Then
NouveauNom = Mid(NomActuel, 1, Len(NomActuel) - Longueur) & NouvelleAnnée
Sheets(NomActuel).Name = NouveauNom
Worksheets(FeuilleSommaire).Cells(ligne, 2) = NouveauNom
End If
Next
End Sub

Amicalement

docm

"j-pascal" wrote in message
news:
Bonjour à tous,

J'ai un classeur avec 14 onglets, dont les 12 premiers sont :

jan 06
fév 06
mar 06
avr 06
etc.

Est-il possible de faire une macro, qui à partir d'une nouvelle date dans
une cellule (de l'onglet n° 13 par ex.), modifierait tous les onglets
comme

:

jan 07
fév 07
mars 07
etc.

?

Question 2 : comment fait-on pour avoir une liste de tous les noms
d'onglets

? Dans l'onglet 13, puis-je avoir une liste qui m'affiche :
Feuille 1 : jan 06
Feuille 2 : fév 06
Feuille 3 : mar 06
etc.

?

Un grand merci d'avance à ceux qui veulent bien m'aider.

JP



Avatar
RV
Bonjour,
Voilà ce je propose comme code:

Sub test()
i = ActiveSheet.Index
For x = 1 To 12
j = Len(Sheets(x + 1).Name)
Sheets(x + 1).Name = Mid(Sheets(x + 1).Name, 1, j - 1) &
Right(Sheets(i).Cells(1, 1).Value, 1)
Next
End Sub

A adapter suivant besoin, la seule obligation est que la date soit sur la
1ère feuille (les autres sont les mois) et qu'au moment de la procédure, la
feuille 1 soit sélectionnée.
La date est en cells(1,1) mais peut être mise ailleurs
Bon courage
RV


"j-pascal" a écrit dans le message de news:

Bonjour à tous,

J'ai un classeur avec 14 onglets, dont les 12 premiers sont :

jan 06
fév 06
mar 06
avr 06
etc.

Est-il possible de faire une macro, qui à partir d'une nouvelle date dans
une cellule (de l'onglet n° 13 par ex.), modifierait tous les onglets
comme :

jan 07
fév 07
mars 07
etc.

?

Question 2 : comment fait-on pour avoir une liste de tous les noms
d'onglets ? Dans l'onglet 13, puis-je avoir une liste qui m'affiche :
Feuille 1 : jan 06
Feuille 2 : fév 06
Feuille 3 : mar 06
etc.

?

Un grand merci d'avance à ceux qui veulent bien m'aider.

JP


Avatar
j-pascal
Bonsoir docm,

Merci, ça marche (presque) parfaitement...

Dans Sub question1 :

Si en D1, j'entre 08, la macro va me renvoyer : jan 8, fév 8, etc
Si je relance, ça donne : jan8, fév8, etc
Si je relance, ça donne : ja8, fé8, etc... (les espaces sont de plus en plus
limités !)

A tout hazard, j'ai modifié le format de D1 en "personnalisé 00", mais ça ne
change rien.
A part ce petit pb, ta macro est parfaite !
Travaillant avec "Option Explicit", j'ai dû définir les variables mais je ne
suis pas sûr du bon choix !

Dim FeuilleSommaire As String
Dim Ligne As Integer
Dim c As Variant
Dim NouvelleAnnée As Integer
Dim Longueur As Integer
Dim NomActuel As String
Dim NouveauNom As String

Merci bcp et peut-être à bientôt ?

JP
Bonjour j-pascal.

Sub Question2()
'Créer d'abord la feuille sommaire
FeuilleSommaire = "Feuil1"
ligne = 2
For Each c In Worksheets
If c.Name <> "Feuil1" Then
Worksheets("Feuil1").Cells(ligne, 1) = "Feuille " & c.Index
Worksheets("Feuil1").Cells(ligne, 2).NumberFormat = "@"
Worksheets("Feuil1").Cells(ligne, 2) = c.Name
ligne = ligne + 1
End If
Next
End Sub

Sub Question1()
'Changer ensuite le nom des feuilles dont le nom apparait dans la
liste sur la feuille "Sommaire"
FeuilleSommaire = "Feuil1"
'La nouvelle date se trouve en "D1" ; par exemple: 08
NouvelleAnnée = Worksheets(FeuilleSommaire).Range("D1")
Longueur = Len(NouvelleAnnée)

For ligne = 2 To 13
NomActuel = Worksheets(FeuilleSommaire).Cells(ligne, 2)
If NomActuel <> "" Then
NouveauNom = Mid(NomActuel, 1, Len(NomActuel) - Longueur) &
NouvelleAnnée Sheets(NomActuel).Name = NouveauNom
Worksheets(FeuilleSommaire).Cells(ligne, 2) = NouveauNom
End If
Next
End Sub

Amicalement

docm

"j-pascal" wrote in message
news:
Bonjour à tous,

J'ai un classeur avec 14 onglets, dont les 12 premiers sont :

jan 06
fév 06
mar 06
avr 06
etc.

Est-il possible de faire une macro, qui à partir d'une nouvelle date
dans une cellule (de l'onglet n° 13 par ex.), modifierait tous les
onglets comme



jan 07
fév 07
mars 07
etc.

?

Question 2 : comment fait-on pour avoir une liste de tous les noms
d'onglets ? Dans l'onglet 13, puis-je avoir une liste qui m'affiche :
Feuille 1 : jan 06
Feuille 2 : fév 06
Feuille 3 : mar 06
etc.

?

Un grand merci d'avance à ceux qui veulent bien m'aider.

JP





Avatar
docm
Je ne rencontre pas ce problème. Pourrais-tu publier une copie exacte du
code que tu utilises ?

docm

"j-pascal" wrote in message
news:
Bonsoir docm,

Merci, ça marche (presque) parfaitement...

Dans Sub question1 :

Si en D1, j'entre 08, la macro va me renvoyer : jan 8, fév 8, etc
Si je relance, ça donne : jan8, fév8, etc
Si je relance, ça donne : ja8, fé8, etc... (les espaces sont de plus en
plus

limités !)

A tout hazard, j'ai modifié le format de D1 en "personnalisé 00", mais ça
ne

change rien.
A part ce petit pb, ta macro est parfaite !
Travaillant avec "Option Explicit", j'ai dû définir les variables mais je
ne

suis pas sûr du bon choix !

Dim FeuilleSommaire As String
Dim Ligne As Integer
Dim c As Variant
Dim NouvelleAnnée As Integer
Dim Longueur As Integer
Dim NomActuel As String
Dim NouveauNom As String

Merci bcp et peut-être à bientôt ?

JP
Bonjour j-pascal.

Sub Question2()
'Créer d'abord la feuille sommaire
FeuilleSommaire = "Feuil1"
ligne = 2
For Each c In Worksheets
If c.Name <> "Feuil1" Then
Worksheets("Feuil1").Cells(ligne, 1) = "Feuille " & c.Index
Worksheets("Feuil1").Cells(ligne, 2).NumberFormat = "@"
Worksheets("Feuil1").Cells(ligne, 2) = c.Name
ligne = ligne + 1
End If
Next
End Sub

Sub Question1()
'Changer ensuite le nom des feuilles dont le nom apparait dans la
liste sur la feuille "Sommaire"
FeuilleSommaire = "Feuil1"
'La nouvelle date se trouve en "D1" ; par exemple: 08
NouvelleAnnée = Worksheets(FeuilleSommaire).Range("D1")
Longueur = Len(NouvelleAnnée)

For ligne = 2 To 13
NomActuel = Worksheets(FeuilleSommaire).Cells(ligne, 2)
If NomActuel <> "" Then
NouveauNom = Mid(NomActuel, 1, Len(NomActuel) - Longueur) &
NouvelleAnnée Sheets(NomActuel).Name = NouveauNom
Worksheets(FeuilleSommaire).Cells(ligne, 2) = NouveauNom
End If
Next
End Sub

Amicalement

docm

"j-pascal" wrote in message
news:
Bonjour à tous,

J'ai un classeur avec 14 onglets, dont les 12 premiers sont :

jan 06
fév 06
mar 06
avr 06
etc.

Est-il possible de faire une macro, qui à partir d'une nouvelle date
dans une cellule (de l'onglet n° 13 par ex.), modifierait tous les
onglets comme



jan 07
fév 07
mars 07
etc.

?

Question 2 : comment fait-on pour avoir une liste de tous les noms
d'onglets ? Dans l'onglet 13, puis-je avoir une liste qui m'affiche :
Feuille 1 : jan 06
Feuille 2 : fév 06
Feuille 3 : mar 06
etc.

?

Un grand merci d'avance à ceux qui veulent bien m'aider.

JP








Avatar
j-pascal
Re ! (et merci pour cette réponse si rapide !)

Voici le code tel que je l'ai inscrit dans la macro :

Option Explicit
Dim FeuilleSommaire As String
Dim Ligne As Integer
Dim c As Variant
Dim NouvelleAnnée As Integer
Dim Longueur As Integer
Dim NomActuel As String
Dim NouveauNom As String
Sub ListeSommaire()
'Créer d'abord la feuille sommaire
FeuilleSommaire = "Feuil1"
Ligne = 2
For Each c In Worksheets
If c.Name <> "Feuil1" Then
Worksheets("Feuil1").Cells(Ligne, 1) = "Feuille " & c.Index
Worksheets("Feuil1").Cells(Ligne, 2).NumberFormat = "@"
Worksheets("Feuil1").Cells(Ligne, 2) = c.Name
Ligne = Ligne + 1
End If
Next
End Sub


Sub ModifDates()
'Changer ensuite le nom des feuilles dont le nom apparait dans la liste sur
la feuille "Sommaire"
FeuilleSommaire = "Feuil1"
'La nouvelle date se trouve en "D1" ; par exemple: 08
NouvelleAnnée = Worksheets(FeuilleSommaire).Range("D1")
Longueur = Len(NouvelleAnnée)

For Ligne = 2 To 13
NomActuel = Worksheets(FeuilleSommaire).Cells(Ligne, 2)
If NomActuel <> "" Then
NouveauNom = Mid(NomActuel, 1, Len(NomActuel) - Longueur) & NouvelleAnnée
Sheets(NomActuel).Name = NouveauNom
Worksheets(FeuilleSommaire).Cells(Ligne, 2) = NouveauNom
End If
Next
End Sub


docm wrote:
Je ne rencontre pas ce problème. Pourrais-tu publier une copie exacte
du code que tu utilises ?

docm

"j-pascal" wrote in message
news:
Bonsoir docm,

Merci, ça marche (presque) parfaitement...

Dans Sub question1 :

Si en D1, j'entre 08, la macro va me renvoyer : jan 8, fév 8, etc
Si je relance, ça donne : jan8, fév8, etc
Si je relance, ça donne : ja8, fé8, etc... (les espaces sont de plus
en plus limités !)

A tout hazard, j'ai modifié le format de D1 en "personnalisé 00",
mais ça ne change rien.
A part ce petit pb, ta macro est parfaite !
Travaillant avec "Option Explicit", j'ai dû définir les variables
mais je ne suis pas sûr du bon choix !

Dim FeuilleSommaire As String
Dim Ligne As Integer
Dim c As Variant
Dim NouvelleAnnée As Integer
Dim Longueur As Integer
Dim NomActuel As String
Dim NouveauNom As String

Merci bcp et peut-être à bientôt ?

JP
Bonjour j-pascal.

Sub Question2()
'Créer d'abord la feuille sommaire
FeuilleSommaire = "Feuil1"
ligne = 2
For Each c In Worksheets
If c.Name <> "Feuil1" Then
Worksheets("Feuil1").Cells(ligne, 1) = "Feuille " & c.Index
Worksheets("Feuil1").Cells(ligne, 2).NumberFormat = "@"
Worksheets("Feuil1").Cells(ligne, 2) = c.Name
ligne = ligne + 1
End If
Next
End Sub

Sub Question1()
'Changer ensuite le nom des feuilles dont le nom apparait dans la
liste sur la feuille "Sommaire"
FeuilleSommaire = "Feuil1"
'La nouvelle date se trouve en "D1" ; par exemple: 08
NouvelleAnnée = Worksheets(FeuilleSommaire).Range("D1")
Longueur = Len(NouvelleAnnée)

For ligne = 2 To 13
NomActuel = Worksheets(FeuilleSommaire).Cells(ligne, 2)
If NomActuel <> "" Then
NouveauNom = Mid(NomActuel, 1, Len(NomActuel) - Longueur) &
NouvelleAnnée Sheets(NomActuel).Name = NouveauNom
Worksheets(FeuilleSommaire).Cells(ligne, 2) = NouveauNom
End If
Next
End Sub

Amicalement

docm

"j-pascal" wrote in message
news:
Bonjour à tous,

J'ai un classeur avec 14 onglets, dont les 12 premiers sont :

jan 06
fév 06
mar 06
avr 06
etc.

Est-il possible de faire une macro, qui à partir d'une nouvelle
date dans une cellule (de l'onglet n° 13 par ex.), modifierait
tous les onglets comme



jan 07
fév 07
mars 07
etc.

?

Question 2 : comment fait-on pour avoir une liste de tous les noms
d'onglets ? Dans l'onglet 13, puis-je avoir une liste qui
m'affiche : Feuille 1 : jan 06
Feuille 2 : fév 06
Feuille 3 : mar 06
etc.

?

Un grand merci d'avance à ceux qui veulent bien m'aider.

JP









Avatar
docm
Désolé.
Ton problème vient de ta déclaration
Dim NouvelleAnnée As Integer
qu'il vaudrait mieux remplacer par
Dim NouvelleAnnée As String

Amicalement

docm

"j-pascal" wrote in message
news:
Bonsoir docm,

Merci, ça marche (presque) parfaitement...

Dans Sub question1 :

Si en D1, j'entre 08, la macro va me renvoyer : jan 8, fév 8, etc
Si je relance, ça donne : jan8, fév8, etc
Si je relance, ça donne : ja8, fé8, etc... (les espaces sont de plus en
plus

limités !)

A tout hazard, j'ai modifié le format de D1 en "personnalisé 00", mais ça
ne

change rien.
A part ce petit pb, ta macro est parfaite !
Travaillant avec "Option Explicit", j'ai dû définir les variables mais je
ne

suis pas sûr du bon choix !

Dim FeuilleSommaire As String
Dim Ligne As Integer
Dim c As Variant
Dim NouvelleAnnée As Integer
Dim Longueur As Integer
Dim NomActuel As String
Dim NouveauNom As String

Merci bcp et peut-être à bientôt ?

JP
Bonjour j-pascal.

Sub Question2()
'Créer d'abord la feuille sommaire
FeuilleSommaire = "Feuil1"
ligne = 2
For Each c In Worksheets
If c.Name <> "Feuil1" Then
Worksheets("Feuil1").Cells(ligne, 1) = "Feuille " & c.Index
Worksheets("Feuil1").Cells(ligne, 2).NumberFormat = "@"
Worksheets("Feuil1").Cells(ligne, 2) = c.Name
ligne = ligne + 1
End If
Next
End Sub

Sub Question1()
'Changer ensuite le nom des feuilles dont le nom apparait dans la
liste sur la feuille "Sommaire"
FeuilleSommaire = "Feuil1"
'La nouvelle date se trouve en "D1" ; par exemple: 08
NouvelleAnnée = Worksheets(FeuilleSommaire).Range("D1")
Longueur = Len(NouvelleAnnée)

For ligne = 2 To 13
NomActuel = Worksheets(FeuilleSommaire).Cells(ligne, 2)
If NomActuel <> "" Then
NouveauNom = Mid(NomActuel, 1, Len(NomActuel) - Longueur) &
NouvelleAnnée Sheets(NomActuel).Name = NouveauNom
Worksheets(FeuilleSommaire).Cells(ligne, 2) = NouveauNom
End If
Next
End Sub

Amicalement

docm

"j-pascal" wrote in message
news:
Bonjour à tous,

J'ai un classeur avec 14 onglets, dont les 12 premiers sont :

jan 06
fév 06
mar 06
avr 06
etc.

Est-il possible de faire une macro, qui à partir d'une nouvelle date
dans une cellule (de l'onglet n° 13 par ex.), modifierait tous les
onglets comme



jan 07
fév 07
mars 07
etc.

?

Question 2 : comment fait-on pour avoir une liste de tous les noms
d'onglets ? Dans l'onglet 13, puis-je avoir une liste qui m'affiche :
Feuille 1 : jan 06
Feuille 2 : fév 06
Feuille 3 : mar 06
etc.

?

Un grand merci d'avance à ceux qui veulent bien m'aider.

JP








Avatar
j-pascal
Bonsoir Jacky et merci pour ta réponse.

Ca marche (plutôt) très bien !
Je ne comprends pas la forme :

[a1] = "Liste des onglets de ce classeur"
x = 2

Est-ce cet entête qui conditionne la fait que le résultat s'affiche dans la
feuille qui comprend ce titre ? J'ai exécuté la macro une première fois sans
ce titre ; il s'est inscrit dans la feuille active, mais pour autant le
contenu des différentes feuilles ne s'est pas affiché en dessous ! Ma
question est probablement stupide, désolé !

Lorsque je crée une nouvelle feuille avec ce titre, tout va bien, sauf que
mes mois s'affichent sous différentes formes : janv 06, août 06, ou encore
1/11/06. Ca correspond à mon affichage initial "août 06" n'existe pas au
format excel donc il ne le convertit pas en 1/08/06 ce qui me donne soit du
format texte ou du format date... Le fait de changer le format de cette
colonne ne change évidemment rien ! Puis-je conserver le format de mes
onglets ?

A bientôt peut-être ?

JP


Bonjour,
Regarde ici, si cela convient
http://cjoint.com/?fgjCQdxwB7

'--------
Sub jj()
Anne_en_cours = InputBox("Entrez les deux derniers chiffres des
fichiers en cours:", "Changement de nom des feuilles")
If Anne_en_cours = "" Then Exit Sub
an = InputBox("Entrez l'année souhaitée:", "Changement de nom des
feuilles") If an = "" Then Exit Sub
Dim sh As Worksheet
For Each sh In ThisWorkbook.Sheets
If Right(sh.Name, 2) = Anne_en_cours Then
sh.Name = Mid(sh.Name, 1, Len(sh.Name) - 2) & an
End If
Next
End Sub
Sub jj2()
[a:a] = ""
Dim sh As Worksheet
[a1] = "Liste des onglets de ce classeur"
x = 2
For Each sh In ThisWorkbook.Sheets
If sh.Name <> ActiveSheet.Name Then
Range("a" & x) = sh.Name
x = x + 1
End If
Next
End Sub
'----------
Salutations
JJ

"j-pascal" a écrit dans le message de
news:
Bonjour à tous,

J'ai un classeur avec 14 onglets, dont les 12 premiers sont :

jan 06
fév 06
mar 06
avr 06
etc.

Est-il possible de faire une macro, qui à partir d'une nouvelle date
dans une cellule (de l'onglet n° 13 par ex.), modifierait tous les
onglets comme



jan 07
fév 07
mars 07
etc.

?

Question 2 : comment fait-on pour avoir une liste de tous les noms
d'onglets ? Dans l'onglet 13, puis-je avoir une liste qui m'affiche :
Feuille 1 : jan 06
Feuille 2 : fév 06
Feuille 3 : mar 06
etc.

?

Un grand merci d'avance à ceux qui veulent bien m'aider.

JP





Avatar
j-pascal
Bonsoir RV,

Je suis très impressionné par ton code. Je l'ai essayé en dernier et j'ai
été très surpris de voir à quel point il était efficace, même s'il n'est pas
question de sommaire, mais ce n'était pas le plus important dans le cas
présent ... Il ne me reste qu'à étudier de près les 3 réponses que vous
m'avez envoyées pour tenter d'en comprendre les subtilités !

Peux-tu me dire ce que signifie "MID" ? Si tu as d'autres explications sur
le présent code, je suis preneur ;-)

Merci et bon dimanche :o)

JP

Voilà ce je propose comme code:

Sub test()
i = ActiveSheet.Index
For x = 1 To 12
j = Len(Sheets(x + 1).Name)
Sheets(x + 1).Name = Mid(Sheets(x + 1).Name, 1, j - 1) &
Right(Sheets(i).Cells(1, 1).Value, 1)
Next
End Sub

A adapter suivant besoin, la seule obligation est que la date soit
sur la 1ère feuille (les autres sont les mois) et qu'au moment de la
procédure, la feuille 1 soit sélectionnée.
La date est en cells(1,1) mais peut être mise ailleurs
Bon courage
RV


"j-pascal" a écrit dans le message de news:

Bonjour à tous,

J'ai un classeur avec 14 onglets, dont les 12 premiers sont :

jan 06
fév 06
mar 06
avr 06
etc.

Est-il possible de faire une macro, qui à partir d'une nouvelle date
dans une cellule (de l'onglet n° 13 par ex.), modifierait tous les
onglets comme :

jan 07
fév 07
mars 07
etc.

?

Question 2 : comment fait-on pour avoir une liste de tous les noms
d'onglets ? Dans l'onglet 13, puis-je avoir une liste qui m'affiche :
Feuille 1 : jan 06
Feuille 2 : fév 06
Feuille 3 : mar 06
etc.

?

Un grand merci d'avance à ceux qui veulent bien m'aider.

JP




Avatar
j-pascal
Re, re !

Un grand MERCI ! C'est pour cette raison que je m'étais risqué à te demander
ton avis sur les déclarations de variables ;-)

Bon dimanche,

JP



Ton problème vient de ta déclaration
Dim NouvelleAnnée As Integer
qu'il vaudrait mieux remplacer par
Dim NouvelleAnnée As String

Amicalement

docm

"j-pascal" wrote in message
news:
Bonsoir docm,

Merci, ça marche (presque) parfaitement...

Dans Sub question1 :

Si en D1, j'entre 08, la macro va me renvoyer : jan 8, fév 8, etc
Si je relance, ça donne : jan8, fév8, etc
Si je relance, ça donne : ja8, fé8, etc... (les espaces sont de plus
en plus limités !)

A tout hazard, j'ai modifié le format de D1 en "personnalisé 00",
mais ça ne change rien.
A part ce petit pb, ta macro est parfaite !
Travaillant avec "Option Explicit", j'ai dû définir les variables
mais je ne suis pas sûr du bon choix !

Dim FeuilleSommaire As String
Dim Ligne As Integer
Dim c As Variant
Dim NouvelleAnnée As Integer
Dim Longueur As Integer
Dim NomActuel As String
Dim NouveauNom As String

Merci bcp et peut-être à bientôt ?

JP
Bonjour j-pascal.

Sub Question2()
'Créer d'abord la feuille sommaire
FeuilleSommaire = "Feuil1"
ligne = 2
For Each c In Worksheets
If c.Name <> "Feuil1" Then
Worksheets("Feuil1").Cells(ligne, 1) = "Feuille " & c.Index
Worksheets("Feuil1").Cells(ligne, 2).NumberFormat = "@"
Worksheets("Feuil1").Cells(ligne, 2) = c.Name
ligne = ligne + 1
End If
Next
End Sub

Sub Question1()
'Changer ensuite le nom des feuilles dont le nom apparait dans la
liste sur la feuille "Sommaire"
FeuilleSommaire = "Feuil1"
'La nouvelle date se trouve en "D1" ; par exemple: 08
NouvelleAnnée = Worksheets(FeuilleSommaire).Range("D1")
Longueur = Len(NouvelleAnnée)

For ligne = 2 To 13
NomActuel = Worksheets(FeuilleSommaire).Cells(ligne, 2)
If NomActuel <> "" Then
NouveauNom = Mid(NomActuel, 1, Len(NomActuel) - Longueur) &
NouvelleAnnée Sheets(NomActuel).Name = NouveauNom
Worksheets(FeuilleSommaire).Cells(ligne, 2) = NouveauNom
End If
Next
End Sub

Amicalement

docm

"j-pascal" wrote in message
news:
Bonjour à tous,

J'ai un classeur avec 14 onglets, dont les 12 premiers sont :

jan 06
fév 06
mar 06
avr 06
etc.

Est-il possible de faire une macro, qui à partir d'une nouvelle
date dans une cellule (de l'onglet n° 13 par ex.), modifierait
tous les onglets comme



jan 07
fév 07
mars 07
etc.

?

Question 2 : comment fait-on pour avoir une liste de tous les noms
d'onglets ? Dans l'onglet 13, puis-je avoir une liste qui
m'affiche : Feuille 1 : jan 06
Feuille 2 : fév 06
Feuille 3 : mar 06
etc.

?

Un grand merci d'avance à ceux qui veulent bien m'aider.

JP









1 2