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.
Je ne comprends pas la forme : [a1] = "Liste des onglets de ce classeur"
[a1]= l'équivalant de Range("a1") Dans ce cas, l'écriture de "Liste des onglets de ce classeur" dans la cellule A1, puisque celle-ci est effacer par [a:a] = "" à chaque fois que la liste des feuilles est demandé.
x = 2 x=la ligne d'écriture dans la boucle, incrémenté par x=x+1
1er écriture x=2 nom de la première feuille en ligne 2 par Range("a" & x) = sh.Name puis x=x+1 2ème écriture en ligne x , donc 3 etc... ----------
mes mois s'affichent sous différentes formes Pour éviter ce problème, on peut forcé le format (texte) de la colonne A
par: [a:a].NumberFormat = "@" '---------- Ce qui modifie le code proposé de cette façon: '--------- Sub jj2() [a:a] = "" '****efface colonne A [a:a].NumberFormat = "@" '****Format colonne A en texte Dim sh As Worksheet '****declare la variable sh comme feuille [a1] = "Liste des onglets de ce classeur" '****ecrit dans la cellule A1 x = 2 For Each sh In ThisWorkbook.Sheets '****Début de la boucle If sh.Name <> ActiveSheet.Name Then '**** évite l'inscription de la feuille en cours Range("a" & x) = sh.Name '****Ecrit le nom de la feuille dans la cellule Ax x = x + 1 '****Incrément la ligne d'écriture End If Next End Sub '---------- Salutations JJ
"j-pascal" a écrit dans le message de news:
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
Re.. Avec retard
Je ne comprends pas la forme :
[a1] = "Liste des onglets de ce classeur"
[a1]= l'équivalant de Range("a1")
Dans ce cas, l'écriture de "Liste des onglets de ce classeur" dans la
cellule A1, puisque celle-ci est effacer par [a:a] = "" à chaque fois que la
liste des feuilles est demandé.
x = 2
x=la ligne d'écriture dans la boucle, incrémenté par x=x+1
1er écriture x=2 nom de la première feuille en ligne 2 par Range("a" & x)
= sh.Name
puis x=x+1
2ème écriture en ligne x , donc 3
etc...
----------
mes mois s'affichent sous différentes formes
Pour éviter ce problème, on peut forcé le format (texte) de la colonne A
par:
[a:a].NumberFormat = "@"
'----------
Ce qui modifie le code proposé de cette façon:
'---------
Sub jj2()
[a:a] = "" '****efface colonne A
[a:a].NumberFormat = "@" '****Format colonne A en texte
Dim sh As Worksheet '****declare la variable sh comme feuille
[a1] = "Liste des onglets de ce classeur" '****ecrit dans la cellule A1
x = 2
For Each sh In ThisWorkbook.Sheets '****Début de la boucle
If sh.Name <> ActiveSheet.Name Then '**** évite l'inscription de la
feuille en cours
Range("a" & x) = sh.Name '****Ecrit le nom de la feuille dans la cellule
Ax
x = x + 1 '****Incrément la ligne d'écriture
End If
Next
End Sub
'----------
Salutations
JJ
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:OkZ4Y6UcGHA.3900@TK2MSFTNGP05.phx.gbl...
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" <nospam-j-pascal@free.fr> a écrit dans le message de
news:eAgHOYNcGHA.4312@TK2MSFTNGP05.phx.gbl...
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.
Je ne comprends pas la forme : [a1] = "Liste des onglets de ce classeur"
[a1]= l'équivalant de Range("a1") Dans ce cas, l'écriture de "Liste des onglets de ce classeur" dans la cellule A1, puisque celle-ci est effacer par [a:a] = "" à chaque fois que la liste des feuilles est demandé.
x = 2 x=la ligne d'écriture dans la boucle, incrémenté par x=x+1
1er écriture x=2 nom de la première feuille en ligne 2 par Range("a" & x) = sh.Name puis x=x+1 2ème écriture en ligne x , donc 3 etc... ----------
mes mois s'affichent sous différentes formes Pour éviter ce problème, on peut forcé le format (texte) de la colonne A
par: [a:a].NumberFormat = "@" '---------- Ce qui modifie le code proposé de cette façon: '--------- Sub jj2() [a:a] = "" '****efface colonne A [a:a].NumberFormat = "@" '****Format colonne A en texte Dim sh As Worksheet '****declare la variable sh comme feuille [a1] = "Liste des onglets de ce classeur" '****ecrit dans la cellule A1 x = 2 For Each sh In ThisWorkbook.Sheets '****Début de la boucle If sh.Name <> ActiveSheet.Name Then '**** évite l'inscription de la feuille en cours Range("a" & x) = sh.Name '****Ecrit le nom de la feuille dans la cellule Ax x = x + 1 '****Incrément la ligne d'écriture End If Next End Sub '---------- Salutations JJ
"j-pascal" a écrit dans le message de news:
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.